/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
 */
package magic.tests

import magic.dsl.*
import magic.dsl.*
import magic.prelude.*
import std.unittest.testmacro.PowerAssert
import std.unittest.testmacro.PowerAssert

@agent[executor:"naive", model: "${CHAT_MODEL}"]
class Bar {
}

@jsonable
class A <: ToString {
    @field["Year of the foundation"]
    let year: Int64
    let month: Int64
    let date: Int64
    let time: String

    public func toString(): String {
        return "Y: ${year}\nM: ${month}\nD: ${date}\nT:${time}"
    }
}

@Test
class TestDialog {
    @TestCase
    func test1() {
        @dialog[agent: Bar()](
            "微软创建时间" -> time1: A
            @Assert(time1.year, 1975)

            "华为创建时间" -> time2: A
            @Assert(time2.year, 1987)

            "两个公司哪一个创建的更早,回答微软或者华为" -> result
            @Assert(result.contains("微软"))
        )
    }
}