summaryrefslogtreecommitdiff
path: root/etc/todo/www.demiurgo.org/darcs/coderay/test/test_javascript_scanner.rb
blob: e1bfe70ce89d6f1c4139dfd49b06f695d26c8811 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
require 'test/unit'
require 'coderay'

class TC_Latex_Encoder < Test::Unit::TestCase
  def setup
    CodeRay::Encoders.plugin_path 'lib/coderay/encoders'
    @enc = CodeRay::Encoders[:latex].new
  end


  def test_simple
    source_text = <<EOD
function update_stars(num)
{
  for (var i = 0; i < 10; ++i) {
    var star = $("star"+(i+1));
    if (i < num) {
      if (! star.visible()) {
        Effect.Appear(star);
      }
    } else {
      if (star.visible()) {
        Effect.Fade(star);
      }
    }
  }
}
EOD
    expected = [["function", :reserved],[" ", :space],["update_stars", :ident],
                ["(", :operator], ["num", :ident], [")", :operator],
                ["\n", :space],
                ["{", :operator],
                ["\n  ", :space],
                ["for", :reserved], [" ", :space],
                  ["(", :operator], ["var", :reserved], [" ", :space],
                  ["i", :ident],[" ", :space], ["=", :operator], [" ", :space],
                  ["0", :integer],
                  [";", :operator],
                  [" ", :space], ["i", :ident], [" ", :space],
                  ["<", :operator], [" ", :space], ["10", :integer],
                  [";", :operator],
                  [" ", :space], ["++", :operator], ["i", :ident],
                  [")", :operator], [" ", :space], ["{", :operator],
                ["\n    ", :space],
                ["var", :reserved], [" ", :space], ["star", :ident],
                [" ", :space], ["=", :operator], [" ", :space],
                ["$", :ident], ["(", :operator],
                  [:open, :string], ["\"", :delimiter], ["star", :content],
                  ["\"", :delimiter], [:close, :string],
                  ["+", :operator],
                  ["(", :operator], ["i", :ident], ["+", :operator],
                  ["1", :integer], [")", :operator],
                [")", :operator],
                [";", :operator],
                ["\n    ", :space],
                ["if", :reserved], [" ", :space],
                  ["(", :operator], ["i", :ident], [" ", :space],
                  ["<", :operator], [" ", :space], ["num", :ident],
                  [")", :operator], [" ", :space], ["{", :operator],
                ["\n      ", :space],
                ["if", :reserved], [" ", :space],
                  ["(", :operator], ["!", :operator], [" ", :space],
                  ["star", :ident], [".", :operator], ["visible", :ident],
                  ["(", :operator], [")", :operator], [")", :operator],
                [" ", :space],
                ["{", :operator],
                ["\n        ", :space],
                ["Effect", :ident], [".", :operator], ["Appear", :ident],
                  ["(", :operator], ["star", :ident], [")", :operator],
                  [";", :operator], ["\n      ", :space],
                ["}", :operator],
                ["\n    ", :space],
                ["}", :operator],
                [" ", :space], ["else", :reserved], [" ", :space],
                ["{", :operator],
                ["\n      ", :space],
                ["if", :reserved], [" ", :space],
                  ["(", :operator], ["star", :ident], [".", :operator],
                  ["visible", :ident], ["(", :operator], [")", :operator],
                  [")", :operator],
                [" ", :space],
                ["{", :operator],
                ["\n        ", :space],
                ["Effect", :ident], [".", :operator], ["Fade", :ident],
                  ["(", :operator], ["star", :ident], [")", :operator],
                  [";", :operator],
                ["\n      ", :space],
                ["}", :operator],
                ["\n    ", :space],
                ["}", :operator],
                ["\n  ", :space],
                ["}", :operator],
                ["\n", :space],
                ["}", :operator],
                ["\n", :space]]
    symbol_list = CodeRay.scan(source_text, :javascript)
    assert_equal(expected, symbol_list)
  end


  def teardown
    @enc = nil
  end
end