diff options
author | Josh Blum | 2013-03-17 15:47:30 -0700 |
---|---|---|
committer | Josh Blum | 2013-03-17 15:47:30 -0700 |
commit | c70c996658138d0f38a1670f073cc327ff5ab920 (patch) | |
tree | 21a869c9df27675f8ef2552746b2109cbdd14a84 /tests/block_props_test.cpp | |
parent | f637a4081cef9d28d98e209efbd02099c56777a9 (diff) | |
download | sandhi-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.cpp | 66 |
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); +} |