Exemplo n.º 1
0
class TestExample(TestCase):
    def setUp(self):
        self.stdout, self.stderr = StringIO(), StringIO()
        self.cycy = CyCy(stdout=self.stdout, stderr=self.stderr)

    @skip("Integration test, will work eventually")
    def test_it_works(self):
        self.cycy.interpret(
            [FilePath(__file__).sibling("example.c").getContent()],
        )
        self.assertEqual(self.stdout.getvalue(), "Hello, world!\n")

    def test_it_does_fibonacci(self):
        source = dedent("""\
        int fib(int x) {
            while (x <= 2) {
                return 1;
            }
            return fib(x - 1) + fib(x - 2);
        }
        int main(void) {
            return fib(5);
        }
        """)

        w_returned = self.cycy.interpret([source])
        self.assertEqual(w_returned, W_Int32(5))
Exemplo n.º 2
0
class TestParser(TestCase):
    def setUp(self):
        self.preprocessor = Preprocessor(includers=[FakeIncluder()])
        self.parser = Parser(preprocessor=self.preprocessor)
        self.cycy = CyCy(parser=self.parser)

    def test_include_statement(self):
        w_return = self.cycy.interpret([
            """
                #include "foo.h"

                int main(void) { return foo(); }
                """,
        ], )
        self.assertEqual(w_return, W_Int32(12))