$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: jmcintyre_at_[hidden]
Date: 2007-08-02 01:25:41
Author: jared
Date: 2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
New Revision: 38394
URL: http://svn.boost.org/trac/boost/changeset/38394
Log:
Have most of the tests ported and running in boost::test. Work is still ongoing.
Text files modified: 
   sandbox/pinhole/libs/pinhole/test/Jamfile.v2                   |    11 ++                                      
   sandbox/pinhole/libs/pinhole/test/TestActions.cpp              |     4                                         
   sandbox/pinhole/libs/pinhole/test/TestBoolProperties.cpp       |    47 ++++++----                              
   sandbox/pinhole/libs/pinhole/test/TestClassesAndConstants.h    |    37 ++++++++                                
   sandbox/pinhole/libs/pinhole/test/TestDoubleProperties.cpp     |    45 ++++++----                              
   sandbox/pinhole/libs/pinhole/test/TestFloatProperties.cpp      |    55 +++++++-----                            
   sandbox/pinhole/libs/pinhole/test/TestIntegerProperties.cpp    |    29 +++---                                  
   sandbox/pinhole/libs/pinhole/test/TestPropertyGroupWrapper.cpp |    56 +++++++-----                            
   sandbox/pinhole/libs/pinhole/test/TestPropertyGroups.cpp       |   173 ++++++++++++++++++++++----------------- 
   sandbox/pinhole/libs/pinhole/test/TestSerializer.cpp           |   104 ++++++++++++-----------                 
   sandbox/pinhole/libs/pinhole/test/TestStringProperties.cpp     |    20 +---                                    
   11 files changed, 339 insertions(+), 242 deletions(-)
Modified: sandbox/pinhole/libs/pinhole/test/Jamfile.v2
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/Jamfile.v2	(original)
+++ sandbox/pinhole/libs/pinhole/test/Jamfile.v2	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -20,6 +20,17 @@
 {
   test-suite pinhole
     : 
+  [ run TestPropertyGroups.cpp  ]
+  #[ run TestPropertyGroupWrapper.cpp  ]
+  
+  [ run TestBoolProperties.cpp  ]
+  [ run TestDoubleProperties.cpp  ]
+  [ run TestFloatProperties.cpp  ]
+  [ run TestIntegerProperties.cpp  ]
   [ run TestStringProperties.cpp  ]
+  
+  #[ run TestActions.cpp  ]
+  
+  #[ run TestSerializer.cpp  ]
  ;
 }
Modified: sandbox/pinhole/libs/pinhole/test/TestActions.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestActions.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestActions.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,6 +7,8 @@
 
 // For more information, see http://www.boost.org
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
 
 BOOST_AUTO_TEST_CASE( TestActionsFixture, TestTriggerAction )
Modified: sandbox/pinhole/libs/pinhole/test/TestBoolProperties.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestBoolProperties.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestBoolProperties.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,43 +7,50 @@
 
 // For more information, see http://www.boost.org
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
 
+// I can hide these two line if I don't do everything in headers
+boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
+event_source* event_source::m_instance = 0;
+
 BOOST_AUTO_TEST_CASE( TestSetGetBool )
 {
     TestPropertyGroup testGroup;
     
-	set_as_string( PROPERTY_STRING_2, PROPERTY_STRING_2_VALUE );
-	BOOST_CHECK( PROPERTY_STRING_2_VALUE == get_as_string( PROPERTY_STRING_2) );
+	testGroup.set_as_string( PROPERTY_STRING_2, PROPERTY_STRING_2_VALUE );
+	BOOST_CHECK( PROPERTY_STRING_2_VALUE == testGroup.get_as_string( PROPERTY_STRING_2) );
 }
 
 BOOST_AUTO_TEST_CASE( TestSetGetBoolVar )
 {
     TestPropertyGroup testGroup;
     
-	set_as_string( PROPERTY_BOOL_VAR, PROPERTY_BOOL_VALUE );
-	BOOST_CHECK_EQUAL( get_as_string( PROPERTY_BOOL_VAR), PROPERTY_BOOL_VALUE );
+	testGroup.set_as_string( PROPERTY_BOOL_VAR, PROPERTY_BOOL_VALUE );
+	BOOST_CHECK_EQUAL( testGroup.get_as_string( PROPERTY_BOOL_VAR), PROPERTY_BOOL_VALUE );
 }
 
 BOOST_AUTO_TEST_CASE( TestBoolPropertyType )
 {
     TestPropertyGroup_4 testGroup;
     
-    BOOST_CHECK( typeid(bool) == GetTypeInfo(PROPERTY_BOOL) );
-    BOOST_CHECK( typeid(int) != GetTypeInfo(PROPERTY_BOOL) );
-    BOOST_CHECK( typeid(float) != GetTypeInfo(PROPERTY_BOOL) );
-    BOOST_CHECK( typeid(double) != GetTypeInfo(PROPERTY_BOOL) );
-    BOOST_CHECK( typeid(std::string) != GetTypeInfo(PROPERTY_BOOL) );
-
-	const BoolEditor *pEditor = dynamic_cast<const BoolEditor*>(get_metadata( PROPERTY_BOOL ));
-	BOOST_CHECK( get_metadata(PROPERTY_BOOL)->getEditorPropertyType() == BooleanType );
+    BOOST_CHECK( typeid(bool) == testGroup.get_type_info(PROPERTY_BOOL) );
+    BOOST_CHECK( typeid(int) != testGroup.get_type_info(PROPERTY_BOOL) );
+    BOOST_CHECK( typeid(float) != testGroup.get_type_info(PROPERTY_BOOL) );
+    BOOST_CHECK( typeid(double) != testGroup.get_type_info(PROPERTY_BOOL) );
+    BOOST_CHECK( typeid(std::string) != testGroup.get_type_info(PROPERTY_BOOL) );
+
+	const BoolEditor *pEditor = dynamic_cast<const BoolEditor*>(testGroup.get_metadata( PROPERTY_BOOL ));
+	BOOST_CHECK( pEditor != NULL );
+	BOOST_CHECK( testGroup.get_metadata(PROPERTY_BOOL)->getEditorPropertyType() == BooleanType );
 }
 
 BOOST_AUTO_TEST_CASE( TestBoolGetControlType )
 {
     TestPropertyGroup_4 testGroup;
     
-	const BoolEditor *pEditor = dynamic_cast<const BoolEditor*>(get_metadata( PROPERTY_BOOL ));
+	const BoolEditor *pEditor = dynamic_cast<const BoolEditor*>(testGroup.get_metadata( PROPERTY_BOOL ));
         BOOST_CHECK( pEditor->GetControlType() == Radio );
 }
 
@@ -51,11 +58,11 @@
 {
     TestPropertyGroup_4 testGroup;
     
-	set_as_string( PROPERTY_BOOL, BOOL_TRUE );
-	BOOST_CHECK( get_as_string( PROPERTY_BOOL ) == BOOL_TRUE );
+	testGroup.set_as_string( PROPERTY_BOOL, BOOL_TRUE );
+	BOOST_CHECK( testGroup.get_as_string( PROPERTY_BOOL ) == BOOL_TRUE );
 
-	set_as_string( PROPERTY_BOOL, BOOL_FALSE );
-	BOOST_CHECK( get_as_string( PROPERTY_BOOL ) == BOOL_FALSE );
+	testGroup.set_as_string( PROPERTY_BOOL, BOOL_FALSE );
+	BOOST_CHECK( testGroup.get_as_string( PROPERTY_BOOL ) == BOOL_FALSE );
 }
 
 BOOST_AUTO_TEST_CASE( TestInvalidSet )
@@ -63,13 +70,13 @@
     TestPropertyGroup_4 testGroup;
     
         // TODO
-	set_as_string( PROPERTY_BOOL, "Foo" );
+	testGroup.set_as_string( PROPERTY_BOOL, "Foo" );
 }
 
 BOOST_AUTO_TEST_CASE( TestAutoGeneratedDesignerBool )
 {
     TestAutoGeneratedDesigners testGroup;
     
-	const Editor* pEditor = get_metadata(PROPERTY_BOOL);
+	const Editor* pEditor = testGroup.get_metadata(PROPERTY_BOOL);
         BOOST_CHECK( NULL != dynamic_cast<const BoolEditor*>(pEditor) );
 }
Modified: sandbox/pinhole/libs/pinhole/test/TestClassesAndConstants.h
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestClassesAndConstants.h	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestClassesAndConstants.h	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -367,6 +367,36 @@
         add_property<double>(PROPERTY_DOUBLE_VAR, "PropertyDoubleVar description", BOOST_SETTER_VAR(m_dVarDouble), BOOST_GETTER_VAR(m_dVarDouble), new BoolEditor());
         }
 
+	void add_category( const std::string &category_name )
+	{
+		property_group::add_category( category_name );
+	}
+
+	
+	template<typename Value_Type>
+	void add_property( std::string name, 
+					   std::string description,
+					   boost::function<void (const Value_Type&)> setter, 
+					   boost::function<Value_Type ()> getter )
+	{
+		property_group::add_property( name, description, setter, getter );
+	}
+
+	template<typename Value_Type>
+	void add_property( std::string name, 
+					   std::string description,
+					   boost::function<void (const Value_Type&)> setter, 
+					   boost::function<Value_Type ()> getter,
+					   Editor *pEditor )
+	{
+		property_group::add_property( name, description, setter, getter, pEditor );
+	}
+	
+	void clear_properties()
+	{
+		m_properties.clear();
+	}
+
         float GetFloat() const{return( m_fFloat1 );}
         void SetFloat( float fValue ){m_fFloat1 = fValue;}
         double GetDouble() const{return( m_dDouble );}
@@ -481,6 +511,11 @@
 #if defined(BOOST_MSVC)
     #pragma warning(pop)
 #endif
+	
+	void clear_actions()
+	{
+		m_actions.clear();
+	}
 
         void Action1(){bTriggeredAction1 = true;}
         void Action2(){bTriggeredAction2 = true;}
Modified: sandbox/pinhole/libs/pinhole/test/TestDoubleProperties.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestDoubleProperties.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestDoubleProperties.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,16 +7,22 @@
 
 // For more information, see http://www.boost.org
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
 
+// I can hide these two line if I don't do everything in headers
+boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
+event_source* event_source::m_instance = 0;
+
 BOOST_AUTO_TEST_CASE( TestSetGetDouble )
 {
     TestPropertyGroup_5 testGroup;
     
         double dValue;
-	set_as_string( PROPERTY_DOUBLE, PROPERTY_DOUBLE_STRING_VALUE );
-	BOOST_CHECK( from_string<double>(dValue, get_as_string( PROPERTY_DOUBLE), std::dec) );
-	CHECK_CLOSE( dValue, PROPERTY_DOUBLE_VALUE, 0.01 );
+	testGroup.set_as_string( PROPERTY_DOUBLE, PROPERTY_DOUBLE_STRING_VALUE );
+	BOOST_CHECK( from_string<double>(dValue, testGroup.get_as_string( PROPERTY_DOUBLE), std::dec) );
+	BOOST_CHECK_EQUAL( dValue, PROPERTY_DOUBLE_VALUE );
 }
 
 BOOST_AUTO_TEST_CASE( TestSetGetDoubleVar )
@@ -24,30 +30,31 @@
     TestPropertyGroup_5 testGroup;
     
         double dValue;
-	set_as_string( PROPERTY_DOUBLE_VAR, PROPERTY_DOUBLE_STRING_VALUE );
-	BOOST_CHECK( from_string<double>(dValue, get_as_string( PROPERTY_DOUBLE_VAR), std::dec) );
-	CHECK_CLOSE( dValue, PROPERTY_DOUBLE_VALUE, 0.01 );
+	testGroup.set_as_string( PROPERTY_DOUBLE_VAR, PROPERTY_DOUBLE_STRING_VALUE );
+	BOOST_CHECK( from_string<double>(dValue, testGroup.get_as_string( PROPERTY_DOUBLE_VAR), std::dec) );
+	BOOST_CHECK_EQUAL( dValue, PROPERTY_DOUBLE_VALUE );
 }
 
 BOOST_AUTO_TEST_CASE( TestDoublePropertyType )
 {
     TestPropertyGroup_5 testGroup;
     
-    BOOST_CHECK( typeid(bool) != GetTypeInfo(PROPERTY_DOUBLE_2) );
-    BOOST_CHECK( typeid(int) != GetTypeInfo(PROPERTY_DOUBLE_2) );
-    BOOST_CHECK( typeid(float) != GetTypeInfo(PROPERTY_DOUBLE_2) );
-    BOOST_CHECK( typeid(double) == GetTypeInfo(PROPERTY_DOUBLE_2) );
-    BOOST_CHECK( typeid(std::string) != GetTypeInfo(PROPERTY_DOUBLE_2) );
-
-	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(get_metadata( PROPERTY_DOUBLE_2 ));
-	BOOST_CHECK( get_metadata(PROPERTY_DOUBLE_2)->getEditorPropertyType() == DoubleType );
+    BOOST_CHECK( typeid(bool) != testGroup.get_type_info(PROPERTY_DOUBLE_2) );
+    BOOST_CHECK( typeid(int) != testGroup.get_type_info(PROPERTY_DOUBLE_2) );
+    BOOST_CHECK( typeid(float) != testGroup.get_type_info(PROPERTY_DOUBLE_2) );
+    BOOST_CHECK( typeid(double) == testGroup.get_type_info(PROPERTY_DOUBLE_2) );
+    BOOST_CHECK( typeid(std::string) != testGroup.get_type_info(PROPERTY_DOUBLE_2) );
+
+	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(testGroup.get_metadata( PROPERTY_DOUBLE_2 ));
+	BOOST_CHECK( pEditor != NULL );
+	BOOST_CHECK( testGroup.get_metadata(PROPERTY_DOUBLE_2)->getEditorPropertyType() == DoubleType );
 }
 
 BOOST_AUTO_TEST_CASE( TestDoubleGetUIOverrideType )
 {
     TestPropertyGroup_5 testGroup;
     
-	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(get_metadata( PROPERTY_DOUBLE_2 ));
+	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(testGroup.get_metadata( PROPERTY_DOUBLE_2 ));
         BOOST_CHECK( pEditor->GetControlType() == Tracker );
 }
 
@@ -55,7 +62,7 @@
 {
     TestPropertyGroup_5 testGroup;
     
-	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(get_metadata( PROPERTY_DOUBLE_2 ));
+	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(testGroup.get_metadata( PROPERTY_DOUBLE_2 ));
         BOOST_CHECK( DOUBLE_LOW == pEditor->getLowRange() );
         BOOST_CHECK( DOUBLE_HIGH == pEditor->getHighRange() );
         BOOST_CHECK( DOUBLE_INCREMENT == pEditor->getIncrement() );
@@ -65,7 +72,7 @@
 {
     TestPropertyGroup_5 testGroup;
     
-	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(get_metadata( PROPERTY_DOUBLE_2 ));
+	const DoubleEditor *pEditor = dynamic_cast<const DoubleEditor*>(testGroup.get_metadata( PROPERTY_DOUBLE_2 ));
         BOOST_CHECK( pEditor->UseRange() == true );
 }
 
@@ -73,6 +80,6 @@
 {
     TestAutoGeneratedDesigners testGroup;
     
-	const Editor* pEditor = get_metadata(PROPERTY_DOUBLE);
+	const Editor* pEditor = testGroup.get_metadata(PROPERTY_DOUBLE);
         BOOST_CHECK( NULL != dynamic_cast<const DoubleEditor*>(pEditor) );
 }
\ No newline at end of file
Modified: sandbox/pinhole/libs/pinhole/test/TestFloatProperties.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestFloatProperties.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestFloatProperties.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,16 +7,22 @@
 
 // For more information, see http://www.boost.org
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
 
+// I can hide these two line if I don't do everything in headers
+boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
+event_source* event_source::m_instance = 0;
+
 BOOST_AUTO_TEST_CASE( TestSetGetFloat )
 {
     TestPropertyGroup testGroup;
     
         float fValue;
-	set_as_string( PROPERTY_FLOAT_1, PROPERTY_FLOAT_1_STRING_VALUE );
-	BOOST_CHECK( from_string<float>(fValue, get_as_string(PROPERTY_FLOAT_1), std::dec) );
-	CHECK_CLOSE( PROPERTY_FLOAT_1_VALUE, fValue, 0.01f );
+	testGroup.set_as_string( PROPERTY_FLOAT_1, PROPERTY_FLOAT_1_STRING_VALUE );
+	BOOST_CHECK( from_string<float>(fValue, testGroup.get_as_string(PROPERTY_FLOAT_1), std::dec) );
+	BOOST_CHECK_EQUAL( PROPERTY_FLOAT_1_VALUE, fValue );
 }
 
 BOOST_AUTO_TEST_CASE( TestSetGetFloatVar )
@@ -24,30 +30,31 @@
     TestPropertyGroup testGroup;
     
         float fValue;
-	set_as_string( PROPERTY_FLOAT_1_VAR, PROPERTY_FLOAT_1_STRING_VALUE );
-	BOOST_CHECK( from_string<float>(fValue, get_as_string(PROPERTY_FLOAT_1_VAR), std::dec) );
-	CHECK_CLOSE( PROPERTY_FLOAT_1_VALUE, fValue, 0.01f );
+	testGroup.set_as_string( PROPERTY_FLOAT_1_VAR, PROPERTY_FLOAT_1_STRING_VALUE );
+	BOOST_CHECK( from_string<float>(fValue, testGroup.get_as_string(PROPERTY_FLOAT_1_VAR), std::dec) );
+	BOOST_CHECK_EQUAL( PROPERTY_FLOAT_1_VALUE, fValue );
 }
 
 BOOST_AUTO_TEST_CASE( TestFloatPropertyType )
 {
     TestPropertyGroup_4 testGroup;
     
-    BOOST_CHECK( typeid(bool) != GetTypeInfo(PROPERTY_FLOAT_1) );
-    BOOST_CHECK( typeid(int) != GetTypeInfo(PROPERTY_FLOAT_1) );
-    BOOST_CHECK( typeid(float) == GetTypeInfo(PROPERTY_FLOAT_1) );
-    BOOST_CHECK( typeid(double) != GetTypeInfo(PROPERTY_FLOAT_1) );
-    BOOST_CHECK( typeid(std::string) != GetTypeInfo(PROPERTY_FLOAT_1) );
-
-	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(get_metadata( PROPERTY_FLOAT_1 ));
-	BOOST_CHECK( get_metadata(PROPERTY_FLOAT_1)->getEditorPropertyType() == FloatType );
+    BOOST_CHECK( typeid(bool) != testGroup.get_type_info(PROPERTY_FLOAT_1) );
+    BOOST_CHECK( typeid(int) != testGroup.get_type_info(PROPERTY_FLOAT_1) );
+    BOOST_CHECK( typeid(float) == testGroup.get_type_info(PROPERTY_FLOAT_1) );
+    BOOST_CHECK( typeid(double) != testGroup.get_type_info(PROPERTY_FLOAT_1) );
+    BOOST_CHECK( typeid(std::string) != testGroup.get_type_info(PROPERTY_FLOAT_1) );
+
+	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(testGroup.get_metadata( PROPERTY_FLOAT_1 ));
+	BOOST_CHECK( pEditor != NULL );
+	BOOST_CHECK( testGroup.get_metadata(PROPERTY_FLOAT_1)->getEditorPropertyType() == FloatType );
 }
 
 BOOST_AUTO_TEST_CASE( TestFloatGetControlType )
 {
     TestPropertyGroup_4 testGroup;
     
-	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(get_metadata( PROPERTY_FLOAT_1 ));
+	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(testGroup.get_metadata( PROPERTY_FLOAT_1 ));
         BOOST_CHECK( pEditor->GetControlType() == EditBox );
 }
 
@@ -55,7 +62,7 @@
 {
     TestPropertyGroup_4 testGroup;
     
-	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(get_metadata( PROPERTY_FLOAT_2 ));
+	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(testGroup.get_metadata( PROPERTY_FLOAT_2 ));
         BOOST_CHECK( pEditor->GetControlType() == Tracker );
 }
 
@@ -63,17 +70,17 @@
 {
     TestPropertyGroup_4 testGroup;
     
-	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(get_metadata( PROPERTY_FLOAT_2 ));
-	CHECK_CLOSE( FLOAT_LOW, pEditor->getLowRange(), 0.01f );
-	CHECK_CLOSE( FLOAT_HIGH, pEditor->getHighRange(), 0.01f );
-	CHECK_CLOSE( FLOAT_INCREMENT, pEditor->getIncrement(), 0.01f );
+	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(testGroup.get_metadata( PROPERTY_FLOAT_2 ));
+	BOOST_CHECK_EQUAL( FLOAT_LOW, pEditor->getLowRange() );
+	BOOST_CHECK_EQUAL( FLOAT_HIGH, pEditor->getHighRange() );
+	BOOST_CHECK_EQUAL( FLOAT_INCREMENT, pEditor->getIncrement() );
 }
 
 BOOST_AUTO_TEST_CASE( TestFloatGetRange )
 {
     TestPropertyGroup_4 testGroup;
     
-	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(get_metadata( PROPERTY_FLOAT_2 ));
+	const FloatEditor *pEditor = dynamic_cast<const FloatEditor*>(testGroup.get_metadata( PROPERTY_FLOAT_2 ));
         BOOST_CHECK( pEditor->UseRange() == true );
 }
 
@@ -81,7 +88,7 @@
 {
     TestAutoGeneratedDesigners testGroup;
     
-	const Editor* pEditor = get_metadata(PROPERTY_FLOAT_1);
+	const Editor* pEditor = testGroup.get_metadata(PROPERTY_FLOAT_1);
         BOOST_CHECK( NULL != dynamic_cast<const FloatEditor*>(pEditor) );
 }
 
@@ -89,6 +96,6 @@
 {
     TestUpDownGroup testGroup;
     
-	const Editor* pEditor = get_metadata(PROPERTY_FLOAT_1);
+	const Editor* pEditor = testGroup.get_metadata(PROPERTY_FLOAT_1);
         BOOST_CHECK( pEditor->GetControlType() == UpDown );
 }
\ No newline at end of file
Modified: sandbox/pinhole/libs/pinhole/test/TestIntegerProperties.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestIntegerProperties.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestIntegerProperties.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,8 +7,14 @@
 
 // For more information, see http://www.boost.org
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
 
+// I can hide these two line if I don't do everything in headers
+boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
+event_source* event_source::m_instance = 0;
+
 BOOST_AUTO_TEST_CASE( TestIntegerSetGet )
 {
     TestPropertyGroup testGroup;
@@ -33,14 +39,15 @@
 {
     TestPropertyGroup_4 testGroup;
     
-    BOOST_CHECK( typeid(bool) != testGroup.GetTypeInfo(PROPERTY_INT_1) );
-    BOOST_CHECK( typeid(int) == testGroup.GetTypeInfo(PROPERTY_INT_1) );
-    BOOST_CHECK( typeid(float) != testGroup.GetTypeInfo(PROPERTY_INT_1) );
-    BOOST_CHECK( typeid(double) != testGroup.GetTypeInfo(PROPERTY_INT_1) );
-    BOOST_CHECK( typeid(std::string) != testGroup.GetTypeInfo(PROPERTY_INT_1) );
+    BOOST_CHECK( typeid(bool) != testGroup.get_type_info(PROPERTY_INT_1) );
+    BOOST_CHECK( typeid(int) == testGroup.get_type_info(PROPERTY_INT_1) );
+    BOOST_CHECK( typeid(float) != testGroup.get_type_info(PROPERTY_INT_1) );
+    BOOST_CHECK( typeid(double) != testGroup.get_type_info(PROPERTY_INT_1) );
+    BOOST_CHECK( typeid(std::string) != testGroup.get_type_info(PROPERTY_INT_1) );
 
         const IntegerEditor *pEditor = dynamic_cast<const IntegerEditor*>(testGroup.get_metadata( PROPERTY_INT_1 ));
         BOOST_CHECK( pEditor != NULL );
+	BOOST_CHECK( testGroup.get_metadata(PROPERTY_INT_1)->getEditorPropertyType() == IntegerType );
 }
 
 BOOST_AUTO_TEST_CASE( TestIntegerHighLowIncrement )
@@ -78,19 +85,11 @@
         BOOST_CHECK( pEditor->GetControlType() == EditBox );
 }
 
-BOOST_AUTO_TEST_CASE( TestIntegerPropertyType )
-{
-    TestPropertyGroup_4 testGroup;
-    
-	const IntegerEditor *pEditor = dynamic_cast<const IntegerEditor*>(testGroup.get_metadata( PROPERTY_INT_1 ));
-	BOOST_CHECK( get_metadata(PROPERTY_INT_1)->getEditorPropertyType() == IntegerType );
-}
-
 BOOST_AUTO_TEST_CASE( TestIntegerGetEditorTypeFailure )
 {
     TestPropertyGroup_5 testGroup;
     
-	CHECK_THROW( testGroup.get_metadata( PROPERTY_INT_1 ), NoPropertyEditorDefinedError );
+	BOOST_CHECK_THROW( testGroup.get_metadata( PROPERTY_INT_1 ), no_metadata_defined_error );
 }
 
 BOOST_AUTO_TEST_CASE( TestAutoGeneratedDesignerInt )
Modified: sandbox/pinhole/libs/pinhole/test/TestPropertyGroupWrapper.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestPropertyGroupWrapper.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestPropertyGroupWrapper.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,9 +7,15 @@
 
 // For more information, see http://www.boost.org
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
 #include <boost/pinhole/property_group_wrapper.h>
 
+// I can hide these two line if I don't do everything in headers
+boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
+event_source* event_source::m_instance = 0;
+
 BOOST_AUTO_TEST_CASE( TestPropertyGroupWrapper_Bool )
 {
         TestPropertyGroup_4 baseObject;
@@ -19,13 +25,13 @@
         // Test Standard Creation
         wrapper.AddProperty<bool>(PROPERTY_BOOL, "PropertyBool description", boost::bind(&TestPropertyGroup_4::SetBool, &baseObject, _1), boost::bind(&TestPropertyGroup_4::GetBool, &baseObject), new BoolEditor());
 
-	wrapper.set_as_string( PROPERTY_BOOL, BOOL_FALSE );
-	BOOST_CHECK( wrapper.get_as_string( PROPERTY_BOOL ) == BOOL_FALSE );
+	wrapper.testGroup.set_as_string( PROPERTY_BOOL, BOOL_FALSE );
+	BOOST_CHECK( wrapper.testGroup.get_as_string( PROPERTY_BOOL ) == BOOL_FALSE );
         
-	wrapper.set_as_string( PROPERTY_BOOL, BOOL_TRUE );
-	BOOST_CHECK( wrapper.get_as_string( PROPERTY_BOOL ) == BOOL_TRUE );
+	wrapper.testGroup.set_as_string( PROPERTY_BOOL, BOOL_TRUE );
+	BOOST_CHECK( wrapper.testGroup.get_as_string( PROPERTY_BOOL ) == BOOL_TRUE );
 
-	pEditor = wrapper.get_metadata( PROPERTY_BOOL );
+	pEditor = wrapper.testGroup.get_metadata( PROPERTY_BOOL );
         BOOST_CHECK( pEditor->getEditorPropertyType() == BooleanType );
         BOOST_CHECK( pEditor->GetControlType() == Radio );
 
@@ -34,7 +40,7 @@
 
         wrapperAutoGenDesigner.AddProperty<bool>(PROPERTY_BOOL, "PropertyBool description", boost::bind(&TestPropertyGroup_4::SetBool, &baseObject, _1), boost::bind(&TestPropertyGroup_4::GetBool, &baseObject) );
 
-	pEditor = wrapperAutoGenDesigner.get_metadata(PROPERTY_BOOL);
+	pEditor = wrapperAutoGenDesigner.testGroup.get_metadata(PROPERTY_BOOL);
         BOOST_CHECK( NULL != dynamic_cast<const BoolEditor*>(pEditor) );
 }
 
@@ -48,11 +54,11 @@
         wrapper.AddProperty<double>(PROPERTY_DOUBLE,  "PropertyDouble description", boost::bind(&TestPropertyGroup_5::SetDouble, &baseObject, _1), boost::bind(&TestPropertyGroup_5::GetDouble, &baseObject), new DoubleEditor() );
 
         double dValue;
-	wrapper.set_as_string( PROPERTY_DOUBLE, PROPERTY_DOUBLE_STRING_VALUE );
-	BOOST_CHECK( from_string<double>(dValue, wrapper.get_as_string( PROPERTY_DOUBLE), std::dec) );
+	wrapper.testGroup.set_as_string( PROPERTY_DOUBLE, PROPERTY_DOUBLE_STRING_VALUE );
+	BOOST_CHECK( from_string<double>(dValue, wrapper.testGroup.get_as_string( PROPERTY_DOUBLE), std::dec) );
         CHECK_CLOSE( dValue, PROPERTY_DOUBLE_VALUE, 0.01 );
 
-	pEditor = wrapper.get_metadata( PROPERTY_DOUBLE );
+	pEditor = wrapper.testGroup.get_metadata( PROPERTY_DOUBLE );
         BOOST_CHECK( pEditor->getEditorPropertyType() == DoubleType );
         BOOST_CHECK( pEditor->GetControlType() == EditBox );
 
@@ -61,7 +67,7 @@
 
         wrapperAutoGenDesigner.AddProperty<double>(PROPERTY_DOUBLE,  "PropertyDouble description", boost::bind(&TestPropertyGroup_5::SetDouble, &baseObject, _1), boost::bind(&TestPropertyGroup_5::GetDouble, &baseObject) );
 
-	pEditor = wrapperAutoGenDesigner.get_metadata(PROPERTY_DOUBLE);
+	pEditor = wrapperAutoGenDesigner.testGroup.get_metadata(PROPERTY_DOUBLE);
         BOOST_CHECK( NULL != dynamic_cast<const DoubleEditor*>(pEditor) );
 }
 
@@ -75,11 +81,11 @@
         wrapper.AddProperty<float>(PROPERTY_FLOAT_1,  "PropertyFloat1 description", boost::bind(&TestPropertyGroup_4::SetFloat, &baseObject, _1), boost::bind(&TestPropertyGroup_4::GetFloat, &baseObject), new FloatEditor() );
 
         float fValue;
-	wrapper.set_as_string( PROPERTY_FLOAT_1, PROPERTY_FLOAT_1_STRING_VALUE );
-	BOOST_CHECK( from_string<float>(fValue, wrapper.get_as_string(PROPERTY_FLOAT_1), std::dec) );
+	wrapper.testGroup.set_as_string( PROPERTY_FLOAT_1, PROPERTY_FLOAT_1_STRING_VALUE );
+	BOOST_CHECK( from_string<float>(fValue, wrapper.testGroup.get_as_string(PROPERTY_FLOAT_1), std::dec) );
         CHECK_CLOSE( fValue, PROPERTY_FLOAT_1_VALUE, 0.01 );
 
-	pEditor = wrapper.get_metadata( PROPERTY_FLOAT_1 );
+	pEditor = wrapper.testGroup.get_metadata( PROPERTY_FLOAT_1 );
         BOOST_CHECK( pEditor->getEditorPropertyType() == FloatType );
         BOOST_CHECK( pEditor->GetControlType() == EditBox );
 
@@ -88,7 +94,7 @@
 
         wrapperAutoGenDesigner.AddProperty<float>(PROPERTY_FLOAT_1,  "PropertyFloat1 description", boost::bind(&TestPropertyGroup_4::SetFloat, &baseObject, _1), boost::bind(&TestPropertyGroup_4::GetFloat, &baseObject) );
 
-	pEditor = wrapperAutoGenDesigner.get_metadata(PROPERTY_FLOAT_1);
+	pEditor = wrapperAutoGenDesigner.testGroup.get_metadata(PROPERTY_FLOAT_1);
         BOOST_CHECK( NULL != dynamic_cast<const FloatEditor*>(pEditor) );
 }
 
@@ -102,11 +108,11 @@
         wrapper.AddProperty<int>(PROPERTY_INT_1, "PropertyInt1 description", boost::bind(&TestPropertyGroup_4::SetInt, &baseObject, _1), boost::bind(&TestPropertyGroup_4::GetInt, &baseObject), new IntegerEditor(INT_LOW, INT_HIGH, INT_INCREMENT, DropDown));
 
         int iValue;
-	wrapper.set_as_string( PROPERTY_INT_1, PROPERTY_INT_1_STRING_VALUE );
-	BOOST_CHECK( from_string<int>(iValue, wrapper.get_as_string(PROPERTY_INT_1), std::dec) );
+	wrapper.testGroup.set_as_string( PROPERTY_INT_1, PROPERTY_INT_1_STRING_VALUE );
+	BOOST_CHECK( from_string<int>(iValue, wrapper.testGroup.get_as_string(PROPERTY_INT_1), std::dec) );
         BOOST_CHECK_EQUAL( iValue, PROPERTY_INT_1_VALUE );
 
-	pEditor = wrapper.get_metadata( PROPERTY_INT_1 );
+	pEditor = wrapper.testGroup.get_metadata( PROPERTY_INT_1 );
         BOOST_CHECK( pEditor->getEditorPropertyType() == IntegerType );
         BOOST_CHECK( pEditor->GetControlType() == DropDown );
 
@@ -115,7 +121,7 @@
 
         wrapperAutoGenDesigner.AddProperty<int>(PROPERTY_INT_1, "PropertyInt1 description", boost::bind(&TestPropertyGroup_4::SetInt, &baseObject, _1), boost::bind(&TestPropertyGroup_4::GetInt, &baseObject) );
 
-	pEditor = wrapperAutoGenDesigner.get_metadata(PROPERTY_INT_1);
+	pEditor = wrapperAutoGenDesigner.testGroup.get_metadata(PROPERTY_INT_1);
         BOOST_CHECK( NULL != dynamic_cast<const IntegerEditor*>(pEditor) );
 }
 
@@ -128,12 +134,12 @@
         // Test Standard Creation
         wrapper.AddProperty<string>(PROPERTY_STRING_2,  "PropertyString2 description", boost::bind(&TestPropertyGroup::SetPropertyString2, &baseObject, _1), boost::bind(&TestPropertyGroup::GetPropertyString2, &baseObject), new StringEditor());
 
-	wrapper.set_as_string( PROPERTY_STRING_2, PROPERTY_STRING_2_VALUE );
-	BOOST_CHECK( PROPERTY_STRING_2_VALUE == wrapper.get_as_string( PROPERTY_STRING_2) );
-	wrapper.set_as_string( PROPERTY_STRING_2, PROPERTY_STRING_1_VALUE );
-	BOOST_CHECK( PROPERTY_STRING_1_VALUE == wrapper.get_as_string( PROPERTY_STRING_2) );
+	wrapper.testGroup.set_as_string( PROPERTY_STRING_2, PROPERTY_STRING_2_VALUE );
+	BOOST_CHECK( PROPERTY_STRING_2_VALUE == wrapper.testGroup.get_as_string( PROPERTY_STRING_2) );
+	wrapper.testGroup.set_as_string( PROPERTY_STRING_2, PROPERTY_STRING_1_VALUE );
+	BOOST_CHECK( PROPERTY_STRING_1_VALUE == wrapper.testGroup.get_as_string( PROPERTY_STRING_2) );
 
-	pEditor = wrapper.get_metadata( PROPERTY_STRING_2 );
+	pEditor = wrapper.testGroup.get_metadata( PROPERTY_STRING_2 );
         BOOST_CHECK( pEditor->getEditorPropertyType() == StringType );
         BOOST_CHECK( pEditor->GetControlType() == EditBox );
 
@@ -142,6 +148,6 @@
 
         wrapperAutoGenDesigner.AddProperty<string>(PROPERTY_STRING_2,  "PropertyString2 description", boost::bind(&TestPropertyGroup::SetPropertyString2, &baseObject, _1), boost::bind(&TestPropertyGroup::GetPropertyString2, &baseObject) );
 
-	pEditor = wrapperAutoGenDesigner.get_metadata(PROPERTY_STRING_2);
+	pEditor = wrapperAutoGenDesigner.testGroup.get_metadata(PROPERTY_STRING_2);
         BOOST_CHECK( NULL != dynamic_cast<const StringEditor*>(pEditor) );
 }
\ No newline at end of file
Modified: sandbox/pinhole/libs/pinhole/test/TestPropertyGroups.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestPropertyGroups.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestPropertyGroups.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,7 +7,14 @@
 
 // For more information, see http://www.boost.org
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
+#include <boost/pinhole/find.h>
+
+// I can hide these two line if I don't do everything in headers
+boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
+event_source* event_source::m_instance = 0;
 
 class TestPropertyManager : public property_manager
 {
@@ -28,7 +35,7 @@
         }
     ~TestPropertyManager()
     {
-        property_manager::m_instance.release();
+        property_manager::m_instance.reset();
     }
         virtual property_group* select_single_node(property_group* pCurrentPropertyGroup, const string& xpath)
         {
@@ -66,35 +73,45 @@
         unsigned int uiAddCategoryCallCount;
 };
 
-TEST_FIXTURE( TestPropertyGroup, TestPropertyParent )
+BOOST_AUTO_TEST_CASE( TestPropertyParent )
 {
-	BOOST_CHECK( get_parent() == NULL );
-	BOOST_CHECK( m_child1.get_parent() == (property_group*)this );
+	TestPropertyGroup testGroup;
+	
+	BOOST_CHECK( testGroup.get_parent() == NULL );
+	BOOST_CHECK( testGroup.m_child1.get_parent() == (property_group*)&testGroup );
 }
 
-TEST_FIXTURE( TestPropertyGroup, TestPropertyGroupGetName )
+BOOST_AUTO_TEST_CASE( TestPropertyGroupGetName )
 {
-	BOOST_CHECK( get_name() == PROPERTY_GROUP_NAME );
+	TestPropertyGroup testGroup;
+	
+	BOOST_CHECK( testGroup.get_name() == PROPERTY_GROUP_NAME );
 }
 
-TEST_FIXTURE( TestPropertyGroup_4, TestBogusPropertyNameForEditor )
+BOOST_AUTO_TEST_CASE( TestBogusPropertyNameForEditor )
 {
-	CHECK_THROW( const Editor *pEditor = get_metadata( "bogus property name" ), std::out_of_range );
+	TestPropertyGroup_4 testGroup;
+	
+	BOOST_CHECK_THROW( testGroup.get_metadata( "bogus property name" ), std::out_of_range );
 }
 
-BOOST_TEST( TestDynamicAddingAndReadingOfPropertyGroups )
+BOOST_AUTO_TEST_CASE( TestDynamicAddingAndReadingOfPropertyGroups )
 {
         // TODO: implement test for dynamic property groups
 }
 
-TEST_FIXTURE( TestPropertyGroup_5, TestNumberOfProperties )
+BOOST_AUTO_TEST_CASE( TestNumberOfProperties )
 {
-	BOOST_CHECK_EQUAL( prop_count(), 7 );
+	TestPropertyGroup_5 testGroup;
+	
+	BOOST_CHECK_EQUAL( testGroup.prop_count(), 7u );
 }
 
-TEST_FIXTURE( TestPropertyGroup_5, TestPropertyIteration )
+BOOST_AUTO_TEST_CASE( TestPropertyIteration )
 {
-	prop_iterator itr = prop_begin();
+	TestPropertyGroup_5 testGroup;
+	
+	property_group::prop_iterator itr = testGroup.prop_begin();
     BOOST_CHECK_EQUAL( (*itr), PROPERTY_BOOL );
     ++itr;
     BOOST_CHECK_EQUAL( (*itr), PROPERTY_DOUBLE );
@@ -109,95 +126,97 @@
     ++itr;
     BOOST_CHECK_EQUAL( (*itr), PROPERTY_STRING_2 );
     ++itr;
-    BOOST_CHECK( prop_end() == itr );
+    BOOST_CHECK( testGroup.prop_end() == itr );
 }
 
-TEST_FIXTURE( TestPropertyGroup_5, TestPropertyGroupCategory )
+BOOST_AUTO_TEST_CASE( TestPropertyGroupCategory )
 {
-	AddCategory( PROPERTY_GROUP_CATEGORY1 );
-	AddCategory( PROPERTY_GROUP_CATEGORY2 );
-	AddCategory( PROPERTY_GROUP_CATEGORY3 );
-	AddCategory( PROPERTY_GROUP_CATEGORY3 );	// duplicate should not be inserted
+	TestPropertyGroup_5 testGroup;
+	
+	testGroup.add_category( PROPERTY_GROUP_CATEGORY1 );
+	testGroup.add_category( PROPERTY_GROUP_CATEGORY2 );
+	testGroup.add_category( PROPERTY_GROUP_CATEGORY3 );
+	testGroup.add_category( PROPERTY_GROUP_CATEGORY3 );	// duplicate should not be inserted
 
-	BOOST_CHECK( get_category_collection().size() == 4 );	// there is also an 'All' category which automatically gets added
+	BOOST_CHECK( testGroup.get_category_collection().size() == 4 );	// there is also an 'All' category which automatically gets added
 
-	CategoryCollection::const_iterator pos = find( get_category_collection().begin(), get_category_collection().end(), PROPERTY_GROUP_CATEGORY1 );
+	category_collection::const_iterator pos = find( testGroup.get_category_collection().begin(), testGroup.get_category_collection().end(), PROPERTY_GROUP_CATEGORY1 );
         BOOST_CHECK( *pos == PROPERTY_GROUP_CATEGORY1 );
-	pos = find( get_category_collection().begin(), get_category_collection().end(), PROPERTY_GROUP_CATEGORY2 );
+	pos = find( testGroup.get_category_collection().begin(), testGroup.get_category_collection().end(), PROPERTY_GROUP_CATEGORY2 );
         BOOST_CHECK( *pos == PROPERTY_GROUP_CATEGORY2 );
-	pos = find( get_category_collection().begin(), get_category_collection().end(), PROPERTY_GROUP_CATEGORY3 );
+	pos = find( testGroup.get_category_collection().begin(), testGroup.get_category_collection().end(), PROPERTY_GROUP_CATEGORY3 );
         BOOST_CHECK( *pos == PROPERTY_GROUP_CATEGORY3 );
-	pos = find( get_category_collection().begin(), get_category_collection().end(), "bogus category" );
-	BOOST_CHECK( pos == get_category_collection().end() );
+	pos = find( testGroup.get_category_collection().begin(), testGroup.get_category_collection().end(), "bogus category" );
+	BOOST_CHECK( pos == testGroup.get_category_collection().end() );
 }
 
 
-TEST_FIXTURE( TestPropertyGroup_5, TestSingletonPropertyManager )
+BOOST_AUTO_TEST_CASE( TestSingletonPropertyManager )
 {
         TestPropertyManager manager;
 
-    BOOST_CHECK( property_manager::Instance() == &manager );
+    BOOST_CHECK( property_manager::instance() == &manager );
 }
 
-BOOST_TEST( TestSetParent )
+BOOST_AUTO_TEST_CASE( TestSetParent )
 {
         TestPropertyManager manager;
 
         // The first item should parent to root
         TestPropertyChildGroup_1 rootGroup(NULL);
-	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 1 );
-	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0 );
-	BOOST_CHECK_EQUAL( manager.uiChildCount, 1 );
+	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 1u );
+	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0u );
+	BOOST_CHECK_EQUAL( manager.uiChildCount, 1u );
 
         // The second item should parent to the first
         TestPropertyChildGroup_1 childGroup(&rootGroup);
-	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 2 );
-	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0 );
-	BOOST_CHECK_EQUAL( manager.uiChildCount, 1 );
-	BOOST_CHECK_EQUAL( rootGroup.get_children_collection().size(), 1 );
+	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 2u );
+	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0u );
+	BOOST_CHECK_EQUAL( manager.uiChildCount, 1u );
+	BOOST_CHECK_EQUAL( rootGroup.get_children_collection().size(), 1u );
         BOOST_CHECK( &rootGroup == childGroup.get_parent() );
 
         // Reparent child to root
         childGroup.set_parent(NULL);
-	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 3 );
-	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 1 );
-	BOOST_CHECK_EQUAL( manager.uiChildCount, 2 );
-	BOOST_CHECK_EQUAL( rootGroup.get_children_collection().size(), 0 );
+	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 3u );
+	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 1u );
+	BOOST_CHECK_EQUAL( manager.uiChildCount, 2u );
+	BOOST_CHECK_EQUAL( rootGroup.get_children_collection().size(), 0u );
         BOOST_CHECK( NULL == childGroup.get_parent() );
 
         // Reparent child to rootGroup
         childGroup.set_parent(&rootGroup);
-	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 4 );
-	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 2 );
-	BOOST_CHECK_EQUAL( manager.uiChildCount, 1 );
-	BOOST_CHECK_EQUAL( rootGroup.get_children_collection().size(), 1 );
+	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 4u );
+	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 2u );
+	BOOST_CHECK_EQUAL( manager.uiChildCount, 1u );
+	BOOST_CHECK_EQUAL( rootGroup.get_children_collection().size(), 1u );
         BOOST_CHECK( &rootGroup == childGroup.get_parent() );
 }
 
-BOOST_TEST( TestAutoReparentToRootInDestructor )
+BOOST_AUTO_TEST_CASE( TestAutoReparentToRootInDestructor )
 {
         TestPropertyManager manager;
 
         // The first item should parent to root
         TestPropertyChildGroup_1 *pRootGroup = new TestPropertyChildGroup_1(NULL);
-	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 1 );
-	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0 );
-	BOOST_CHECK_EQUAL( manager.uiChildCount, 1 );
+	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 1u );
+	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0u );
+	BOOST_CHECK_EQUAL( manager.uiChildCount, 1u );
 
         // The second item should parent to the first
         TestPropertyChildGroup_1 childGroup(pRootGroup);
-	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 2 );
-	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0 );
-	BOOST_CHECK_EQUAL( manager.uiChildCount, 1 );
-	BOOST_CHECK_EQUAL( pRootGroup->getChildrenCollection().size(), 1 );
+	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 2u );
+	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 0u );
+	BOOST_CHECK_EQUAL( manager.uiChildCount, 1u );
+	BOOST_CHECK_EQUAL( pRootGroup->get_children_collection().size(), 1u );
         BOOST_CHECK( pRootGroup == childGroup.get_parent() );
 
         // Delete rootGroup.
         // This should cause childGroup to be reparented to root.
         delete pRootGroup;
-	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 3 );
-	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 2 );
-	BOOST_CHECK_EQUAL( manager.uiChildCount, 1 );
+	BOOST_CHECK_EQUAL( manager.uiRegisterPropertyGroupCallCount, 3u );
+	BOOST_CHECK_EQUAL( manager.uiUnRegisterPropertyGroupCallCount, 2u );
+	BOOST_CHECK_EQUAL( manager.uiChildCount, 1u );
         BOOST_CHECK( NULL == childGroup.get_parent() );
 }
 
@@ -207,16 +226,17 @@
 // properly re-hook the function pointers up to the new object. This stops crashes in
 // the system, though the object should provide it's own copy constructor to add the new
 // properties in which case this wouldn't be an issue.
-TEST_FIXTURE( TestPropertyGroup_5, TestNoCopyConstructorProperties )
+BOOST_AUTO_TEST_CASE( TestNoCopyConstructorProperties )
 {
+	TestPropertyGroup_5 testGroup;
         // For this test, TestPropertyGroup_5 shouldn't have a copy constructor
-	TestPropertyGroup_5 copiedGroup( *this );
+	TestPropertyGroup_5 copiedGroup( testGroup );
 
-	BOOST_CHECK_EQUAL( copiedGroup.prop_count(), 0 );
+	BOOST_CHECK_EQUAL( copiedGroup.prop_count(), 0u );
 
         // This is here, because if this test fails, and we don't clear
-	// the properties, the tes app will hang when copiedGroup is destroyed.
-	m_properties.clear();
+	// the properties, and the test app can hang when copiedGroup is destroyed.
+	testGroup.clear_properties();
 }
 
 // This is counter intuitive, but by default, if an object inherits from property_group,
@@ -225,41 +245,46 @@
 // properly re-hook the function pointers up to the new object. This stops crashes in
 // the system, though the object should provide it's own copy constructor to add the new
 // actions in which case this wouldn't be an issue.
-TEST_FIXTURE( TestActionsFixture, TestNoCopyConstructorActions )
+BOOST_AUTO_TEST_CASE( TestNoCopyConstructorActions )
 {
+	TestActionsFixture testGroup;
         // For this test, TestActionsFixture shouldn't have a copy constructor
-	TestActionsFixture copiedGroup( *this );
+	TestActionsFixture copiedGroup( testGroup );
 
-	BOOST_CHECK_EQUAL( copiedGroup.action_count(), 0 );
+	BOOST_CHECK_EQUAL( copiedGroup.action_count(), 0u );
 
         // This is here, because if this test fails, and we don't clear
         // the actions, the test app will hang when copiedGroup is destroyed.
-	m_actions.clear();
+	testGroup.clear_actions();
 }
 
-TEST_FIXTURE( TestPropertyGroup_5, TestCopyConstructor_RootObject )
+BOOST_AUTO_TEST_CASE( TestCopyConstructor_RootObject )
 {
-	TestPropertyGroup_5 copiedGroup( *this );
+	TestPropertyGroup_5 testGroup;
+	TestPropertyGroup_5 copiedGroup( testGroup );
 
         BOOST_CHECK_EQUAL( copiedGroup.get_name().compare(PROPERTY_GROUP_NAME), 0 );
         BOOST_CHECK( NULL == copiedGroup.get_parent() );
 
         // This is here, because if Copy Constructor isn't right, and we don't clear
         // the properties, the test app will hang when copied Group is destroyed.
-	m_properties.clear();
+	testGroup.clear_properties();
 }
 
-TEST_FIXTURE( TestPropertyGroup_5, TestCopyConstructor_ChildObject )
+BOOST_AUTO_TEST_CASE( TestCopyConstructor_ChildObject )
 {
-	TestPropertyChildGroup_1 group(this);
-	TestPropertyChildGroup_1 copiedGroup(group);
+	TestPropertyGroup_5 testGroup;
+	TestPropertyChildGroup_1 group(&testGroup);
+	TestPropertyChildGroup_1 copiedGroup(&group);
 
         BOOST_CHECK_EQUAL( copiedGroup.get_name().compare(PROPERTY_GROUP_CHILD_NAME), 0 );
-	BOOST_CHECK( this == copiedGroup.get_parent() );
+	BOOST_CHECK( &testGroup == copiedGroup.get_parent() );
 }
 
-TEST_FIXTURE( TestPropertyGroup, TestIsReadOnly )
+BOOST_AUTO_TEST_CASE( TestIsReadOnly )
 {
-	BOOST_CHECK_EQUAL( IsReadOnly(PROPERTY_STRING_1), true );
-	BOOST_CHECK_EQUAL( IsReadOnly(PROPERTY_FLOAT_1), false );
+	TestPropertyGroup testGroup;
+	
+	BOOST_CHECK_EQUAL( testGroup.is_read_only(PROPERTY_STRING_1), true );
+	BOOST_CHECK_EQUAL( testGroup.is_read_only(PROPERTY_FLOAT_1), false );
 }
\ No newline at end of file
Modified: sandbox/pinhole/libs/pinhole/test/TestSerializer.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestSerializer.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestSerializer.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,9 +1,15 @@
 #pragma once
 
+#define BOOST_TEST_MODULE PinholeLib
+#include <boost/test/unit_test.hpp>
 #include "TestClassesAndConstants.h"
 #include <boost/pinhole/PropertySerializer.h>
 #include <fstream>
 
+// I can hide these two line if I don't do everything in headers
+boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
+event_source* event_source::m_instance = 0;
+
 #define FILE_PATH "C:\\TestOutput.xml"
 
 using namespace MscProperty;
@@ -77,31 +83,31 @@
 
     // Setup changes in root object
 
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_FLOAT_1), "2.45");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_INT_1), "365");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
-
-    pRootGroup->set_as_string(PROPERTY_FLOAT_1, "3.33");
-    pRootGroup->set_as_string(PROPERTY_INT_1, "567");
-    pRootGroup->set_as_string(PROPERTY_STRING_2, "a different string");
-
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_FLOAT_1), "3.33");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_INT_1), "567");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_STRING_2), "a different string");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_FLOAT_1), "2.45");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_INT_1), "365");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
+
+    pRootGroup->testGroup.set_as_string(PROPERTY_FLOAT_1, "3.33");
+    pRootGroup->testGroup.set_as_string(PROPERTY_INT_1, "567");
+    pRootGroup->testGroup.set_as_string(PROPERTY_STRING_2, "a different string");
+
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_FLOAT_1), "3.33");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_INT_1), "567");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_STRING_2), "a different string");
 
     // Setup changes in child object
 
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_FLOAT_1), "2.45");
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_INT_1), "365");
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
-
-    childGroup.set_as_string(PROPERTY_FLOAT_1, "3.33");
-    childGroup.set_as_string(PROPERTY_INT_1, "567");
-    childGroup.set_as_string(PROPERTY_STRING_2, "a different string");
-
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_FLOAT_1), "3.33");
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_INT_1), "567");
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_STRING_2), "a different string");
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_FLOAT_1), "2.45");
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_INT_1), "365");
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
+
+    childGroup.testGroup.set_as_string(PROPERTY_FLOAT_1, "3.33");
+    childGroup.testGroup.set_as_string(PROPERTY_INT_1, "567");
+    childGroup.testGroup.set_as_string(PROPERTY_STRING_2, "a different string");
+
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_FLOAT_1), "3.33");
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_INT_1), "567");
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_STRING_2), "a different string");
 
     // Deserialize
 
@@ -109,13 +115,13 @@
 
     // Validate everything is reset
 
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_FLOAT_1), "2.45");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_INT_1), "365");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
-
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_FLOAT_1), "2.45");
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_INT_1), "365");
-    BOOST_CHECK_EQUAL( childGroup.get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_FLOAT_1), "2.45");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_INT_1), "365");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
+
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_FLOAT_1), "2.45");
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_INT_1), "365");
+    BOOST_CHECK_EQUAL( childGroup.testGroup.get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
 
     CoUninitialize();
 }
@@ -135,21 +141,21 @@
 
     // Setup changes in root object
 
-    pRootGroup->set_as_string(PROPERTY_FLOAT_1, "3.33");
-    pRootGroup->set_as_string(PROPERTY_INT_1, "567");
-    pRootGroup->set_as_string(PROPERTY_STRING_2, "a different string");
+    pRootGroup->testGroup.set_as_string(PROPERTY_FLOAT_1, "3.33");
+    pRootGroup->testGroup.set_as_string(PROPERTY_INT_1, "567");
+    pRootGroup->testGroup.set_as_string(PROPERTY_STRING_2, "a different string");
 
     // Setup changes in child object1
 
-    childGroup1.set_as_string(PROPERTY_FLOAT_1, "3.33");
-    childGroup1.set_as_string(PROPERTY_INT_1, "567");
-    childGroup1.set_as_string(PROPERTY_STRING_2, "a different string");
+    childGroup1.testGroup.set_as_string(PROPERTY_FLOAT_1, "3.33");
+    childGroup1.testGroup.set_as_string(PROPERTY_INT_1, "567");
+    childGroup1.testGroup.set_as_string(PROPERTY_STRING_2, "a different string");
 
     // Setup changes in child object2
 
-    childGroup2.set_as_string(PROPERTY_FLOAT_1, "3.33");
-    childGroup2.set_as_string(PROPERTY_INT_1, "567");
-    childGroup2.set_as_string(PROPERTY_STRING_2, "a different string");
+    childGroup2.testGroup.set_as_string(PROPERTY_FLOAT_1, "3.33");
+    childGroup2.testGroup.set_as_string(PROPERTY_INT_1, "567");
+    childGroup2.testGroup.set_as_string(PROPERTY_STRING_2, "a different string");
 
     // Deserialize
 
@@ -158,17 +164,17 @@
     // Validate that only the root item has reset. This is because the child groups
     // have matching paths and are thus ignored in deserialization.
 
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_FLOAT_1), "2.45");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_INT_1), "365");
-    BOOST_CHECK_EQUAL( pRootGroup->get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
-
-    BOOST_CHECK_EQUAL( childGroup1.get_as_string(PROPERTY_FLOAT_1), "3.33");
-    BOOST_CHECK_EQUAL( childGroup1.get_as_string(PROPERTY_INT_1), "567");
-    BOOST_CHECK_EQUAL( childGroup1.get_as_string(PROPERTY_STRING_2), "a different string");
-
-    BOOST_CHECK_EQUAL( childGroup2.get_as_string(PROPERTY_FLOAT_1), "3.33");
-    BOOST_CHECK_EQUAL( childGroup2.get_as_string(PROPERTY_INT_1), "567");
-    BOOST_CHECK_EQUAL( childGroup2.get_as_string(PROPERTY_STRING_2), "a different string");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_FLOAT_1), "2.45");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_INT_1), "365");
+    BOOST_CHECK_EQUAL( pRootGroup->testGroup.get_as_string(PROPERTY_STRING_2), "BOOST_AUTO_TEST_CASE value");
+
+    BOOST_CHECK_EQUAL( childGroup1.testGroup.get_as_string(PROPERTY_FLOAT_1), "3.33");
+    BOOST_CHECK_EQUAL( childGroup1.testGroup.get_as_string(PROPERTY_INT_1), "567");
+    BOOST_CHECK_EQUAL( childGroup1.testGroup.get_as_string(PROPERTY_STRING_2), "a different string");
+
+    BOOST_CHECK_EQUAL( childGroup2.testGroup.get_as_string(PROPERTY_FLOAT_1), "3.33");
+    BOOST_CHECK_EQUAL( childGroup2.testGroup.get_as_string(PROPERTY_INT_1), "567");
+    BOOST_CHECK_EQUAL( childGroup2.testGroup.get_as_string(PROPERTY_STRING_2), "a different string");
 
     CoUninitialize();
 }
\ No newline at end of file
Modified: sandbox/pinhole/libs/pinhole/test/TestStringProperties.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/TestStringProperties.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/TestStringProperties.cpp	2007-08-02 01:25:34 EDT (Thu, 02 Aug 2007)
@@ -1,4 +1,4 @@
-// Boost.Print library
+// Boost.Pinhole library
 
 // Copyright Jared McIntyre 2007. Use, modification and
 // distribution is subject to the Boost Software License, Version
@@ -7,9 +7,9 @@
 
 // For more information, see http://www.boost.org
 
-#include "TestClassesAndConstants.h"
-
+#define BOOST_TEST_MODULE PinholeLib
 #include <boost/test/unit_test.hpp>
+#include "TestClassesAndConstants.h"
 
 // I can hide these two line if I don't do everything in headers
 boost::shared_ptr<property_manager> property_manager::m_instance(new property_manager);
@@ -33,17 +33,7 @@
 {
     TestPropertyGroup testGroup;
     
-    bool bWasExceptionThrown = false;
-    try
-    {
-        testGroup.set_as_string(PROPERTY_STRING_1, PROPERTY_STRING_1_VALUE);
-    }
-    catch( boost::bad_function_call )
-    {
-        bWasExceptionThrown = true;
-    }
-    
-    BOOST_CHECK_EQUAL( bWasExceptionThrown, true );
+    BOOST_CHECK_THROW( testGroup.set_as_string(PROPERTY_STRING_1, PROPERTY_STRING_1_VALUE), boost::bad_function_call );
 }
 
 BOOST_AUTO_TEST_CASE( TestSetGetString )
@@ -72,6 +62,8 @@
     BOOST_CHECK( typeid(double) != testGroup.get_type_info(PROPERTY_STRING_2) );
     BOOST_CHECK( typeid(std::string) == testGroup.get_type_info(PROPERTY_STRING_2) );
 
+	const StringEditor *pEditor = dynamic_cast<const StringEditor*>(testGroup.get_metadata( PROPERTY_STRING_2 ));
+	BOOST_CHECK( pEditor != NULL );
         BOOST_CHECK( testGroup.get_metadata(PROPERTY_STRING_2)->getEditorPropertyType() == StringType );
 }