summaryrefslogtreecommitdiff
path: root/tests/block_props_test.cpp
diff options
context:
space:
mode:
authorJosh Blum2013-03-17 15:47:30 -0700
committerJosh Blum2013-03-17 15:47:30 -0700
commitc70c996658138d0f38a1670f073cc327ff5ab920 (patch)
tree21a869c9df27675f8ef2552746b2109cbdd14a84 /tests/block_props_test.cpp
parentf637a4081cef9d28d98e209efbd02099c56777a9 (diff)
downloadsandhi-c70c996658138d0f38a1670f073cc327ff5ab920.tar.gz
sandhi-c70c996658138d0f38a1670f073cc327ff5ab920.tar.bz2
sandhi-c70c996658138d0f38a1670f073cc327ff5ab920.zip
gras: property tweaks and c++ unit tests
Diffstat (limited to 'tests/block_props_test.cpp')
-rw-r--r--tests/block_props_test.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/block_props_test.cpp b/tests/block_props_test.cpp
new file mode 100644
index 0000000..ded4273
--- /dev/null
+++ b/tests/block_props_test.cpp
@@ -0,0 +1,66 @@
+// 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_property("foo", &MyBlock::get_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_property_set_get_with_return)
+{
+ MyBlock my_block;
+ BOOST_CHECK_EQUAL(my_block.foo, size_t(0));
+
+ my_block.set("foo", size_t(42));
+ BOOST_CHECK_EQUAL(my_block.foo, size_t(42));
+
+ const size_t my_foo = my_block.get<size_t>("foo");
+ BOOST_CHECK_EQUAL(my_foo, size_t(42));
+}
+
+BOOST_AUTO_TEST_CASE(test_property_set_get_with_reference)
+{
+ MyBlock my_block;
+ BOOST_CHECK_EQUAL(my_block.foo, size_t(0));
+
+ my_block.set("foo", size_t(42));
+ BOOST_CHECK_EQUAL(my_block.foo, size_t(42));
+
+ size_t my_foo; my_block.get("foo", my_foo);
+ BOOST_CHECK_EQUAL(my_foo, size_t(42));
+}
+
+BOOST_AUTO_TEST_CASE(test_property_errors)
+{
+ MyBlock my_block;
+
+ //property does not exist
+ BOOST_CHECK_THROW(my_block.get<size_t>("bar"), std::exception);
+
+ //wrong type for property
+ BOOST_CHECK_THROW(my_block.set("foo", double(42)), std::exception);
+}