"""Unit tests for json marshaling.

Note, this cannot live next to the file it tests, because that file is in
third_party bazel rules, and bazel doesn't support skylark testing yet.
"""

load("//third_party/bazel_skylib/lib:unittest.bzl", "asserts", "unittest")
load("//third_party/bazel_rules/rules_typescript/internal:common/json_marshal.bzl", "json_marshal")

def _test_impl(ctx):
    env = unittest.begin(ctx)
    asserts.equals(env, "\"abc\"", json_marshal("abc"))
    asserts.equals(env, "123", json_marshal(123))
    asserts.equals(env, "true", json_marshal(True))
    asserts.equals(env, "false", json_marshal(False))
    asserts.equals(env, "\"//a:b\"", json_marshal(Label("//a:b")))
    asserts.equals(env, "[]", json_marshal([]))
    asserts.equals(env, "{}", json_marshal({}))
    asserts.equals(env, """[1, 2, 3]""", json_marshal([1, 2, 3]))
    asserts.equals(env, """{"a": "b"}""", json_marshal({"a": "b"}))
    asserts.equals(env, """{"none": false}""", json_marshal({"none": None}))
    asserts.equals(
        env,
        """{"a": {"d": 1, "e": true, "f": ["f1", "f2"]}, "b": "val", "c": [{"g": false}]}""",
        json_marshal({"a": {"d": 1, "e": True, "f": ["f1", "f2"]}, "b": "val", "c": [{"g": False}]}),
    )

    return unittest.end(env)

_test = unittest.make(_test_impl)

def json_marshal_test_suite():
    unittest.suite("json_marshal_tests", _test)
