diff --git a/tests/run_test b/tests/run_test index 7f523fa..ba98b56 100755 --- a/tests/run_test +++ b/tests/run_test @@ -13,14 +13,12 @@ TEST_CASES = { (['-a=1', '-b=2'], '3') ], 'flag': [ - ([], 'flag_a = 0, flag_b = 0'), - (['--flag_a'], 'flag_a = 1, flag_b = 0'), - (['--flag_b'], 'flag_a = 0, flag_b = 1'), - (['--flag_a', '--flag_b'], 'flag_a = 1, flag_b = 1') + ([], '0'), + (['-f'], '1') ], - 'default': [ + 'default_arg': [ ([], '0'), - (['--def=1'], '1') + (['-d=1'], '1') ], 'optional': [ ([], 'opt = nothing'), @@ -28,13 +26,19 @@ TEST_CASES = { ], 'variadic': [ ([], 'variadic = {}'), - (['1'], 'variadic = {1}'), - (['1', '2'], 'variadic = {1, 2}'), (['1', '2', '3'], 'variadic = {1, 2, 3}') ], 'class': [ + (['hello', '--msg', 'hello world'], 'hello world'), (['add', '-a=1', '-b=2'], '3'), - (['sub', '-a=1', '-b=2'], '-1') + (['flag'], '0'), + (['flag', '-f'], '1'), + (['default_arg'], '0'), + (['default_arg', '-d=1'], '1'), + (['optional'], 'opt = nothing'), + (['optional', '--opt=1'], 'opt = 1'), + (['variadic'], 'variadic = {}'), + (['variadic', '1', '2', '3'], 'variadic = {1, 2, 3}') ] } diff --git a/tests/test_add.cpp b/tests/test_add.cpp index 5f498e9..53fcba1 100644 --- a/tests/test_add.cpp +++ b/tests/test_add.cpp @@ -1,10 +1,8 @@ #include -#include - namespace { -int fire_main_add(int a, int b) +int add(int a, int b) { return a + b; } @@ -13,5 +11,5 @@ int fire_main_add(int a, int b) int main() { - fire::fire_llvm(fire_main_add); + fire::fire_llvm(add); } diff --git a/tests/test_class.cpp b/tests/test_class.cpp new file mode 100644 index 0000000..ea4d438 --- /dev/null +++ b/tests/test_class.cpp @@ -0,0 +1,57 @@ +#include + +#include +#include +#include +#include + +struct S +{ + std::string hello(std::string const &msg) + { + return msg; + } + + int add(int a, int b) + { + return a + b; + } + + bool flag(bool f) + { + return f; + } + + int default_arg(int d = 0) + { + return d; + } + + void optional(std::optional opt) + { + if (opt) + std::cout << "opt = " << opt.value() << std::endl; + else + std::cout << "opt = nothing" << std::endl; + } + + void variadic(std::vector const &variadic) + { + std::cout << "variadic = {"; + + if (!variadic.empty()) { + std::cout << variadic[0]; + for (std::size_t i = 1; i < variadic.size(); ++i) + std::cout << ", " << variadic[i]; + } + + std::cout << "}"; + } +}; + +S s; + +int main() +{ + fire::fire_llvm(s); +} diff --git a/tests/test_default_arg.cpp b/tests/test_default_arg.cpp index fa20c8d..442e530 100644 --- a/tests/test_default_arg.cpp +++ b/tests/test_default_arg.cpp @@ -1,17 +1,15 @@ #include -#include - namespace { -int fire_main_default(int def = 0) +int default_arg(int d = 0) { - return def; + return d; } } int main() { - fire::fire_llvm(fire_main_default); + fire::fire_llvm(default_arg); } diff --git a/tests/test_flag.cpp b/tests/test_flag.cpp index 32b650f..0c896c0 100644 --- a/tests/test_flag.cpp +++ b/tests/test_flag.cpp @@ -1,17 +1,15 @@ #include -#include - namespace { -void fire_main_flag(bool flag_a, bool flag_b) +bool flag(bool f) { - std::cout << "flag_a = " << flag_a << ", flag_b = " << flag_b << std::endl; + return f; } } int main() { - fire::fire_llvm(fire_main_flag); + fire::fire_llvm(flag); } diff --git a/tests/test_hello.cpp b/tests/test_hello.cpp index ad4a052..6674ce9 100644 --- a/tests/test_hello.cpp +++ b/tests/test_hello.cpp @@ -4,9 +4,9 @@ namespace { -void fire_main_hello(std::string const &msg) +std::string fire_main_hello(std::string const &msg) { - std::cout << msg << std::endl; + return msg; } }