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

class TestCase(TestBase):

    @no_debug_info_test
    def test_dumping(self):
        """ Tests dumping an empty and non-empty scratch AST. """
        self.build()
        self.createTestTarget()

        # Make sure DummyStruct is not in the scratch AST by default.
        self.expect("target dump typesystem", matching=False, substrs=["struct DummyStruct"])

        # Move DummyStruct into the scratch AST via the expression evaluator.
        # FIXME: Once there is an SB API for using variable paths on globals
        # then this should be done this way.
        self.expect_expr("s", result_type="DummyStruct")

        # Dump the scratch AST and make sure DummyStruct is in there.
        self.expect("target dump typesystem", substrs=["struct DummyStruct"])

    @no_debug_info_test
    def test_invalid_arg(self):
        """ Test an invalid invocation on 'target dump typesystem'. """
        self.build()
        self.createTestTarget()
        self.expect("target dump typesystem arg", error=True,
                    substrs=["'target dump typesystem' doesn't take any arguments."])
