예제 #1
0
 def test_typedef(self):
     """run clang2py -k t test/data/test-basic-types.c"""
     p, output, stderr = clang2py(['-k', 't', 'test/data/test-basic-types.c'])
     self.assertEqual(0, p.returncode)
     self.assertIn("_char = ", output)
     self.assertIn("_short = ", output)
     self.assertIn("_uint = ", output)
예제 #2
0
 def test_structure(self):
     """run clang2py -k s test/data/test-records-complex.c"""
     p, output, stderr = clang2py(['-k', 's', 'test/data/test-records-complex.c'])
     self.assertEqual(0, p.returncode)
     self.assertIn("struct__complex6", output)
     self.assertIn("struct__complex6_0", output)
     self.assertIn("struct__complex6_1", output)
예제 #3
0
 def test_debug(self):
     """run clang2py --verbose test/data/test-records.c"""
     p, output, stderr = clang2py(['--verbose', 'test/data/test-records.c', '--debug'])
     self.assertEqual(0, p.returncode)
     self.assertIn("DEBUG:", stderr)
     self.assertNotIn("DEBUG:", output)
     self.assertIn("# Total symbols:", stderr)
예제 #4
0
 def test_helper(self):
     """run clang2py -h"""
     p, output, stderr = clang2py(['-h', 'test/data/test-includes.h'])
     self.assertEqual(0, p.returncode)
     self.assertIn("Cross-architecture:", output)
     self.assertIn("usage:", output)
     self.assertIn("optional arguments", output)
예제 #5
0
 def test_version(self):
     """run clang2py -V"""
     p, output, stderr = clang2py(['-V', 'XXXXX'])
     self.assertEqual(0, p.returncode)
     if sys.version_info[0] < 3:
         self.assertIn("clang2py version", stderr)
     else:
         self.assertIn("clang2py version", output)
예제 #6
0
 def test_include_without(self):
     """run clang2py test/data/test-includes.h"""
     p, output, stderr = clang2py(['test/data/test-includes.h'])
     self.assertEqual(0, p.returncode)
     # struct_Name is a dependency. Name2 is not.
     self.assertIn("struct_Name", output)
     self.assertIn("struct_Name3", output)
     self.assertNotIn("struct_Name2", output)
예제 #7
0
 def test_no_files(self):
     """run cat  test/data/test-includes.h | clang2py"""
     p, output, stderr = clang2py(['-o', '/dev/null'])
     self.assertEqual(p.returncode, 2)
     if sys.version_info[0] < 3:
         self.assertIn("error: too few arguments", stderr)  # py2
     else:
         self.assertIn("error: the following arguments are required", stderr)
예제 #8
0
 def test_include_with(self):
     """run clang2py -i test/data/test-includes.h"""
     p, output, stderr = clang2py(['-i', 'test/data/test-includes.h'])
     # print(output)
     # print(stderr)
     self.assertEqual(0, p.returncode)
     # struct_name are defined in another include file
     self.assertIn("struct_Name", output)
     self.assertIn("struct_Name2", output)
     self.assertIn("struct_Name3", output)
예제 #9
0
    def test_brute(self):
        """run 20 times clang2py to identify ordering differences"""
        outputs = []
        for i in range(20):
            p, output, stderr = clang2py(['./test/data/test-include-order2.h'])
            outputs.append(output)
            var = output.index("f = struct_foo_s")
            decl = output.index("class struct_foo_s(Structure)")
            self.assertGreater(var, decl)
            if var < decl:
                self.fail("Generated incorrect ordering")

        set_outputs = set(outputs)
        self.assertEqual(len(set_outputs), 1)
예제 #10
0
 def test_union(self):
     """run clang2py -k u test/data/test-records-complex.c"""
     # FIXME, this test case is kinda screwy.
     # trying to generate only union, but looking at incomplete definition.
     p, output, stderr = clang2py(['-k', 'u', 'test/data/test-records-complex.c'])
     self.assertEqual(0, p.returncode)
     # only unions are generated
     self.assertNotIn("struct__complex3(", output)
     self.assertIn("union__complex3_0(", output)
     self.assertIn("struct__complex3_0_2(", output)
     self.assertIn("struct__complex3_0_0(", output)
     self.assertIn("struct__complex3_0_1(", output)
     # not in root
     self.assertNotIn("union__complex3_0_1_1(", output)
예제 #11
0
 def test_alias(self):
     """run clang2py -k a test/data/test-stdint.cpp"""
     p, output, stderr = clang2py(['-k', 'a', 'test/data/test-stdint.cpp'])
     self.assertEqual(0, p.returncode)
     # TODO: nothing is outputed. Bad test.
     self.assertIn("ctypes", output)
예제 #12
0
 def test_stdin_succeed(self):
     """Support of stdin is done """
     # run cat  test/data/test-includes.h | clang2py -
     p, output, stderr = clang2py(['-'])
     self.assertEqual(0, p.returncode)
     self.assertIn("__all__", output)
예제 #13
0
 def test_stdout_with_minus_sign(self):
     """run clang2py test/data/test-includes.h -o -"""
     p, output, stderr = clang2py(['test/data/test-includes.h', '-o', '-'])
     self.assertEqual(0, p.returncode)
     self.assertIn("WORD_SIZE is:", output)
예제 #14
0
 def test_stdout_default(self):
     """run clang2py test/data/test-includes.h"""
     p, output, stderr = clang2py(['test/data/test-includes.h'])
     self.assertEqual(0, p.returncode)
     self.assertIn("WORD_SIZE is:", output)
예제 #15
0
 def test_variable(self):
     """run clang2py -k d test/data/test-strings.cpp"""
     p, output, stderr = clang2py(['-k', 'd', 'test/data/test-strings.cpp'])
     self.assertEqual(0, p.returncode)
     self.assertIn("a =", output)
     self.assertIn("b =", output)
예제 #16
0
 def test_class(self):
     """run clang2py -k c test/data/test-stdint.cpp"""
     p, output, stderr = clang2py(['-k', 'c', 'test/data/test-stdint.cpp'])
     self.assertEqual(0, p.returncode)
     self.assertIn("struct_b", output)
예제 #17
0
 def test_version(self):
     """run clang2py --version"""
     p, output, stderr = clang2py(['--version'])
     self.assertEqual(0, p.returncode)
     self.assertIn(str(ctypeslib.__version__), output)
     self.assertIn("libclang", output)
예제 #18
0
 def test_enumeration(self):
     """run clang2py -k e test/data/test-records.c"""
     p, output, stderr = clang2py(['-k', 'e', 'test/data/test-records.c'])
     self.assertEqual(0, p.returncode)
     self.assertIn("myEnum =", output)
예제 #19
0
 def test_function(self):
     """run clang2py -k f test/data/test-stdint.cpp"""
     p, output, stderr = clang2py(['-k', 'f', 'test/data/test-stdint.cpp'])
     self.assertEqual(0, p.returncode)
예제 #20
0
 def test_macro(self):
     """run clang2py -k m test/data/test-macros.h"""
     p, output, stderr = clang2py(['-k', 'm', 'test/data/test-macros.h'])
     self.assertEqual(0, p.returncode)