6 from nmigen
._toolchain
.cxx
import *
9 class ToolchainCxxTestCase(unittest
.TestCase
):
11 self
.include_dir
= None
16 self
.include_dir
.cleanup()
18 self
.build_dir
.cleanup()
20 def test_filename(self
):
21 self
.build_dir
, filename
= build_cxx(
22 cxx_sources
={"test.cc": ""},
27 self
.assertTrue(filename
.startswith("answer"))
29 def test_simple(self
):
30 self
.build_dir
, filename
= build_cxx(
31 cxx_sources
={"test.cc": """
32 extern "C" int answer() { return 42; }
38 library
= ctypes
.cdll
.LoadLibrary(os
.path
.join(self
.build_dir
.name
, filename
))
39 self
.assertEqual(library
.answer(), 42)
42 self
.build_dir
, filename
= build_cxx(
43 cxx_sources
={"test.cc": """
44 extern "C" int answer() { return ANSWER; }
50 library
= ctypes
.cdll
.LoadLibrary(os
.path
.join(self
.build_dir
.name
, filename
))
51 self
.assertEqual(library
.answer(), 42)
53 def test_include(self
):
54 self
.include_dir
= tempfile
.TemporaryDirectory(prefix
="nmigen_hxx_")
55 with
open(os
.path
.join(self
.include_dir
.name
, "answer.h"), "w") as f
:
56 f
.write("#define ANSWER 42")
58 self
.build_dir
, filename
= build_cxx(
59 cxx_sources
={"test.cc": """
61 extern "C" int answer() { return ANSWER; }
64 include_dirs
=[self
.include_dir
.name
],
67 library
= ctypes
.cdll
.LoadLibrary(os
.path
.join(self
.build_dir
.name
, filename
))
68 self
.assertEqual(library
.answer(), 42)