require 'bitclust/syntax_highlighter'
class TestSyntaxHighlighter < Test::Unit::TestCase
def highlight(src, filename = "-")
BitClust::SyntaxHighlighter.new(src, filename).highlight
end
sub_test_case "syntax error" do
test "single line" do
src = "...\n"
assert_raise(BitClust::SyntaxHighlighter::ParseError.new("-", 1, 3, "syntax error, unexpected ...")) do
highlight(src)
end
end
test "multiple line" do
src = "a = 1\n...\n"
assert_raise(BitClust::SyntaxHighlighter::ParseError.new("-", 2, 3, "syntax error, unexpected ..., expecting end-of-input")) do
highlight(src)
end
end
end
sub_test_case "__END__" do
test "extra data" do
source = <<~END
require "csv"
csv = CSV.new(DATA.read)
csv.read
# => [["header1", "header2"], ["row1_1", "row1_2"], ["row2_1", "row2_2"]]
__END__
header1,header2
row1_1,row1_2
row2_1,row2_2
END
expected = <<~END.chomp
require "csv"
csv = CSV.new(DATA.read)
csv.read
# => [["header1", "header2"], ["row1_1", "row1_2"], ["row2_1", "row2_2"]]
__END__
header1,header2
row1_1,row1_2
row2_1,row2_2
END
assert_equal(expected, highlight(source))
end
test "without extra data" do
source = <<~END
require "csv"
csv = CSV.new(DATA.read)
csv.read
# => [["header1", "header2"], ["row1_1", "row1_2"], ["row2_1", "row2_2"]]
END
expected = <<~END.chomp
require "csv"
csv = CSV.new(DATA.read)
csv.read
# => [["header1", "header2"], ["row1_1", "row1_2"], ["row2_1", "row2_2"]]
END
assert_equal(expected, highlight(source))
end
end
end