From c70c996658138d0f38a1670f073cc327ff5ab920 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Sun, 17 Mar 2013 15:47:30 -0700 Subject: gras: property tweaks and c++ unit tests --- tests/block_props_test.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tests/block_props_test.cpp (limited to 'tests/block_props_test.cpp') 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 +#include + +#include + +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("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("bar"), std::exception); + + //wrong type for property + BOOST_CHECK_THROW(my_block.set("foo", double(42)), std::exception); +} -- cgit