import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil


@skipIfWasm  # no expression evaluation
class TestCase(TestBase):
    def test(self):
        self.build()
        lldbutil.run_to_source_breakpoint(
            self, "// break here", lldb.SBFileSpec("main.cpp")
        )

        # Test non-type template parameter packs.
        self.expect_expr(
            "myC",
            result_type="C<int, 16, 32>",
            result_children=[
                ValueCheck(
                    name="C<int, 16>", children=[ValueCheck(name="member", value="64")]
                )
            ],
        )
        self.expect_expr("myLesserC.argsAre_16_32()", result_value="false")
        self.expect_expr("myC.argsAre_16_32()", result_value="true")

        # Test type template parameter packs.
        self.expect_expr(
            "myD",
            result_type="D<int, int, bool>",
            result_children=[
                ValueCheck(
                    name="D<int, int>", children=[ValueCheck(name="member", value="64")]
                )
            ],
        )
        self.expect_expr("myLesserD.argsAre_Int_bool()", result_value="false")
        self.expect_expr("myD.argsAre_Int_bool()", result_value="true")

        # Disabling until we do template lookup correctly: http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20180507/040689.html
        # FIXME: Rewrite this with expect_expr
        # self.expect("expression -- C<int, 16>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
        # self.expect("expression -- C<int, 16, 32>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])
        # self.expect("expression -- D<int, int>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
        # self.expect("expression -- D<int, int, bool>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])
