mirror of
https://github.com/jashkenas/coffeescript.git
synced 2022-11-09 12:23:24 -05:00
50 lines
1.5 KiB
Ruby
50 lines
1.5 KiB
Ruby
require 'test_helper'
|
|
|
|
class LexerTest < Test::Unit::TestCase
|
|
|
|
def setup
|
|
@lex = Lexer.new
|
|
end
|
|
|
|
def test_lexing_an_empty_string
|
|
assert @lex.tokenize("") == []
|
|
end
|
|
|
|
def test_lexing_basic_assignment
|
|
code = "a: 'one'; b: [1, 2]"
|
|
assert @lex.tokenize(code) == [[:IDENTIFIER, "a"], [":", ":"],
|
|
[:STRING, "'one'"], [";", ";"], [:IDENTIFIER, "b"], [":", ":"],
|
|
["[", "["], [:NUMBER, "1"], [",", ","], [:NUMBER, "2"], ["]", "]"]]
|
|
end
|
|
|
|
def test_lexing_object_literal
|
|
code = "{one : 1}"
|
|
assert @lex.tokenize(code) == [["{", "{"], [:IDENTIFIER, "one"], [":", ":"],
|
|
[:NUMBER, "1"], ["}", "}"]]
|
|
end
|
|
|
|
def test_lexing_function_definition
|
|
code = "x, y => x * y."
|
|
assert @lex.tokenize(code) == [[:PARAM, "x"], [",", ","], [:PARAM, "y"],
|
|
["=>", "=>"], [:IDENTIFIER, "x"], ["*", "*"], [:IDENTIFIER, "y"], [".", "."]]
|
|
end
|
|
|
|
def test_lexing_if_statement
|
|
code = "clap_your_hands() if happy"
|
|
assert @lex.tokenize(code) == [[:IDENTIFIER, "clap_your_hands"], ["(", "("],
|
|
[")", ")"], [:IF, "if"], [:IDENTIFIER, "happy"]]
|
|
end
|
|
|
|
def test_lexing_comment
|
|
code = "a: 1\n # comment\n # on two lines\nb: 2"
|
|
assert @lex.tokenize(code) == [[:IDENTIFIER, "a"], [":", ":"], [:NUMBER, "1"],
|
|
["\n", "\n"], [:COMMENT, [" comment", " on two lines"]], ["\n", "\n"],
|
|
[:IDENTIFIER, "b"], [":", ":"], [:NUMBER, "2"]]
|
|
end
|
|
|
|
def test_lexing
|
|
tokens = @lex.tokenize(File.read('test/fixtures/each.cs'))
|
|
assert tokens.inspect == File.read('test/fixtures/each.tokens')
|
|
end
|
|
|
|
end
|