2015-03-06 12:22:11 +13:00
|
|
|
defmodule AcceptanceTest do
|
2015-03-06 11:22:23 +13:00
|
|
|
import TestHelpers
|
|
|
|
use ExUnit.Case, async: true
|
|
|
|
|
|
|
|
@tests [
|
|
|
|
{ "''", generate_token(:simple_string, "") },
|
|
|
|
{ "'hello'", generate_token(:simple_string, "hello") },
|
|
|
|
{ "\"\"", generate_token(:string, "") },
|
|
|
|
{ "\"hello\"", generate_token(:string, "hello") },
|
|
|
|
{ "0", generate_token(:integer, 0) },
|
|
|
|
{ "123", generate_token(:integer, 123) },
|
|
|
|
{ "0x123", generate_token(:integer, 291) },
|
|
|
|
{ "0b1011", generate_token(:integer, 11) },
|
|
|
|
{ "0.0", generate_token(:float, 0.0) },
|
|
|
|
{ "123.456", generate_token(:float, 123.456) }
|
|
|
|
]
|
|
|
|
|
|
|
|
Enum.each @tests, fn
|
|
|
|
{ source, token } ->
|
|
|
|
tname = Map.get token, :name
|
|
|
|
tvalue = Map.get token, :value
|
|
|
|
|
|
|
|
test "String #{inspect(source)} results in token #{inspect(token)}" do
|
2015-03-06 12:22:11 +13:00
|
|
|
result = ExampleLexer.lex unquote(source)
|
|
|
|
{ok, result} = result
|
|
|
|
assert ok == :ok
|
|
|
|
|
|
|
|
result = Enum.at(result, 0)
|
2015-03-06 11:22:23 +13:00
|
|
|
|
|
|
|
rname = Map.get result, :name
|
|
|
|
rvalue = Map.get result, :value
|
|
|
|
assert rname == unquote(tname)
|
|
|
|
assert rvalue == unquote(tvalue)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|