diff options
author | Adam Mitz <mitza-oci@users.noreply.github.com> | 2007-06-08 19:28:45 +0000 |
---|---|---|
committer | Adam Mitz <mitza-oci@users.noreply.github.com> | 2007-06-08 19:28:45 +0000 |
commit | fd84debb427c78736666051cda5fdb77fbd6c0ef (patch) | |
tree | 97639f10099715627cf6d7067003efe8e02d839b | |
parent | 5cfab82fd2728de918b9ab864c23197e29049a77 (diff) | |
download | ATCD-fd84debb427c78736666051cda5fdb77fbd6c0ef.tar.gz |
ChangeLogTag: Fri Jun 8 19:23:45 UTC 2007 Adam Mitz <mitza@ociweb.com>
11 files changed, 82 insertions, 49 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 439224ddf89..bd80bebb0f7 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,23 @@ +Fri Jun 8 19:23:45 UTC 2007 Adam Mitz <mitza@ociweb.com> + + * tao/Generic_Sequence_T.h: + + A default-constructed unbounded sequence has no buffer allocated, so + "release" should be false. This restores the behavior of sequences + before the recent re-write. + + * tests/Sequence_Unit_Tests/bounded_string_sequence_ut.cpp: + * tests/Sequence_Unit_Tests/bounded_value_sequence_ut.cpp: + * tests/Sequence_Unit_Tests/string_sequence_tester.hpp: + * tests/Sequence_Unit_Tests/unbounded_fwd_object_reference_sequence_ut.cpp: + * tests/Sequence_Unit_Tests/unbounded_object_reference_sequence_ut.cpp: + * tests/Sequence_Unit_Tests/unbounded_octet_sequence_ut.cpp: + * tests/Sequence_Unit_Tests/unbounded_string_sequence_ut.cpp: + * tests/Sequence_Unit_Tests/unbounded_value_sequence_ut.cpp: + * tests/Sequence_Unit_Tests/value_sequence_tester.hpp: + + Updated unit tests to take this into account. + Fri Jun 08 10:20:00 UTC 2007 Simon Massey <sma@prismtech.com> * TAO/orbsvcs/orbsvcs/SSLIOP/params_dup.c: diff --git a/TAO/tao/Generic_Sequence_T.h b/TAO/tao/Generic_Sequence_T.h index 50a7819434a..7f6ffb35c2c 100644 --- a/TAO/tao/Generic_Sequence_T.h +++ b/TAO/tao/Generic_Sequence_T.h @@ -84,7 +84,7 @@ public: : maximum_(allocation_traits::default_maximum()) , length_(0) , buffer_(allocation_traits::default_buffer_allocation()) - , release_(true) + , release_(buffer_ != 0) { } @@ -116,6 +116,7 @@ public: , buffer_(0) , release_(false) { + if (rhs.maximum_ == 0) return; generic_sequence tmp(rhs.maximum_); tmp.length_ = rhs.length_; element_traits::copy_range( @@ -233,6 +234,7 @@ public: if (buffer_ == 0) { buffer_ = allocbuf(maximum_); + release_ = true; } return buffer_; } @@ -274,6 +276,10 @@ public: if (buffer_ == 0) { buffer_ = allocbuf(maximum_); + if (!orphan) + { + release_ = true; + } } if (!orphan) { @@ -314,7 +320,7 @@ private: mutable value_type * buffer_; /// If true then the sequence should release the buffer when it is /// destroyed. - CORBA::Boolean release_; + mutable CORBA::Boolean release_; }; } // namespace details diff --git a/TAO/tests/Sequence_Unit_Tests/bounded_string_sequence_ut.cpp b/TAO/tests/Sequence_Unit_Tests/bounded_string_sequence_ut.cpp index f7a4a1d15df..4cf5ea06a96 100644 --- a/TAO/tests/Sequence_Unit_Tests/bounded_string_sequence_ut.cpp +++ b/TAO/tests/Sequence_Unit_Tests/bounded_string_sequence_ut.cpp @@ -304,7 +304,7 @@ struct Tester void add_all(test_suite * ts) { typedef string_sequence_tester<tested_sequence> common; - boost::shared_ptr<common> tester(common::allocate()); + boost::shared_ptr<common> tester(common::allocate(true)); tester->add_all(ts); boost::shared_ptr<Tester> shared_this(self_); diff --git a/TAO/tests/Sequence_Unit_Tests/bounded_value_sequence_ut.cpp b/TAO/tests/Sequence_Unit_Tests/bounded_value_sequence_ut.cpp index c2aea535717..4ed1a2d2041 100644 --- a/TAO/tests/Sequence_Unit_Tests/bounded_value_sequence_ut.cpp +++ b/TAO/tests/Sequence_Unit_Tests/bounded_value_sequence_ut.cpp @@ -351,7 +351,7 @@ init_unit_test_suite(int, char*[]) { typedef value_sequence_tester<tested_sequence,tested_allocation_traits> common; - boost::shared_ptr<common> tester(common::allocate()); + boost::shared_ptr<common> tester(common::allocate(true)); tester->add_all(ts); } diff --git a/TAO/tests/Sequence_Unit_Tests/string_sequence_tester.hpp b/TAO/tests/Sequence_Unit_Tests/string_sequence_tester.hpp index 1e6227eb22f..2b4d3d6406f 100644 --- a/TAO/tests/Sequence_Unit_Tests/string_sequence_tester.hpp +++ b/TAO/tests/Sequence_Unit_Tests/string_sequence_tester.hpp @@ -127,10 +127,10 @@ struct string_sequence_tester CORBA::ULong(tested_allocation_traits::default_maximum()), x.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(0), x.length()); - BOOST_CHECK_EQUAL(true, x.release()); + BOOST_CHECK_EQUAL(bounded_, x.release()); } BOOST_CHECK_MESSAGE(a.expect(0), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 1 : 0), f); } void test_copy_constructor_from_default() @@ -145,7 +145,7 @@ struct string_sequence_tester a.reset(); f.reset(); i.reset(); d.reset(); tested_sequence y(x); - BOOST_CHECK_MESSAGE(a.expect(1), a); + BOOST_CHECK_MESSAGE(a.expect(bounded_ ? 1 : 0), a); BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(i.expect(0), i); BOOST_CHECK_MESSAGE(d.expect(0), d); @@ -154,7 +154,7 @@ struct string_sequence_tester BOOST_CHECK_EQUAL(x.length(), y.length()); BOOST_CHECK_EQUAL(x.release(), y.release()); } - BOOST_CHECK_MESSAGE(f.expect(2), f); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 2 : 0), f); } void test_index_accessor() @@ -260,19 +260,19 @@ struct string_sequence_tester CORBA::ULong(tested_allocation_traits::default_maximum()), x.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(0), x.length()); - BOOST_CHECK_EQUAL(true, x.release()); + BOOST_CHECK_EQUAL(bounded_ , x.release()); tested_sequence y; BOOST_CHECK_MESSAGE(a.expect(0), a); y = x; - BOOST_CHECK_MESSAGE(a.expect(1), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(a.expect(bounded_ ? 1 : 0), a); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 1 : 0), f); BOOST_CHECK_EQUAL(x.maximum(), y.maximum()); BOOST_CHECK_EQUAL(x.length(), y.length()); BOOST_CHECK_EQUAL(x.release(), y.release()); } - BOOST_CHECK_MESSAGE(f.expect(2), f); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 2 : 0), f); } void test_assignment_values() @@ -483,17 +483,21 @@ struct string_sequence_tester } - static boost::shared_ptr<string_sequence_tester> allocate() + static boost::shared_ptr<string_sequence_tester> allocate(bool bounded = false) { boost::shared_ptr<string_sequence_tester> ptr( - new string_sequence_tester); + new string_sequence_tester(bounded)); ptr->self_ = ptr; return ptr; } private: - string_sequence_tester() {} + string_sequence_tester(bool bounded) + : bounded_(bounded) + {} + + bool bounded_; boost::weak_ptr<string_sequence_tester> self_; }; diff --git a/TAO/tests/Sequence_Unit_Tests/unbounded_fwd_object_reference_sequence_ut.cpp b/TAO/tests/Sequence_Unit_Tests/unbounded_fwd_object_reference_sequence_ut.cpp index e8f829b732d..0116dd37dcb 100644 --- a/TAO/tests/Sequence_Unit_Tests/unbounded_fwd_object_reference_sequence_ut.cpp +++ b/TAO/tests/Sequence_Unit_Tests/unbounded_fwd_object_reference_sequence_ut.cpp @@ -43,10 +43,10 @@ struct Tester BOOST_CHECK_EQUAL(CORBA::ULong(0), x.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(0), x.length()); - BOOST_CHECK_EQUAL(true, x.release()); + BOOST_CHECK_EQUAL(false, x.release()); } BOOST_CHECK_MESSAGE(a.expect(0), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(i.expect(0), i); } diff --git a/TAO/tests/Sequence_Unit_Tests/unbounded_object_reference_sequence_ut.cpp b/TAO/tests/Sequence_Unit_Tests/unbounded_object_reference_sequence_ut.cpp index 7d02abdde69..263576143d9 100644 --- a/TAO/tests/Sequence_Unit_Tests/unbounded_object_reference_sequence_ut.cpp +++ b/TAO/tests/Sequence_Unit_Tests/unbounded_object_reference_sequence_ut.cpp @@ -43,10 +43,10 @@ struct Tester BOOST_CHECK_EQUAL(CORBA::ULong(0), x.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(0), x.length()); - BOOST_CHECK_EQUAL(true, x.release()); + BOOST_CHECK_EQUAL(false, x.release()); } BOOST_CHECK_MESSAGE(a.expect(0), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(i.expect(0), i); } @@ -140,8 +140,8 @@ struct Tester tested_sequence y(x); } - BOOST_CHECK_MESSAGE(a.expect(1), a); - BOOST_CHECK_MESSAGE(f.expect(2), f); + BOOST_CHECK_MESSAGE(a.expect(0), a); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(i.expect(0), i); } @@ -374,7 +374,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, false); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(r.expect(0), r); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); @@ -400,7 +400,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, false); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(r.expect(0), 0); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); @@ -426,7 +426,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(r.expect(0), 0); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); diff --git a/TAO/tests/Sequence_Unit_Tests/unbounded_octet_sequence_ut.cpp b/TAO/tests/Sequence_Unit_Tests/unbounded_octet_sequence_ut.cpp index efb44423d9e..acc347afc39 100644 --- a/TAO/tests/Sequence_Unit_Tests/unbounded_octet_sequence_ut.cpp +++ b/TAO/tests/Sequence_Unit_Tests/unbounded_octet_sequence_ut.cpp @@ -73,7 +73,7 @@ struct Tester y = x; BOOST_CHECK_MESSAGE(a.expect(1), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(16), y.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(8), y.length()); BOOST_CHECK_EQUAL(true, y.release()); @@ -154,7 +154,7 @@ struct Tester BOOST_CHECK_THROW(x.length(8), testing_exception); BOOST_CHECK_MESSAGE(a.expect(1), a); } - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); } value_type * alloc_and_init_buffer() @@ -238,7 +238,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(4), a.length()); @@ -264,7 +264,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, false); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(4), a.length()); @@ -290,7 +290,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, true); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(4), a.length()); diff --git a/TAO/tests/Sequence_Unit_Tests/unbounded_string_sequence_ut.cpp b/TAO/tests/Sequence_Unit_Tests/unbounded_string_sequence_ut.cpp index 53f0941275c..0293fb0a4f0 100644 --- a/TAO/tests/Sequence_Unit_Tests/unbounded_string_sequence_ut.cpp +++ b/TAO/tests/Sequence_Unit_Tests/unbounded_string_sequence_ut.cpp @@ -297,7 +297,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(r.expect(0), 0); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); @@ -323,7 +323,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, false); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(r.expect(0), 0); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); @@ -349,7 +349,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, false); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_MESSAGE(r.expect(0), r); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); diff --git a/TAO/tests/Sequence_Unit_Tests/unbounded_value_sequence_ut.cpp b/TAO/tests/Sequence_Unit_Tests/unbounded_value_sequence_ut.cpp index d3a110910bc..2c42548cd69 100644 --- a/TAO/tests/Sequence_Unit_Tests/unbounded_value_sequence_ut.cpp +++ b/TAO/tests/Sequence_Unit_Tests/unbounded_value_sequence_ut.cpp @@ -70,7 +70,7 @@ struct Tester y = x; BOOST_CHECK_MESSAGE(a.expect(1), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(16), y.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(8), y.length()); BOOST_CHECK_EQUAL(true, y.release()); @@ -151,7 +151,7 @@ struct Tester BOOST_CHECK_THROW(x.length(8), testing_exception); BOOST_CHECK_MESSAGE(a.expect(1), a); } - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); } value_type * alloc_and_init_buffer() @@ -262,7 +262,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(4), a.length()); @@ -288,7 +288,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, false); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(4), a.length()); @@ -314,7 +314,7 @@ struct Tester tested_sequence a; a.replace(8, 4, buffer, true); BOOST_CHECK_MESSAGE(c.expect(0), c); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(0), f); BOOST_CHECK_EQUAL(CORBA::ULong(8), a.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(4), a.length()); diff --git a/TAO/tests/Sequence_Unit_Tests/value_sequence_tester.hpp b/TAO/tests/Sequence_Unit_Tests/value_sequence_tester.hpp index 02e88aad88e..7e502dc966d 100644 --- a/TAO/tests/Sequence_Unit_Tests/value_sequence_tester.hpp +++ b/TAO/tests/Sequence_Unit_Tests/value_sequence_tester.hpp @@ -35,10 +35,10 @@ struct value_sequence_tester CORBA::ULong(tested_allocation_traits::default_maximum()), x.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(0), x.length()); - BOOST_CHECK_EQUAL(true, x.release()); + BOOST_CHECK_EQUAL(bounded_, x.release()); } BOOST_CHECK_MESSAGE(a.expect(0), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 1 : 0), f); } @@ -53,15 +53,15 @@ struct value_sequence_tester CORBA::ULong(tested_allocation_traits::default_maximum()), x.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(0), x.length()); - BOOST_CHECK_EQUAL(true, x.release()); + BOOST_CHECK_EQUAL(bounded_, x.release()); tested_sequence y(x); - BOOST_CHECK_MESSAGE(a.expect(1), a); + BOOST_CHECK_MESSAGE(a.expect(bounded_ ? 1 : 0), a); BOOST_CHECK_EQUAL(x.maximum(), y.maximum()); BOOST_CHECK_EQUAL(x.length(), y.length()); BOOST_CHECK_EQUAL(x.release(), y.release()); } - BOOST_CHECK_MESSAGE(f.expect(2), f); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 2 : 0), f); } void test_index_accessor() @@ -125,19 +125,19 @@ struct value_sequence_tester CORBA::ULong(tested_allocation_traits::default_maximum()), x.maximum()); BOOST_CHECK_EQUAL(CORBA::ULong(0), x.length()); - BOOST_CHECK_EQUAL(true, x.release()); + BOOST_CHECK_EQUAL(bounded_, x.release()); tested_sequence y; BOOST_CHECK_MESSAGE(a.expect(0), a); y = x; - BOOST_CHECK_MESSAGE(a.expect(1), a); - BOOST_CHECK_MESSAGE(f.expect(1), f); + BOOST_CHECK_MESSAGE(a.expect(bounded_ ? 1 : 0), a); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 1 : 0), f); BOOST_CHECK_EQUAL(x.maximum(), y.maximum()); BOOST_CHECK_EQUAL(x.length(), y.length()); BOOST_CHECK_EQUAL(x.release(), y.release()); } - BOOST_CHECK_MESSAGE(f.expect(2), f); + BOOST_CHECK_MESSAGE(f.expect(bounded_ ? 2 : 0), f); } void test_assignment_values() @@ -250,18 +250,21 @@ struct value_sequence_tester shared_this)); } - static boost::shared_ptr<value_sequence_tester> allocate() + static boost::shared_ptr<value_sequence_tester> allocate(bool bounded = false) { boost::shared_ptr<value_sequence_tester> ptr( - new value_sequence_tester); + new value_sequence_tester(bounded)); ptr->self_ = ptr; return ptr; } private: - value_sequence_tester() {} + value_sequence_tester(bool bounded) + : bounded_ (bounded) + {} + bool bounded_; boost::weak_ptr<value_sequence_tester> self_; }; |