mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 20:11:17 +00:00
54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
module json_test @test;
|
|
import std::collections::object;
|
|
import std::io;
|
|
import std::encoding::json;
|
|
|
|
fn void simple_test()
|
|
{
|
|
ByteReader reader;
|
|
reader.init(`{ "b": 123, "c": [ { "d": 66 }, null, "hello\tworld", false, { "id": "xyz" } ] }`);
|
|
Object* o = json::parse(mem, &reader)!!;
|
|
defer o.free();
|
|
assert(o.get_int("b")!! == 123);
|
|
assert(o.get("c").get_len()!! == 5);
|
|
assert(o.get("c").get_at(0).get_int("d")!! == 66);
|
|
assert(o.get("c").get_at(1).is_null()!!);
|
|
assert(o.get("c").get_string_at(2)!! == "hello\tworld");
|
|
assert(o.get("c").get_bool_at(3)!! == false);
|
|
assert(o.get("c").get_at(4).get_string("id")!! == "xyz");
|
|
}
|
|
|
|
fn void simple_test2()
|
|
{
|
|
ByteReader reader;
|
|
reader.init(`{"jsonrpc":"2.0","id":null,"method":"initialize"}`);
|
|
Object* o = json::parse(mem, &reader)!!;
|
|
defer o.free();
|
|
}
|
|
|
|
|
|
fn void test_string()
|
|
{
|
|
Object* o = json::parse_string(mem, `{"jsonrpc":"2","id":null,"method":"initialize"}`)!!;
|
|
defer o.free();
|
|
String s = string::tformat("%s", *o);
|
|
Object* o2 = json::parse_string(mem, s)!!;
|
|
defer o2.free();
|
|
String s2 = string::tformat("%s", *o2);
|
|
assert(s2 == s, "Unexpectedly got %s and not %s", s2, s);
|
|
}
|
|
|
|
fn void test_temp_string()
|
|
{
|
|
@pool()
|
|
{
|
|
Object* o = json::tparse_string(`{"jsonrpc":"2","id":null,"method":"initialize"}`)!!;
|
|
defer o.free();
|
|
String s = string::tformat("%s", *o);
|
|
Object* o2 = json::tparse_string(s)!!;
|
|
defer o2.free();
|
|
String s2 = string::tformat("%s", *o2);
|
|
assert(s2 == s, "Unexpectedly got %s and not %s", s2, s);
|
|
};
|
|
}
|