def test_nextvalue
str = "false"
lex = JSON::Lexer.new(str)
assert(lex.nextvalue == false, "error parsing false");
str = "true"
lex = JSON::Lexer.new(str)
assert(lex.nextvalue == true, "error parsing true");
str = "31337"
lex = JSON::Lexer.new(str)
assert(lex.nextvalue == 31337, "error parsing integer");
str = "0.577289"
lex = JSON::Lexer.new(str)
assert(lex.nextvalue == 0.577289, "error parsing float")
str = "\"123\n\""
lex = JSON::Lexer.new(str)
assert(lex.nextvalue == "123\n", "error parsing string")
str = "null"
lex = JSON::Lexer.new(str)
assert(lex.nextvalue.nil?, "error parsing null")
str = "[ 1, \"abc\", 2.7182818 ]"
lex = JSON::Lexer.new(str)
array = lex.nextvalue
assert(array[0] == 1, "error parsing an array (0th elem)")
assert(array[1] == "abc", "error parsing an array (1st elem)")
assert(array[2] = 2.7182818, "error parsing an array (2nd elem)")
str = '{"foo":"bar", "xyz":1, "e":2.7182818}'
lex = JSON::Lexer.new(str)
obj = lex.nextvalue
assert(obj["foo"] == "bar", "error parsing an object ('foo' elem)")
assert(obj["xyz"] == 1, "error parsing an object ('xyz' elem)")
assert(obj["e"] == 2.7182818, "error parsing an object ('e' elem)")
str = "false"
lex = JSON::Lexer.new(str)
assert(lex.nextvalue == false, "error parsing false");
end