1# Copyright 2015-2018 the openage authors. See copying.md for legal info.
2
3""" Lists of all possible tests; enter your tests here. """
4
5
6def doctest_modules():
7    """
8    Yields the names of all Python modules that shall be tested during doctest.
9    """
10
11    yield "openage.util.math"
12    yield "openage.util.strings"
13    yield "openage.util.system"
14
15
16def tests_py():
17    """
18    Yields tuples of (name, description, condition_function)
19    for all Python test methods.
20
21    If no description is required, just the name may be yielded.
22    """
23
24    yield ("openage.testing.doctest.test",
25           "doctest on all modules from DOCTEST_MODULES")
26    yield "openage.assets.test"
27    yield ("openage.cabextract.test.test", "test CAB archive extraction",
28           lambda env: env["has_assets"])
29    yield "openage.convert.changelog.test"
30    yield "openage.cppinterface.exctranslate_tests.cpp_to_py"
31    yield ("openage.cppinterface.exctranslate_tests.cpp_to_py_bounce",
32           "translates the exception back and forth a few times")
33    yield ("openage.testing.misc_cpp.enum",
34           "tests the interface for C++'s util::Enum class")
35    yield ("openage.util.fslike.test.test",
36           "test the filesystem abstraction subsystem")
37    yield "openage.util.threading.test_concurrent_chain"
38
39
40def demos_py():
41    """
42    Yields tuples of (name, description) for all Python demo methods.
43    """
44
45    yield ("openage.cppinterface.exctranslate_tests.cpp_to_py_demo",
46           "translates a C++ exception and its causes to python")
47    yield ("openage.log.tests.demo",
48           "demonstrates the translation of Python log messages")
49    yield ("openage.convert.opus.demo.convert",
50           "encodes an opus file from a wave file")
51
52
53def benchmark_py():
54    """
55    Yields tuples of (name, description) for python benchmark
56    methods.
57    """
58
59    # TODO Add a real benchmark here, and remove this one
60    yield ("openage.testing.benchmark.benchmark_test_function",
61           "Benchmark yourself")
62
63
64def tests_cpp():
65    """
66    Yields tuples of (name, description, condition_function)
67    for all C++ test methods.
68
69    If no description is required, just the name may be yielded.
70    """
71
72    yield "openage::coord::tests::coord"
73    yield "openage::datastructure::tests::constexpr_map"
74    yield "openage::datastructure::tests::pairing_heap"
75    yield "openage::job::tests::test_job_manager"
76    yield "openage::path::tests::path_node", "pathfinding"
77    yield "openage::pyinterface::tests::pyobject"
78    yield "openage::pyinterface::tests::err_py_to_cpp"
79    yield "openage::renderer::tests::font"
80    yield "openage::renderer::tests::font_manager"
81    yield "openage::rng::tests::run"
82    yield "openage::util::tests::constinit_vector"
83    yield "openage::util::tests::enum_"
84    yield "openage::util::tests::fixed_point"
85    yield "openage::util::tests::init"
86    yield "openage::util::tests::matrix"
87    yield "openage::util::tests::quaternion"
88    yield "openage::util::tests::vector"
89    yield "openage::util::tests::siphash"
90    yield "openage::util::tests::array_conversion"
91    yield "openage::input::tests::parse_event_string", "keybinds parsing"
92
93
94def demos_cpp():
95    """
96    Yields tuples of (name, description) for all C++ demo methods.
97    """
98
99    yield ("openage::console::tests::render",
100           "prints a few test lines to a buffer, and renders it to stdout")
101    yield ("openage::console::tests::interactive",
102           "showcases console as an interactive terminal on your current tty")
103    yield ("openage::error::demo",
104           "showcases the openage exceptions, including backtraces")
105    yield ("openage::log::tests::demo",
106           "showcases the logging system")
107    yield ("openage::pyinterface::tests::err_py_to_cpp_demo",
108           "translates a Python exception to C++")
109    yield ("openage::pyinterface::tests::pyobject_demo",
110           "a tiny interactive interpreter using PyObjectRef")
111
112
113def benchmark_cpp():
114    """
115    Yields tuples of (name, description) for C++ benchmark
116    methods.
117    """
118
119    # TODO Add a real benchmark here!
120    yield ("openage::test::benchmark", "Test the benchmark")
121