load("//testdata/misc/support/test_pb.star", "testproto")

def test_output_builder():
    cs = __native__.new_output_builder()
    assert.eq(type(cs), "output")

    # Setters work.
    cs["hello"] = "world"
    cs["proto"] = testproto.Msg(i = 123)
    assert.eq(cs["hello"], "world")
    assert.eq(cs["proto"].i, 123)

    # Only string keys are allowed.
    def try_set():
        cs[1] = "..."

    assert.fails(try_set, "should be a string, not int")

    # Only string or proto values are allowed.
    def try_set():
        cs["1"] = 1

    assert.fails(try_set, "should be either a string or a proto message, not int")

def test_config_generators():
    def gen1(ctx):
        ctx.output["hello"] = "world"

    lucicfg.generator(impl = gen1)

    def gen2(ctx):
        assert.eq(ctx.output["hello"], "world")
        ctx.output["hello"] = "nope"

    lucicfg.generator(impl = gen2)

    ctx = __native__.new_gen_ctx()
    __native__.call_generators(ctx)
    assert.eq(ctx.output["hello"], "nope")

def with_clean_state(cb):
    __native__.clear_state()
    cb()
    __native__.clear_state()

with_clean_state(test_output_builder)
with_clean_state(test_config_generators)
