summaryrefslogtreecommitdiff
path: root/tests/block_calls_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/block_calls_test.cpp')
-rw-r--r--tests/block_calls_test.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/block_calls_test.cpp b/tests/block_calls_test.cpp
new file mode 100644
index 0000000..9f8a881
--- /dev/null
+++ b/tests/block_calls_test.cpp
@@ -0,0 +1,55 @@
+// Copyright (C) by Josh Blum. See LICENSE.txt for licensing information.
+
+#include <boost/test/unit_test.hpp>
+#include <iostream>
+
+#include <gras/block.hpp>
+
+struct MyBlock : gras::Block
+{
+ MyBlock(void):
+ gras::Block("MyBlock")
+ {
+ foo = 0;
+ this->register_call("get_foo", &MyBlock::get_foo);
+ this->register_call("set_foo", &MyBlock::set_foo);
+ }
+
+ //dummy work
+ void work(const InputItems &, const OutputItems &){}
+
+ size_t get_foo(void)
+ {
+ return foo;
+ }
+
+ void set_foo(const size_t &new_foo)
+ {
+ foo = new_foo;
+ }
+
+ size_t foo;
+};
+
+BOOST_AUTO_TEST_CASE(test_calls_get_set)
+{
+ MyBlock my_block;
+ BOOST_CHECK_EQUAL(my_block.foo, size_t(0));
+
+ my_block.x("set_foo", size_t(42));
+ BOOST_CHECK_EQUAL(my_block.foo, size_t(42));
+
+ const size_t my_foo = my_block.x<size_t>("get_foo");
+ BOOST_CHECK_EQUAL(my_foo, size_t(42));
+}
+
+BOOST_AUTO_TEST_CASE(test_callable_errors)
+{
+ MyBlock my_block;
+
+ //call does not exist
+ BOOST_CHECK_THROW(my_block.x<size_t>("get_bar"), std::exception);
+
+ //wrong type for call
+ BOOST_CHECK_THROW(my_block.x("set_foo", "a string"), std::exception);
+}