libmoost
|
00001 /* vim:set ts=3 sw=3 sts=3 et: */ 00028 #include <boost/test/unit_test.hpp> 00029 #include <boost/test/test_tools.hpp> 00030 00031 #include <vector> 00032 #include "../../include/moost/container/resource_stack.hpp" 00033 00034 using namespace moost::container; 00035 00036 BOOST_AUTO_TEST_SUITE( resource_stack_test ) 00037 00038 struct Fixture 00039 { 00040 resource_stack<int> resource_stack_; 00041 00042 Fixture() 00043 { 00044 resource_stack_.add_resource(boost::shared_ptr<int>(new int(3))); 00045 resource_stack_.add_resource(boost::shared_ptr<int>(new int(5))); 00046 } 00047 }; 00048 00049 BOOST_FIXTURE_TEST_CASE( test_initial, Fixture ) 00050 { 00051 BOOST_CHECK_EQUAL(resource_stack_.size(), 2); 00052 BOOST_CHECK_EQUAL(resource_stack_.total_size(), 2); 00053 } 00054 00055 // find nothing! 00056 BOOST_FIXTURE_TEST_CASE( test_get_resource, Fixture ) 00057 { 00058 resource_stack<int>::scoped_resource sr(resource_stack_); 00059 00060 BOOST_CHECK_EQUAL(resource_stack_.size(), 1); 00061 BOOST_CHECK_EQUAL(*sr, 5); 00062 BOOST_CHECK_EQUAL(resource_stack_.total_size(), 2); 00063 00064 resource_stack<int>::scoped_resource sr2(resource_stack_, false); 00065 BOOST_CHECK_EQUAL(resource_stack_.size(), 0); 00066 BOOST_CHECK_EQUAL(*sr2, 3); 00067 BOOST_CHECK_EQUAL(resource_stack_.total_size(), 2); 00068 00069 BOOST_CHECK_THROW( 00070 resource_stack<int>::scoped_resource sr3(resource_stack_, false), 00071 no_resource_available 00072 ); 00073 } 00074 00075 // find something! 00076 BOOST_FIXTURE_TEST_CASE( test_get_multiple, Fixture ) 00077 { 00078 resource_stack<int>::scoped_resource sr(resource_stack_); 00079 00080 BOOST_CHECK_EQUAL(resource_stack_.size(), 1); 00081 BOOST_CHECK_EQUAL(*sr, 5); 00082 00083 resource_stack<int>::scoped_resource sr2(resource_stack_); 00084 00085 BOOST_CHECK_EQUAL(resource_stack_.size(), 0); 00086 BOOST_CHECK_EQUAL(*sr2, 3); 00087 BOOST_CHECK_EQUAL(resource_stack_.total_size(), 2); 00088 } 00089 00090 // find nothing! (bounds search) 00091 BOOST_FIXTURE_TEST_CASE( test_release, Fixture ) 00092 { 00093 resource_stack<int>::scoped_resource sr(resource_stack_); 00094 00095 { 00096 resource_stack<int>::scoped_resource sr2(resource_stack_); 00097 } 00098 BOOST_CHECK_EQUAL(resource_stack_.size(), 1); 00099 BOOST_CHECK_EQUAL(*sr, 5); 00100 00101 resource_stack<int>::scoped_resource sr3(resource_stack_); 00102 BOOST_CHECK_EQUAL(resource_stack_.size(), 0); 00103 BOOST_CHECK_EQUAL(*sr3, 3); 00104 BOOST_CHECK_EQUAL(resource_stack_.total_size(), 2); 00105 } 00106 00107 BOOST_AUTO_TEST_SUITE_END()