[mapguide-commits] r9661 - sandbox/jng/catch2/Server/src/UnitTesting

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Jul 13 07:35:06 PDT 2020


Author: jng
Date: 2020-07-13 07:35:05 -0700 (Mon, 13 Jul 2020)
New Revision: 9661

Removed:
   sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.h
Modified:
   sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.cpp
   sandbox/jng/catch2/Server/src/UnitTesting/TestFeatureService.cpp
   sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.cpp
   sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.vcxproj
Log:
Port coordsys tests to catch2

Modified: sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.cpp
===================================================================
--- sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.cpp	2020-07-13 13:19:27 UTC (rev 9660)
+++ sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.cpp	2020-07-13 14:35:05 UTC (rev 9661)
@@ -16,10 +16,11 @@
 //
 
 #include "MapGuideCommon.h"
-#include "TestCoordinateSystem.h"
-#include "CppUnitExtensions.h"
 #include "FoundationDefs.h"
 
+#include "CatchHelperMacros.h"
+#include "catch.hpp"
+
 #ifndef _WIN32
 #define stricmp strcasecmp
 
@@ -67,36 +68,58 @@
 const double XNewYork = 583924.3730;
 const double YNewYork = 4507502.589;
 
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(TestCoordinateSystem, "TestCoordinateSystem");
+class FileAutoBackup
+{
+private:
 
-//static _CrtMemState state;
+    STRING m_sFilename;
+    STRING m_sRotateSuffix;
+    STRING m_sBackupFilename;
+    bool m_bRotated;
+    bool m_bKeepFile;
 
-void TestCoordinateSystem::setUp()
-{
-}
+public:
+    FileAutoBackup(const CREFSTRING filename, const CREFSTRING rotateSuffix, bool keepFile = false)
+        : m_sFilename(filename), m_sRotateSuffix(rotateSuffix), m_bRotated(false), m_bKeepFile(keepFile)
+    {
+        struct _stat64 fileStatus;
+        bool fileExists = MgFileUtil::GetFileStatus(filename, fileStatus);
 
-void TestCoordinateSystem::tearDown()
-{
-}
+        this->m_sBackupFilename = (this->m_sFilename + this->m_sRotateSuffix);
 
-void TestCoordinateSystem::TestStart()
-{
-    ACE_DEBUG((LM_INFO, ACE_TEXT("\nRunning Coordinate System tests. (Mentor)\n")));
-    Ptr<MgCoordinateSystemFactory> csFactory = new MgCoordinateSystemFactory();
-    Ptr<MgCoordinateSystemCatalog> csCatalog = csFactory->GetCatalog();
-    STRING dictPath = csCatalog->GetDictionaryDir();
-    ACE_DEBUG((LM_INFO, ACE_TEXT("\nCoordinate System Dictionary Path is: %W\n"), dictPath.c_str()));
-//    memset(&state, 0, sizeof(_CrtMemState));
-//    _CrtMemCheckpoint(&state);
-}
+        ACE_DEBUG((LM_INFO, ACE_TEXT("\nBacking up file\n%W\n-->\n%W\n"), this->m_sFilename.c_str(), this->m_sBackupFilename.c_str()));
 
-void TestCoordinateSystem::TestEnd()
-{
-    ACE_DEBUG((LM_INFO, ACE_TEXT("\nCoordinate System tests completed.\n\n")));
-//    _CrtDumpMemoryLeaks();
-//    _CrtMemDumpAllObjectsSince(&state);
-}
+        MgFileUtil::DeleteFile(this->m_sBackupFilename);
+        if (fileExists)
+        {
+            if (!this->m_bKeepFile)
+            {
+                MgFileUtil::RenameFile(this->m_sFilename, this->m_sBackupFilename);
+            }
+            else
+            {
+                MgFileUtil::CopyFile(this->m_sFilename, this->m_sBackupFilename);
+            }
 
+            this->m_bRotated = true;
+        }
+    }
+
+    ~FileAutoBackup()
+    {
+        MgFileUtil::DeleteFile(this->m_sFilename);
+        if (this->m_bRotated)
+        {
+            ACE_DEBUG((LM_INFO, ACE_TEXT("\nRestoring file\n%W\n-->\n%W\n"), this->m_sBackupFilename.c_str(), this->m_sFilename.c_str()));
+            MgFileUtil::RenameFile(this->m_sBackupFilename, this->m_sFilename, true);
+        }
+        else
+        {
+            ACE_DEBUG((LM_INFO, ACE_TEXT("\nDid not restore file\n%W\nas it did not exist before\n"), this->m_sFilename.c_str()));
+        }
+    }
+};
+
 ///----------------------------------------------------------------------------
 /// Test Case Description:
 ///
@@ -109,7 +132,7 @@
     class MgCsType, class MgCsDictionaryType,
     STRING (MgCsType::*GetCode)(),
     MgCsDictionaryType* (MgCoordinateSystemCatalog::*MgGetDictionaryFunc)()>
-void TestReadAllDefinitions(wchar_t const* pzswDefType)
+static void TestReadAllDefinitions(wchar_t const* pzswDefType)
 {
     ACE_DEBUG((LM_INFO, ACE_TEXT("\nReading all %W, ... "), pzswDefType));
 
@@ -120,7 +143,7 @@
     Ptr<MgCoordinateSystemEnum> pCsEnum = pCsDictionary->GetEnum();
     UINT32 size = pCsDictionary->GetSize();
 
-    CPPUNIT_ASSERT(size > 0); //by default, we're assuming to have 'something' in each dictionary
+    REQUIRE(size > 0); //by default, we're assuming to have 'something' in each dictionary
 
     std::vector<STRING> allCodes;
 
@@ -129,12 +152,12 @@
     do
     {
         pNextCsDefinitions = pCsEnum->Next(size);
-        CPPUNIT_ASSERT(pNextCsDefinitions);
+        REQUIRE(pNextCsDefinitions);
 
         const INT32 defCount = pNextCsDefinitions->GetCount();
         if (firstFullSetDone)
         {
-            CPPUNIT_ASSERT(0 == defCount);
+            REQUIRE(0 == defCount);
         }
         else
         {
@@ -147,16 +170,16 @@
             Ptr<MgDisposable> pCsDisposable = pNextCsDefinitions->GetItem(i);
 
             MgCsType* pDefinition = dynamic_cast<MgCsType*>(pCsDisposable.p);
-            CPPUNIT_ASSERT(pDefinition); //the collection must only contain objects of the required type
+            REQUIRE(pDefinition); //the collection must only contain objects of the required type
 
             STRING code = CALL_MEMBER_FN(pDefinition, GetCode)();
-            CPPUNIT_ASSERT(!code.empty());
+            REQUIRE(!code.empty());
             allCodes.push_back(code);
         }
 
     } while (pNextCsDefinitions->GetCount() > 0);
 
-    CPPUNIT_ASSERT(allCodes.size() == pCsDictionary->GetSize());
+    REQUIRE(allCodes.size() == pCsDictionary->GetSize());
 
     for(size_t i = 0; i < allCodes.size(); ++i)
     {
@@ -163,15 +186,15 @@
         STRING const& code = allCodes[i];
         Ptr<MgDisposable> pDictionaryDef = pCsDictionary->Get(code);
         MgCsType *pConcreteDef = dynamic_cast<MgCsType*>(pDictionaryDef.p);
-        CPPUNIT_ASSERT(pConcreteDef);
+        REQUIRE(pConcreteDef);
 
         STRING codeFromDef = CALL_MEMBER_FN(pConcreteDef, GetCode)();
-        CPPUNIT_ASSERT(0 == _wcsicmp(codeFromDef.c_str(), code.c_str()));
+        REQUIRE(0 == _wcsicmp(codeFromDef.c_str(), code.c_str()));
     }
 }
 
 /// (1) Read all Coordinate systems
-void TestCoordinateSystem::TestCase_ReadAllCoordinateSystems()
+TEST_CASE("ReadAllCoordinateSystems", "[CoordinateSystem]")
 {
     TestReadAllDefinitions<MgCoordinateSystem, MgCoordinateSystemDictionary,
         &MgCoordinateSystem::GetCsCode,
@@ -179,7 +202,7 @@
 }
 
 /// (2) Read all datums
-void TestCoordinateSystem::TestCase_ReadAllDatums()
+TEST_CASE("ReadAllDatums", "[CoordinateSystem]")
 {
     TestReadAllDefinitions<MgCoordinateSystemDatum, MgCoordinateSystemDatumDictionary,
         &MgCoordinateSystemDatum::GetDtCode,
@@ -187,7 +210,7 @@
 }
 
 /// (3) Read all ellipsoids
-void TestCoordinateSystem::TestCase_ReadAllEllipsoids()
+TEST_CASE("ReadAllEllipsoids", "[CoordinateSystem]")
 {
     TestReadAllDefinitions<MgCoordinateSystemEllipsoid, MgCoordinateSystemEllipsoidDictionary,
         &MgCoordinateSystemEllipsoid::GetElCode,
@@ -195,7 +218,7 @@
 }
 
 /// (4) Read all categories
-void TestCoordinateSystem::TestCase_ReadAllCategories()
+TEST_CASE("ReadAllCategories", "[CoordinateSystem]")
 {
     TestReadAllDefinitions<MgCoordinateSystemCategory, MgCoordinateSystemCategoryDictionary,
         &MgCoordinateSystemCategory::GetName,
@@ -203,7 +226,7 @@
 }
 
 /// (5) Read all geodetic transformations
-void TestCoordinateSystem::TestCase_ReadAllGeodeticTransformations()
+TEST_CASE("ReadAllGeodeticTransformations", "[CoordinateSystem]")
 {
     TestReadAllDefinitions<MgCoordinateSystemGeodeticTransformDef, MgCoordinateSystemGeodeticTransformDefDictionary,
         &MgCoordinateSystemGeodeticTransformDef::GetTransformName,
@@ -211,7 +234,7 @@
 }
 
 /// (6) Read all geodetic paths
-void TestCoordinateSystem::TestCase_ReadAllGeodeticPaths()
+TEST_CASE("ReadAllGeodeticPaths", "[CoordinateSystem]")
 {
     TestReadAllDefinitions<MgCoordinateSystemGeodeticPath, MgCoordinateSystemGeodeticPathDictionary,
         &MgCoordinateSystemGeodeticPath::GetPathName,
@@ -256,7 +279,7 @@
 
     if (TWithUserDefDir)
     {
-        TestCoordinateSystem::SetDefaultUserDictionaryDir();
+        SetDefaultUserDictionaryDir();
     }
     else
     {
@@ -268,22 +291,22 @@
     Ptr<MgCoordinateSystemEnum> pCsEnum = pCsDictionary->GetEnum();
     UINT32 size = pCsDictionary->GetSize();
 
-    CPPUNIT_ASSERT(size > 0); //by default, we're assuming to have 'something' in each dictionary
+    REQUIRE(size > 0); //by default, we're assuming to have 'something' in each dictionary
 
     Ptr<MgDisposableCollection> pNextCsDefinitions;
     pNextCsDefinitions = pCsEnum->Next(1);
 
     INT32 definitionCount = pNextCsDefinitions->GetCount();
-    CPPUNIT_ASSERT(1 == definitionCount);
+    REQUIRE(1 == definitionCount);
 
     Ptr<MgDisposable> pMgDefinition = pNextCsDefinitions->GetItem(0);
-    CPPUNIT_ASSERT(pMgDefinition);
+    REQUIRE(pMgDefinition);
 
     MgCsType* pTypedDef = dynamic_cast<MgCsType*>(pMgDefinition.p);
-    CPPUNIT_ASSERT(NULL != pTypedDef);
+    REQUIRE(NULL != pTypedDef);
 
     STRING code = CALL_MEMBER_FN(pTypedDef, GetCode)();
-    CPPUNIT_ASSERT(!code.empty());
+    REQUIRE(!code.empty());
 
     ACE_DEBUG((LM_INFO, ACE_TEXT("trying with %W ... "), code.c_str()));
 
@@ -296,7 +319,7 @@
     {
         pMgDefinition = CloneDefFunc(pTypedDef);
         pTypedDef = dynamic_cast<MgCsType*>(pMgDefinition.p);
-        CPPUNIT_ASSERT(NULL != pTypedDef);
+        REQUIRE(NULL != pTypedDef);
     }
 
     STRING newCode = (code + L"_MOD");
@@ -305,22 +328,22 @@
     STRING csdFile = pCsDictionary->GetPath();
     //backup the current CSD file and automatically restore it after we are done; or delete the newly created CSD file
     //make sure, we keep the current file
-    TestCoordinateSystem::FileAutoBackup csdFileBackup(csdFile, L".UNIT_TEST_SAVE", true);
+    FileAutoBackup csdFileBackup(csdFile, L".UNIT_TEST_SAVE", true);
 
     pCsDictionary->Add(pTypedDef);
 
     Ptr<MgDisposable> pAddedDefinition = pCsDictionary->Get(newCode);
-    CPPUNIT_ASSERT(pAddedDefinition);
+    REQUIRE(pAddedDefinition);
 
     ACE_DEBUG((LM_INFO, ACE_TEXT("OK")));
 
-    CPPUNIT_ASSERT( pCsDictionary->Has(newCode) );
+    REQUIRE( pCsDictionary->Has(newCode) );
 
     if (TAutoRemove)
     {
         ACE_DEBUG((LM_INFO, ACE_TEXT("... Remove it again... ")));
         pCsDictionary->Remove(newCode);
-        CPPUNIT_ASSERT( !pCsDictionary->Has(newCode) );
+        REQUIRE( !pCsDictionary->Has(newCode) );
 
         ACE_DEBUG((LM_INFO, ACE_TEXT("OK")));
     }
@@ -329,7 +352,7 @@
 }
 
 /// (1) Update a coordinate system
-void TestCoordinateSystem::TestCase_UpdateCoordinateSystems()
+TEST_CASE("UpdateCoordinateSystems", "[CoordinateSystem]")
 {
     TestUpdateDefinition<
         true, /* compile as 'auto-remove function' */
@@ -341,7 +364,7 @@
 }
 
 /// (2) Update a datum
-void TestCoordinateSystem::TestCase_UpdateDatums()
+TEST_CASE("UpdateDatums", "[CoordinateSystem]")
 {
     TestUpdateDefinition<
         true, /* compile as 'auto-remove function' */
@@ -353,7 +376,7 @@
 }
 
 /// (3) Update an ellipsoid
-void TestCoordinateSystem::TestCase_UpdateEllipsoids()
+TEST_CASE("UpdateEllipsoids", "[CoordinateSystem]")
 {
     TestUpdateDefinition<
         true, /* compile as 'auto-remove function' */
@@ -365,7 +388,7 @@
 }
 
 /// (4) Update a category
-void TestCoordinateSystem::TestCase_UpdateCategories()
+TEST_CASE("UpdateCategories", "[CoordinateSystem]")
 {
     TestUpdateDefinition<
         true, /* compile as 'auto-remove function' */
@@ -377,7 +400,7 @@
 }
 
 /// (5) Update a geodetic transformation
-void TestCoordinateSystem::TestCase_UpdateGeodeticTransformations()
+TEST_CASE("UpdateGeodeticTransformations", "[CoordinateSystem]")
 {
     TestUpdateDefinition<
         true, /* compile as 'auto-remove function' */
@@ -389,7 +412,7 @@
 }
 
 /// (5) Update a geodetic path
-void TestCoordinateSystem::TestCase_UpdateGeodeticPaths()
+TEST_CASE("UpdateGeodeticPaths", "[CoordinateSystem]")
 {
     TestUpdateDefinition<
         true, /* compile as 'auto-remove function' */
@@ -405,7 +428,7 @@
 ///
 /// Tries setting a user dictionary path where to store CS user information into
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_InitializeValidUserDictionaryDir()
+TEST_CASE("InitializeValidUserDictionaryDir", "[CoordinateSystem]")
 {
     MgCoordinateSystemFactory mgCsFactory;
     Ptr<MgCoordinateSystemCatalog> pCsCatalog = mgCsFactory.GetCatalog();
@@ -420,11 +443,11 @@
 
     pCsCatalog->SetUserDictionaryDir(userDictionaryDir);
     STRING setUserDictionaryDir = pCsCatalog->GetUserDictionaryDir();
-    CPPUNIT_ASSERT(setUserDictionaryDir == userDictionaryDir);
+    REQUIRE(setUserDictionaryDir == userDictionaryDir);
 
     pCsCatalog->SetUserDictionaryDir(L"");
     setUserDictionaryDir = pCsCatalog->GetUserDictionaryDir();
-    CPPUNIT_ASSERT(setUserDictionaryDir.empty());
+    REQUIRE(setUserDictionaryDir.empty());
 }
 
 ///----------------------------------------------------------------------------
@@ -432,7 +455,7 @@
 ///
 /// Tries setting an invalid user dictionary path where to store CS user information into
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_InitializeInvalidUserDictionaryDir()
+TEST_CASE("InitializeInvalidUserDictionaryDir", "[CoordinateSystem]")
 {
     MgCoordinateSystemFactory mgCsFactory;
     Ptr<MgCoordinateSystemCatalog> pCsCatalog = mgCsFactory.GetCatalog();
@@ -454,10 +477,10 @@
 
     MG_CATCH_AND_RELEASE()
 
-    CPPUNIT_ASSERT(NULL != mgException); //this *must* result in an exception
+    REQUIRE(nullptr != mgException.p); //this *must* result in an exception
 
     STRING currentUserDictionaryDir = pCsCatalog->GetUserDictionaryDir();
-    CPPUNIT_ASSERT(setUserDictionaryDir == currentUserDictionaryDir); //the current user dictionary path must not have changed
+    REQUIRE(setUserDictionaryDir == currentUserDictionaryDir); //the current user dictionary path must not have changed
 }
 
 ///----------------------------------------------------------------------------
@@ -468,7 +491,7 @@
 ///----------------------------------------------------------------------------
 ///
 
-bool TestCoordinateSystem::SetDefaultUserDictionaryDir()
+static bool SetDefaultUserDictionaryDir()
 {
     MG_TRY()
 
@@ -513,7 +536,7 @@
 {
     ACE_DEBUG((LM_INFO, ACE_TEXT("\nTrying to set the default user dictionary path ...\n")));
 
-    bool userDirSet = TestCoordinateSystem::SetDefaultUserDictionaryDir();
+    bool userDirSet = SetDefaultUserDictionaryDir();
     if (!userDirSet)
     {
         ACE_DEBUG((LM_WARNING, ACE_TEXT("\nCould not set the default user dictionary path. Current test will be skipped\n")));
@@ -527,8 +550,8 @@
     const STRING& csCsdFilename = pCsDictionary->GetFileName();
 
     STRING csCsdFile = pCsDictionary->GetPath();
-    CPPUNIT_ASSERT(!csCsdFile.empty());
-    CPPUNIT_ASSERT(MgFileUtil::IsFile(csCsdFile));
+    REQUIRE(!csCsdFile.empty());
+    REQUIRE(MgFileUtil::IsFile(csCsdFile));
 
     const INT64 csdFileSize = MgFileUtil::GetFileSize(csCsdFile);
 
@@ -538,7 +561,7 @@
     STRING addedCode;
     {
         //backup the current user CSD file and automatically restore it after we are done; or delete the newly created CSD file
-        TestCoordinateSystem::FileAutoBackup csdFileBackup(csCsdUserFile, L".UNIT_TEST_SAVE");
+        FileAutoBackup csdFileBackup(csCsdUserFile, L".UNIT_TEST_SAVE");
 
         addedCode = TestUpdateDefinition<
             false /* compile as 'no-auto-remove' */,
@@ -549,23 +572,23 @@
             MgGetDictionaryFunc>(pzswDefType, UnprotecDefFunc, CloneDefFunc);
 
         const INT64 updateCsdFileSize = MgFileUtil::GetFileSize(csCsdFile);
-        CPPUNIT_ASSERT(updateCsdFileSize == csdFileSize);
+        REQUIRE(updateCsdFileSize == csdFileSize);
 
         //the user CSD file now must exist
         struct _stat64 fileStatus;
         bool fileExists = MgFileUtil::GetFileStatus(csCsdUserFile, fileStatus);
-        CPPUNIT_ASSERT(fileExists && fileStatus.st_size);
+        REQUIRE((fileExists && fileStatus.st_size));
 
-        CPPUNIT_ASSERT(!addedCode.empty());
-        CPPUNIT_ASSERT(pCsDictionary->Has(addedCode));
+        REQUIRE(!addedCode.empty());
+        REQUIRE(pCsDictionary->Has(addedCode));
     }
 
     //now, that the user file had been deleted, our newly added definition must have been gone, too
     pCsDictionary->SetFileName(pCsDictionary->GetFileName()); //force the Mg dictionary to update is cache
-    CPPUNIT_ASSERT(!pCsDictionary->Has(addedCode));
+    REQUIRE(!pCsDictionary->Has(addedCode));
 }
 
-void TestCoordinateSystem::TestCase_UpdateUserCoordinateSystems()
+TEST_CASE("UpdateUserCoordinateSystems", "[CoordinateSystem]")
 {
     TestUpdateUserDefinition<
         MgCoordinateSystem, MgCoordinateSystemDictionary,
@@ -574,7 +597,7 @@
         &MgCoordinateSystemCatalog::GetCoordinateSystemDictionary>(L"Coordinate System");
 }
 
-void TestCoordinateSystem::TestCase_UpdateUserDatums()
+TEST_CASE("UpdateUserDatums", "[CoordinateSystem]")
 {
     TestUpdateUserDefinition<
         MgCoordinateSystemDatum, MgCoordinateSystemDatumDictionary,
@@ -583,7 +606,7 @@
         &MgCoordinateSystemCatalog::GetDatumDictionary>(L"Datum");
 }
 
-void TestCoordinateSystem::TestCase_UpdateUserEllipsoids()
+TEST_CASE("UpdateUserEllipsoids", "[CoordinateSystem]")
 {
     TestUpdateUserDefinition<
         MgCoordinateSystemEllipsoid, MgCoordinateSystemEllipsoidDictionary,
@@ -592,7 +615,7 @@
         &MgCoordinateSystemCatalog::GetEllipsoidDictionary>(L"Ellipsoid");
 }
 
-void TestCoordinateSystem::TestCase_UpdateUserCategories()
+TEST_CASE("UpdateUserCategories", "[CoordinateSystem]")
 {
     TestUpdateUserDefinition<
         MgCoordinateSystemCategory, MgCoordinateSystemCategoryDictionary,
@@ -601,7 +624,7 @@
         &MgCoordinateSystemCatalog::GetCategoryDictionary>(L"Category", NULL, NULL);
 }
 
-void TestCoordinateSystem::TestCase_UpdateUserGeodeticTransformations()
+TEST_CASE("UpdateUserGeodeticTransformations", "[CoordinateSystem]")
 {
     TestUpdateUserDefinition<
         MgCoordinateSystemGeodeticTransformDef, MgCoordinateSystemGeodeticTransformDefDictionary,
@@ -610,7 +633,7 @@
         &MgCoordinateSystemCatalog::GetGeodeticTransformDefDictionary>(L"Geodetic Transformation", NULL, CloneDefinition);
 }
 
-void TestCoordinateSystem::TestCase_UpdateUserGeodeticPaths()
+TEST_CASE("UpdateUserGeodeticPaths", "[CoordinateSystem]")
 {
     TestUpdateUserDefinition<
         MgCoordinateSystemGeodeticPath, MgCoordinateSystemGeodeticPathDictionary,
@@ -625,7 +648,7 @@
 /// This test case loads OGC WKT coordinate systems from an external file and
 /// tries to validate them.
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_CheckCoordinateSystems()
+TEST_CASE("CheckCoordinateSystems", "[SlowTests]")
 {
     try
     {
@@ -713,7 +736,7 @@
         else
         {
             ACE_DEBUG((LM_INFO, ACE_TEXT("Could not open coordinate system test file: %C\n"), OgcWktTestFile));
-            CPPUNIT_ASSERT(false);
+            REQUIRE(false);
         }
 
         ACE_DEBUG((LM_INFO, ACE_TEXT("\nTotal coordinate system OGC WKTs tested: %d/%d (Passed/Total)\n"), nCoordinateSystemsPassed, nCoordinateSystemsTested));
@@ -723,7 +746,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -736,7 +759,7 @@
 ///
 /// This test case creates a valid coordinate system.
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_CreateValidCoordinateSystem()
+TEST_CASE("CreateValidCoordinateSystem", "[CoordinateSystem]")
 {
     try
     {
@@ -743,73 +766,73 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         // Test if entry is cached
         ogcWkt = ArbitraryWkt;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = ArbitraryWkt_Alternate1;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         // Test if entry is cached
         ogcWkt = ArbitraryWkt_Alternate1;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = ArbitraryWkt_Alternate2;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         // Test if entry is cached
         ogcWkt = ArbitraryWkt_Alternate2;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = GeographicWkt;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         // Test if entry is cached
         ogcWkt = GeographicWkt;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = ProjectedWkt;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         // Test if entry is cached
         ogcWkt = ProjectedWkt;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = InvalidWkt;
-        CPPUNIT_ASSERT_THROW_MG(pCoordinateSystem = factory.Create(ogcWkt), MgCoordinateSystemConversionFailedException*);
+        REQUIRE_THROWS_MG(pCoordinateSystem = factory.Create(ogcWkt), MgCoordinateSystemConversionFailedException*);
 
         ogcWkt = ArbitraryWkt_Feet;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = GeographicWkt_LL84;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         ogcWkt = ProjectedWkt_GAW;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -822,7 +845,7 @@
 ///
 /// This test case creates an invalid coordinate system.
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_CreateInvalidCoordinateSystem()
+TEST_CASE("CreateInvalidCoordinateSystem", "[CoordinateSystem]")
 {
     try
     {
@@ -829,7 +852,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = InvalidWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
     }
     catch(MgCoordinateSystemConversionFailedException* e)
     {
@@ -840,7 +863,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -848,7 +871,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_EnumerateCategories()
+TEST_CASE("EnumerateCategories", "[SlowTests]")
 {
     try
     {
@@ -903,7 +926,7 @@
                                 // Perform round trip test
                                 STRING wkt = factory.ConvertCoordinateSystemCodeToWkt(pProperty->GetValue());
                                 STRING code = factory.ConvertWktToCoordinateSystemCode(wkt);
-                                CPPUNIT_ASSERT(_wcsicmp(pProperty->GetValue().c_str(), code.c_str()) == 0);
+                                REQUIRE(_wcsicmp(pProperty->GetValue().c_str(), code.c_str()) == 0);
 
                                 nTotalCoordinateSystemsPassed++;
                             }
@@ -947,7 +970,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -955,7 +978,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_EnumerateCoordSys()
+TEST_CASE("EnumerateCoordSys", "[CoordinateSystem]")
 {
     try
     {
@@ -962,18 +985,18 @@
         MgCoordinateSystemFactory factory;
         Ptr<MgBatchPropertyCollection> coordSystems;
         coordSystems = factory.EnumerateCoordinateSystems(L"Lat Longs");
-        CPPUNIT_ASSERT(coordSystems);
-        CPPUNIT_ASSERT(coordSystems->GetCount() > 0);
+        REQUIRE(coordSystems);
+        REQUIRE(coordSystems->GetCount() > 0);
 
         coordSystems = factory.EnumerateCoordinateSystems(L"lat longs");
-        CPPUNIT_ASSERT(coordSystems);
-        CPPUNIT_ASSERT(coordSystems->GetCount() > 0);
+        REQUIRE(coordSystems);
+        REQUIRE(coordSystems->GetCount() > 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -981,22 +1004,22 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_GetBaseLibrary()
+TEST_CASE("GetBaseLibrary", "[CoordinateSystem]")
 {
     try
     {
         STRING library;
         Ptr<MgCoordinateSystemFactory> factory = new MgCoordinateSystemFactory();
-        CPPUNIT_ASSERT(factory);
+        REQUIRE(factory);
 
         library = factory->GetBaseLibrary();
-        CPPUNIT_ASSERT(library == L"Mentor Coordinate System Library");
+        REQUIRE(library == L"Mentor Coordinate System Library");
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1004,7 +1027,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_IsValid()
+TEST_CASE("IsValid", "[CoordinateSystem]")
 {
     try
     {
@@ -1011,18 +1034,18 @@
         bool bResult;
         MgCoordinateSystemFactory factory;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(EPSG_4326_Wkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         bResult = pCoordinateSystem->IsValid();
-        CPPUNIT_ASSERT(bResult == true);
+        REQUIRE(bResult == true);
 
-        CPPUNIT_ASSERT_THROW_MG(pCoordinateSystem = factory.Create(InvalidWkt), MgCoordinateSystemConversionFailedException*);
+        REQUIRE_THROWS_MG(pCoordinateSystem = factory.Create(InvalidWkt), MgCoordinateSystemConversionFailedException*);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1035,7 +1058,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_ValidateCoordinateSystemArbitrary()
+TEST_CASE("ValidateCoordinateSystemArbitrary", "[CoordinateSystem]")
 {
     try
     {
@@ -1042,20 +1065,20 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
-        CPPUNIT_ASSERT(pCoordinateSystem->GetType() == MgCoordinateSystemType::Arbitrary);
+        REQUIRE(pCoordinateSystem->GetType() == MgCoordinateSystemType::Arbitrary);
 
         Ptr<MgCoordinateSystem> pCoordinateSystemAlt = factory.Create(pCoordinateSystem->ToString());
-        CPPUNIT_ASSERT(pCoordinateSystemAlt);
+        REQUIRE(pCoordinateSystemAlt);
 
-        CPPUNIT_ASSERT(pCoordinateSystem->GetCsCode() == pCoordinateSystemAlt->GetCsCode());
+        REQUIRE(pCoordinateSystem->GetCsCode() == pCoordinateSystemAlt->GetCsCode());
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1068,7 +1091,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_ConvertFromLonLat()
+TEST_CASE("Arbitrary_ConvertFromLonLat", "[CoordinateSystem]")
 {
     try
     {
@@ -1075,7 +1098,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double lon = 45.0;
         double lat = 90.0;
@@ -1086,8 +1109,8 @@
         pCoordinateSystem->ConvertToLonLat(x, y, x, y);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon, x));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat, y));
+        REQUIRE(MgUtil::ValuesEqual(lon, x));
+        REQUIRE(MgUtil::ValuesEqual(lat, y));
 
         Ptr<MgCoordinate> coord = new MgCoordinateXY(45.0, 90.0);
         coord = pCoordinateSystem->ConvertFromLonLat(coord.p);
@@ -1096,14 +1119,14 @@
         coord = pCoordinateSystem->ConvertToLonLat(coord.p);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(coord->GetX(), 45.0));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(coord->GetY(), 90.0));
+        REQUIRE(MgUtil::ValuesEqual(coord->GetX(), 45.0));
+        REQUIRE(MgUtil::ValuesEqual(coord->GetY(), 90.0));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1116,7 +1139,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_ConvertFromLonLatArray()
+TEST_CASE("Arbitrary_ConvertFromLatLonArray", "[CoordinateSystem]")
 {
     try
     {
@@ -1123,7 +1146,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double lon[4] = { 45.0, 30.0, 15.0, 0.0 };
         double lat[4] = { 90.0, 75.0, 60.0, 55.0 };
@@ -1134,20 +1157,20 @@
         pCoordinateSystem->ConvertToLonLat(x, y, x, y, 4);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[0], x[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[0], y[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[1], x[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[1], y[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[2], x[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[2], y[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[3], x[3]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[3], y[3]));
+        REQUIRE(MgUtil::ValuesEqual(lon[0], x[0]));
+        REQUIRE(MgUtil::ValuesEqual(lat[0], y[0]));
+        REQUIRE(MgUtil::ValuesEqual(lon[1], x[1]));
+        REQUIRE(MgUtil::ValuesEqual(lat[1], y[1]));
+        REQUIRE(MgUtil::ValuesEqual(lon[2], x[2]));
+        REQUIRE(MgUtil::ValuesEqual(lat[2], y[2]));
+        REQUIRE(MgUtil::ValuesEqual(lon[3], x[3]));
+        REQUIRE(MgUtil::ValuesEqual(lat[3], y[3]));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1160,7 +1183,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_ConvertToLonLat()
+TEST_CASE("Arbitrary_ConvertToLonLat", "[CoordinateSystem]")
 {
     try
     {
@@ -1167,7 +1190,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double x = 45.0;
         double y = 90.0;
@@ -1178,8 +1201,8 @@
         pCoordinateSystem->ConvertFromLonLat(lon, lat, lon, lat);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon, x));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat, y));
+        REQUIRE(MgUtil::ValuesEqual(lon, x));
+        REQUIRE(MgUtil::ValuesEqual(lat, y));
 
         Ptr<MgCoordinate> coord = new MgCoordinateXY(45.0, 90.0);
         coord = pCoordinateSystem->ConvertToLonLat(coord.p);
@@ -1188,14 +1211,14 @@
         coord = pCoordinateSystem->ConvertFromLonLat(coord.p);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(coord->GetX(), 45.0));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(coord->GetY(), 90.0));
+        REQUIRE(MgUtil::ValuesEqual(coord->GetX(), 45.0));
+        REQUIRE(MgUtil::ValuesEqual(coord->GetY(), 90.0));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1208,7 +1231,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_ConvertToLonLatArray()
+TEST_CASE("Arbitrary_ConvertToLonLatArray", "[CoordinateSystem]")
 {
     try
     {
@@ -1215,7 +1238,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double x[4] = { 45.0, 30.0, 15.0, 0.0 };
         double y[4] = { 90.0, 75.0, 60.0, 55.0 };
@@ -1226,20 +1249,20 @@
         pCoordinateSystem->ConvertFromLonLat(lon, lat, lon, lat, 4);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[0], x[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[0], y[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[1], x[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[1], y[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[2], x[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[2], y[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lon[3], x[3]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(lat[3], y[3]));
+        REQUIRE(MgUtil::ValuesEqual(lon[0], x[0]));
+        REQUIRE(MgUtil::ValuesEqual(lat[0], y[0]));
+        REQUIRE(MgUtil::ValuesEqual(lon[1], x[1]));
+        REQUIRE(MgUtil::ValuesEqual(lat[1], y[1]));
+        REQUIRE(MgUtil::ValuesEqual(lon[2], x[2]));
+        REQUIRE(MgUtil::ValuesEqual(lat[2], y[2]));
+        REQUIRE(MgUtil::ValuesEqual(lon[3], x[3]));
+        REQUIRE(MgUtil::ValuesEqual(lat[3], y[3]));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1252,7 +1275,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_ConvertCoordinateSystemUnitsToMeters()
+TEST_CASE("Arbitrary_ConvertCoordinateSystemUnitsToMeters", "[CoordinateSystem]")
 {
     try
     {
@@ -1259,16 +1282,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1609.344, meters));
+        REQUIRE(MgUtil::ValuesEqual(1609.344, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1281,7 +1304,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_ConvertMetersToCoordinateSystemUnits()
+TEST_CASE("Arbitrary_ConvertMetersToCoordinateSystemUnits", "[CoordinateSystem]")
 {
     try
     {
@@ -1288,16 +1311,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double units = pCoordinateSystem->ConvertMetersToCoordinateSystemUnits(1609.344);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, units));
+        REQUIRE(MgUtil::ValuesEqual(1.0, units));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1310,7 +1333,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_MeasureEuclideanDistance()
+TEST_CASE("Arbitrary_MeasureEuclideanDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -1317,25 +1340,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double distance = pCoordinateSystem->MeasureEuclideanDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, distance));
+        REQUIRE(MgUtil::ValuesEqual(5.0, distance));
 
         double distance2 = pCoordinateSystem->MeasureEuclideanDistance(0.0, 0.0, 4.0, 3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(distance, distance2));
+        REQUIRE(MgUtil::ValuesEqual(distance, distance2));
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(8046.72, meters));
+        REQUIRE(MgUtil::ValuesEqual(8046.72, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1348,7 +1371,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_MeasureGreatCircleDistance()
+TEST_CASE("Arbitrary_MeasureGreatCircleDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -1355,18 +1378,18 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
-        CPPUNIT_ASSERT_THROW_MG(double meters = pCoordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2), MgInvalidCoordinateSystemTypeException*);
+        REQUIRE_THROWS_MG(double meters = pCoordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2), MgInvalidCoordinateSystemTypeException*);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1379,7 +1402,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_GetAzimuth()
+TEST_CASE("Arbitrary_GetAzimuth", "[CoordinateSystem]")
 {
     try
     {
@@ -1386,39 +1409,39 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double degrees = pCoordinateSystem->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(36.86989765, degrees));
+        REQUIRE(MgUtil::ValuesEqual(36.86989765, degrees));
 
         double degrees2 = pCoordinateSystem->GetAzimuth(0.0, 0.0, 4.0, 3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(degrees, degrees2));
+        REQUIRE(MgUtil::ValuesEqual(degrees, degrees2));
 
         // Test all 4 quadrants
         // Top right
         degrees = pCoordinateSystem->GetAzimuth(0.0, 0.0, 4.0, 3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(36.86989765, degrees));
+        REQUIRE(MgUtil::ValuesEqual(36.86989765, degrees));
 
         // Top left
         degrees = pCoordinateSystem->GetAzimuth(0.0, 0.0, -4.0, 3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(143.1301024, degrees));
+        REQUIRE(MgUtil::ValuesEqual(143.1301024, degrees));
 
         // Bottom right
         degrees = pCoordinateSystem->GetAzimuth(0.0, 0.0, 4.0, -3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-36.86989765, degrees));
+        REQUIRE(MgUtil::ValuesEqual(-36.86989765, degrees));
 
         // Bottom left
         degrees = pCoordinateSystem->GetAzimuth(0.0, 0.0, -4.0, -3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-143.1301024, degrees));
+        REQUIRE(MgUtil::ValuesEqual(-143.1301024, degrees));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1431,7 +1454,7 @@
 ///
 /// This test case
 ///----------------------------------------------------------------------------
-void TestCoordinateSystem::TestCase_Arbitrary_GetCoordinate()
+TEST_CASE("Arbitrary_GetCoordinate", "[CoordinateSystem]")
 {
     try
     {
@@ -1438,7 +1461,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinate> pCoord;
         MgCoordinateXY coord(0.0, 0.0);
@@ -1446,29 +1469,29 @@
         // Test all 4 quadrants
         // Top right
         pCoord = pCoordinateSystem->GetCoordinate(&coord, 36.86989765, 5.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(4.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(4.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(3.0, pCoord->GetY()));
 
         // Top left
         pCoord = pCoordinateSystem->GetCoordinate(&coord, 143.13010235, 5.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-4.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-4.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(3.0, pCoord->GetY()));
 
         // Bottom right
         pCoord = pCoordinateSystem->GetCoordinate(&coord, -36.86989765, 5.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(4.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-3.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(4.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(-3.0, pCoord->GetY()));
 
         // Bottom left
         pCoord = pCoordinateSystem->GetCoordinate(&coord, -143.13010235, 5.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-4.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-3.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-4.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(-3.0, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1476,7 +1499,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_ConvertCode()
+TEST_CASE("Arbitrary_ConvertCode", "[CoordinateSystem]")
 {
     try
     {
@@ -1484,27 +1507,27 @@
 
         MgCoordinateSystemFactory factory;
         STRING code = factory.ConvertWktToCoordinateSystemCode(ogcWkt);
-        CPPUNIT_ASSERT(_wcsicmp(L"XY-MI", code.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"XY-MI", code.c_str()) == 0);
         STRING wkt = factory.ConvertCoordinateSystemCodeToWkt(code);
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
 
         wkt = factory.ConvertCoordinateSystemCodeToWkt(L"XY-MI");
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
 
         wkt = factory.ConvertCoordinateSystemCodeToWkt(L"*xy-mi*");
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         code = factory.ConvertWktToCoordinateSystemCode(ogcWkt);
-        CPPUNIT_ASSERT(_wcsicmp(L"XY-M", code.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"XY-M", code.c_str()) == 0);
         wkt = factory.ConvertCoordinateSystemCodeToWkt(code);
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1512,7 +1535,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetUnits()
+TEST_CASE("Arbitrary_GetUnits", "[CoordinateSystem]")
 {
     try
     {
@@ -1519,16 +1542,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING units = pCoordinateSystem->GetUnits();
-        CPPUNIT_ASSERT(_wcsicmp(L"Mile", units.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Mile", units.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1536,7 +1559,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetUnitScale()
+TEST_CASE("Arbitrary_GetUnitScale", "[CoordinateSystem]")
 {
     try
     {
@@ -1543,16 +1566,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double scale = pCoordinateSystem->GetUnitScale();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1609.344, scale));
+        REQUIRE(MgUtil::ValuesEqual(1609.344, scale));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1560,7 +1583,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetMinX()
+TEST_CASE("Arbitrary_GetMinX", "[CoordinateSystem]")
 {
     try
     {
@@ -1567,16 +1590,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMinX();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-10000000.0, value));
+        REQUIRE(MgUtil::ValuesEqual(-10000000.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1584,7 +1607,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetMinY()
+TEST_CASE("Arbitrary_GetMinY", "[CoordinateSystem]")
 {
     try
     {
@@ -1591,16 +1614,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMinY();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-10000000.0, value));
+        REQUIRE(MgUtil::ValuesEqual(-10000000.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1608,7 +1631,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetMaxX()
+TEST_CASE("Arbitrary_GetMaxX", "[CoordinateSystem]")
 {
     try
     {
@@ -1615,16 +1638,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMaxX();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10000000.0, value));
+        REQUIRE(MgUtil::ValuesEqual(10000000.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1632,7 +1655,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetMaxY()
+TEST_CASE("Arbitrary_GetMaxY", "[CoordinateSystem]")
 {
     try
     {
@@ -1639,16 +1662,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMaxY();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10000000.0, value));
+        REQUIRE(MgUtil::ValuesEqual(10000000.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1656,7 +1679,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetCsCode()
+TEST_CASE("Arbitrary_GetCsCode", "[CoordinateSystem]")
 {
     try
     {
@@ -1663,37 +1686,37 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetCsCode();
-        CPPUNIT_ASSERT(_wcsicmp(L"XY-MI", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"XY-MI", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Alternate1;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetCsCode();
-        CPPUNIT_ASSERT(_wcsicmp(L"XY-MI", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"XY-MI", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Alternate2;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetCsCode();
-        CPPUNIT_ASSERT(_wcsicmp(L"XY-MI", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"XY-MI", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetCsCode();
-        CPPUNIT_ASSERT(_wcsicmp(L"XY-M", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"XY-M", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1701,7 +1724,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetDescription()
+TEST_CASE("Arbitrary_GetDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -1708,23 +1731,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"Arbitrary X-Y Coordinates (U.S.Survey Miles)", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Arbitrary X-Y Coordinates (U.S.Survey Miles)", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"Arbitrary X-Y Coordinates (Meters)", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Arbitrary X-Y Coordinates (Meters)", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1732,7 +1755,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetProjection()
+TEST_CASE("Arbitrary_GetProjection", "[CoordinateSystem]")
 {
     try
     {
@@ -1739,23 +1762,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetProjection();
-        CPPUNIT_ASSERT(_wcsicmp(L"NERTH", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"NERTH", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetProjection();
-        CPPUNIT_ASSERT(_wcsicmp(L"NERTH", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"NERTH", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1763,7 +1786,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetProjectionDescription()
+TEST_CASE("Arbitrary_GetProjectionDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -1770,23 +1793,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetProjectionDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"Non-georeferenced (aka non-earth) coordinate system", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Non-georeferenced (aka non-earth) coordinate system", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetProjectionDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"Non-georeferenced (aka non-earth) coordinate system", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Non-georeferenced (aka non-earth) coordinate system", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1794,7 +1817,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetDatum()
+TEST_CASE("Arbitrary_GetDatum", "[CoordinateSystem]")
 {
     try
     {
@@ -1801,23 +1824,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDatum();
-        CPPUNIT_ASSERT(_wcsicmp(L"Local Datum", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Local Datum", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetDatum();
-        CPPUNIT_ASSERT(_wcsicmp(L"Local Datum", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Local Datum", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1825,7 +1848,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetDatumDescription()
+TEST_CASE("Arbitrary_GetDatumDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -1832,23 +1855,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDatumDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetDatumDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1856,7 +1879,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetEllipsoid()
+TEST_CASE("Arbitrary_GetEllipsoid", "[CoordinateSystem]")
 {
     try
     {
@@ -1863,23 +1886,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetEllipsoid();
-        CPPUNIT_ASSERT(_wcsicmp(L"", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetEllipsoid();
-        CPPUNIT_ASSERT(_wcsicmp(L"", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1887,7 +1910,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetEllipsoidDescription()
+TEST_CASE("Arbitrary_GetEllipsoidDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -1894,23 +1917,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetEllipsoidDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"", value.c_str()) == 0);
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetEllipsoidDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1918,7 +1941,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_GetCategory()
+TEST_CASE("Arbitrary_GetCategory", "[CoordinateSystem]")
 {
     try
     {
@@ -1925,23 +1948,23 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgStringCollection> value = pCoordinateSystem->GetCategories();
-        CPPUNIT_ASSERT(value->Contains(L"Arbitrary X-Y Coordinate Systems"));
+        REQUIRE(value->Contains(L"Arbitrary X-Y Coordinate Systems"));
 
         ogcWkt = ArbitraryWkt_Meter;
         pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         value = pCoordinateSystem->GetCategories();
-        CPPUNIT_ASSERT(value->Contains(L"Arbitrary X-Y Coordinate Systems"));
+        REQUIRE(value->Contains(L"Arbitrary X-Y Coordinate Systems"));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1949,7 +1972,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_ValidateCoordinateSystemGeographic()
+TEST_CASE("ValidateCoordinateSystemGeographic", "[CoordinateSystem]")
 {
     try
     {
@@ -1956,21 +1979,21 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
-        CPPUNIT_ASSERT(pCoordinateSystem->GetType() == MgCoordinateSystemType::Geographic);
+        REQUIRE(pCoordinateSystem->GetType() == MgCoordinateSystemType::Geographic);
         STRING actualWkt = pCoordinateSystem->ToString();
         std::string msg = "Comparison Failure.\n>> Expect: ";
         msg += MgUtil::WideCharToMultiByte(ogcWkt);
         msg += "\n>> Actual: ";
         msg += MgUtil::WideCharToMultiByte(actualWkt);
-        CPPUNIT_ASSERT_MESSAGE(msg, actualWkt == ogcWkt);
+        REQUIRE(actualWkt == ogcWkt);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -1978,7 +2001,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_ConvertFromLonLat()
+TEST_CASE("Geographic_ConvertFromLonLat", "[CoordinateSystem]")
 {
     try
     {
@@ -1985,7 +2008,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double lon = 45.0;
         double lat = 90.0;
@@ -1993,21 +2016,21 @@
         pCoordinateSystem->ConvertFromLonLat(lon, lat, x, y);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(lat == y);
-        CPPUNIT_ASSERT(lon == x);
+        REQUIRE(lat == y);
+        REQUIRE(lon == x);
 
         MgCoordinateXY coord(45.0, 90.0);
         Ptr<MgCoordinate> pCoord = pCoordinateSystem->ConvertFromLonLat(&coord);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(coord.GetX() == 45.0);
-        CPPUNIT_ASSERT(coord.GetY() == 90.0);
+        REQUIRE(coord.GetX() == 45.0);
+        REQUIRE(coord.GetY() == 90.0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2015,7 +2038,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_ConvertFromLonLatArray()
+TEST_CASE("Geographic_ConvertFromLonLatArray", "[CoordinateSystem]")
 {
     try
     {
@@ -2022,7 +2045,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double lon[4] = { 45.0, 30.0, 15.0, 0.0 };
         double lat[4] = { 90.0, 75.0, 60.0, 55.0 };
@@ -2030,20 +2053,20 @@
         pCoordinateSystem->ConvertFromLonLat(lon, lat, x, y, 4);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(lon[0] == x[0]);
-        CPPUNIT_ASSERT(lat[0] == y[0]);
-        CPPUNIT_ASSERT(lon[1] == x[1]);
-        CPPUNIT_ASSERT(lat[1] == y[1]);
-        CPPUNIT_ASSERT(lon[2] == x[2]);
-        CPPUNIT_ASSERT(lat[2] == y[2]);
-        CPPUNIT_ASSERT(lon[3] == x[3]);
-        CPPUNIT_ASSERT(lat[3] == y[3]);
+        REQUIRE(lon[0] == x[0]);
+        REQUIRE(lat[0] == y[0]);
+        REQUIRE(lon[1] == x[1]);
+        REQUIRE(lat[1] == y[1]);
+        REQUIRE(lon[2] == x[2]);
+        REQUIRE(lat[2] == y[2]);
+        REQUIRE(lon[3] == x[3]);
+        REQUIRE(lat[3] == y[3]);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2051,7 +2074,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_ConvertToLonLat()
+TEST_CASE("Geographic_ConvertToLonLat", "[CoordinateSystem]")
 {
     try
     {
@@ -2058,7 +2081,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double x = 45.0;
         double y = 90.0;
@@ -2066,21 +2089,21 @@
         pCoordinateSystem->ConvertToLonLat(x, y, lon, lat);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(lat == y);
-        CPPUNIT_ASSERT(lon == x);
+        REQUIRE(lat == y);
+        REQUIRE(lon == x);
 
         MgCoordinateXY coord(45.0, 90.0);
         Ptr<MgCoordinate> pCoord = pCoordinateSystem->ConvertToLonLat(&coord);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(coord.GetX() == 45.0);
-        CPPUNIT_ASSERT(coord.GetY() == 90.0);
+        REQUIRE(coord.GetX() == 45.0);
+        REQUIRE(coord.GetY() == 90.0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2088,7 +2111,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_ConvertToLonLatArray()
+TEST_CASE("Geographic_ConvertToLonLatArray", "[CoordinateSystem]")
 {
     try
     {
@@ -2095,7 +2118,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double x[4] = { 45.0, 30.0, 15.0, 0.0 };
         double y[4] = { 90.0, 75.0, 60.0, 55.0 };
@@ -2103,20 +2126,20 @@
         pCoordinateSystem->ConvertToLonLat(x, y, lon, lat, 4);
 
         // The values shouldn't change
-        CPPUNIT_ASSERT(lon[0] == x[0]);
-        CPPUNIT_ASSERT(lat[0] == y[0]);
-        CPPUNIT_ASSERT(lon[1] == x[1]);
-        CPPUNIT_ASSERT(lat[1] == y[1]);
-        CPPUNIT_ASSERT(lon[2] == x[2]);
-        CPPUNIT_ASSERT(lat[2] == y[2]);
-        CPPUNIT_ASSERT(lon[3] == x[3]);
-        CPPUNIT_ASSERT(lat[3] == y[3]);
+        REQUIRE(lon[0] == x[0]);
+        REQUIRE(lat[0] == y[0]);
+        REQUIRE(lon[1] == x[1]);
+        REQUIRE(lat[1] == y[1]);
+        REQUIRE(lon[2] == x[2]);
+        REQUIRE(lat[2] == y[2]);
+        REQUIRE(lon[3] == x[3]);
+        REQUIRE(lat[3] == y[3]);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2124,7 +2147,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_ConvertCoordinateSystemUnitsToMeters()
+TEST_CASE("Geographic_ConvertCoordinateSystemUnitsToMeters", "[CoordinateSystem]")
 {
     try
     {
@@ -2131,16 +2154,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(111319.4908, meters));
+        REQUIRE(MgUtil::ValuesEqual(111319.4908, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2148,7 +2171,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_ConvertMetersToCoordinateSystemUnits()
+TEST_CASE("Geographic_ConvertMetersToCoordinateSystemUnits", "[CoordinateSystem]")
 {
     try
     {
@@ -2155,16 +2178,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double units = pCoordinateSystem->ConvertMetersToCoordinateSystemUnits(111319.4908);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, units));
+        REQUIRE(MgUtil::ValuesEqual(1.0, units));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2172,7 +2195,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_MeasureEuclideanDistance()
+TEST_CASE("Geographic_MeasureEuclideanDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -2179,25 +2202,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double distance = pCoordinateSystem->MeasureEuclideanDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, distance));
+        REQUIRE(MgUtil::ValuesEqual(5.0, distance));
 
         double distance2 = pCoordinateSystem->MeasureEuclideanDistance(0.0, 0.0, 4.0, 3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(distance, distance2));
+        REQUIRE(MgUtil::ValuesEqual(distance, distance2));
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(556597.4540, meters));
+        REQUIRE(MgUtil::ValuesEqual(556597.4540, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2205,7 +2228,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_MeasureGreatCircleDistance()
+TEST_CASE("Geographic_MeasureGreatCircleDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -2212,25 +2235,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double distance = pCoordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(4.986535473, distance));
+        REQUIRE(MgUtil::ValuesEqual(4.986535473, distance));
 
         double distance2 = pCoordinateSystem->MeasureGreatCircleDistance(0.0, 0.0, 4.0, 3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(distance, distance2));
+        REQUIRE(MgUtil::ValuesEqual(distance, distance2));
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(555098.5897, meters));
+        REQUIRE(MgUtil::ValuesEqual(555098.5897, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2238,7 +2261,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetAzimuth()
+TEST_CASE("Geographic_GetAzimuth", "[CoordinateSystem]")
 {
     try
     {
@@ -2245,19 +2268,19 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double degrees = pCoordinateSystem->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(53.26700666, degrees));
+        REQUIRE(MgUtil::ValuesEqual(53.26700666, degrees));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2265,7 +2288,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetCoordinate()
+TEST_CASE("Geographic_GetCoordinate", "[CoordinateSystem]")
 {
     try
     {
@@ -2272,18 +2295,18 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord(0.0, 0.0);
         Ptr<MgCoordinate> pCoord = pCoordinateSystem->GetCoordinate(&coord, 36.86989765, 5.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.004913619, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(4.025035767, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(3.004913619, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(4.025035767, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2291,7 +2314,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_ValidateCoordinateSystemProjected()
+TEST_CASE("ValidateCoordinateSystemProjected", "[CoordinateSystem]")
 {
     try
     {
@@ -2298,16 +2321,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
-        CPPUNIT_ASSERT(pCoordinateSystem->GetType() == MgCoordinateSystemType::Projected);
-        CPPUNIT_ASSERT(pCoordinateSystem->ToString() == ogcWkt);
+        REQUIRE(pCoordinateSystem->GetType() == MgCoordinateSystemType::Projected);
+        REQUIRE(pCoordinateSystem->ToString() == ogcWkt);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2315,7 +2338,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_ConvertFromLonLat()
+TEST_CASE("Projected_ConvertFromLonLat", "[CoordinateSystem]")
 {
     try
     {
@@ -2322,25 +2345,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double lon = -84.46;
         double lat = 33.89;
         double x,y;
         pCoordinateSystem->ConvertFromLonLat(lon, lat, x, y);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410983.2513, x));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, y));
+        REQUIRE(MgUtil::ValuesEqual(410983.2513, x));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, y));
 
         MgCoordinateXY coord(-84.46, 33.89);
         Ptr<MgCoordinate> pCoord = pCoordinateSystem->ConvertFromLonLat(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410983.2513, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410983.2513, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2348,7 +2371,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_ConvertFromLonLatArray()
+TEST_CASE("Projected_ConvertFromLonLatArray", "[CoordinateSystem]")
 {
     try
     {
@@ -2355,26 +2378,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double lon[4] = { -84.46, -84.0, -83.0, -82.0 };
         double lat[4] = { 33.89, 33.0, 32.0, 31.0 };
         double x[4],y[4];
         pCoordinateSystem->ConvertFromLonLat(lon, lat, x, y, 4);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410983.2513, x[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, y[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(551096.7774, x[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1091213.712, y[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(861668.2135, x[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(729342.553, y[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1178912.136, x[3]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(370280.4158, y[3]));
+        REQUIRE(MgUtil::ValuesEqual(410983.2513, x[0]));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, y[0]));
+        REQUIRE(MgUtil::ValuesEqual(551096.7774, x[1]));
+        REQUIRE(MgUtil::ValuesEqual(1091213.712, y[1]));
+        REQUIRE(MgUtil::ValuesEqual(861668.2135, x[2]));
+        REQUIRE(MgUtil::ValuesEqual(729342.553, y[2]));
+        REQUIRE(MgUtil::ValuesEqual(1178912.136, x[3]));
+        REQUIRE(MgUtil::ValuesEqual(370280.4158, y[3]));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2382,7 +2405,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_ConvertToLonLat()
+TEST_CASE("Projected_ConvertToLonLat", "[CoordinateSystem]")
 {
     try
     {
@@ -2389,12 +2412,12 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord(410961.8644, 1415078.441);
         Ptr<MgCoordinate> pCoord = pCoordinateSystem->ConvertToLonLat(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
 
     }
     catch(MgException* e)
@@ -2401,7 +2424,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2409,7 +2432,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_ConvertToLonLatArray()
+TEST_CASE("Projected_ConvertToLonLatArray", "[CoordinateSystem]")
 {
     try
     {
@@ -2416,7 +2439,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double x[4] = { 410961.8644, 551096.7774, 861668.2135, 1178912.136 };
         double y[4] = { 1415078.441, 1091213.712, 729342.553, 370280.4158 };
@@ -2423,20 +2446,20 @@
         double lon[4],lat[4];
 
         pCoordinateSystem->ConvertToLonLat(x, y, lon, lat, 4);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, lon[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, lat[0]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.0, lon[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.0, lat[1]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-83.0, lon[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.0, lat[2]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-82.0, lon[3]));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(31.0, lat[3]));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, lon[0]));
+        REQUIRE(MgUtil::ValuesEqual(33.89, lat[0]));
+        REQUIRE(MgUtil::ValuesEqual(-84.0, lon[1]));
+        REQUIRE(MgUtil::ValuesEqual(33.0, lat[1]));
+        REQUIRE(MgUtil::ValuesEqual(-83.0, lon[2]));
+        REQUIRE(MgUtil::ValuesEqual(32.0, lat[2]));
+        REQUIRE(MgUtil::ValuesEqual(-82.0, lon[3]));
+        REQUIRE(MgUtil::ValuesEqual(31.0, lat[3]));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2444,7 +2467,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_ConvertCoordinateSystemUnitsToMeters()
+TEST_CASE("Projected_ConvertCoordinateSystemUnitsToMeters", "[CoordinateSystem]")
 {
     try
     {
@@ -2451,16 +2474,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.30480061, meters));
+        REQUIRE(MgUtil::ValuesEqual(0.30480061, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2468,7 +2491,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_ConvertMetersToCoordinateSystemUnits()
+TEST_CASE("Projected_ConvertMetersToCoordinateSystemUnits", "[CoordinateSystem]")
 {
     try
     {
@@ -2475,16 +2498,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double units = pCoordinateSystem->ConvertMetersToCoordinateSystemUnits(0.30480061);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, units));
+        REQUIRE(MgUtil::ValuesEqual(1.0, units));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2492,7 +2515,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_MeasureEuclideanDistance()
+TEST_CASE("Projected_MeasureEuclideanDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -2499,25 +2522,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double distance = pCoordinateSystem->MeasureEuclideanDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, distance));
+        REQUIRE(MgUtil::ValuesEqual(5.0, distance));
 
         double distance2 = pCoordinateSystem->MeasureEuclideanDistance(0.0, 0.0, 4.0, 3.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(distance, distance2));
+        REQUIRE(MgUtil::ValuesEqual(distance, distance2));
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.52400305, meters));
+        REQUIRE(MgUtil::ValuesEqual(1.52400305, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2525,7 +2548,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_MeasureGreatCircleDistance()
+TEST_CASE("Projected_MeasureGreatCircleDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -2532,25 +2555,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(410961.8644, 1415078.441);
         MgCoordinateXY coord2(432415.4557, 1362302.051);
 
         double distance = pCoordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(56975.49704, distance));
+        REQUIRE(MgUtil::ValuesEqual(56975.49704, distance));
 
         double distance2 = pCoordinateSystem->MeasureGreatCircleDistance(410961.8644, 1415078.441, 432415.4557, 1362302.051);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(distance, distance2));
+        REQUIRE(MgUtil::ValuesEqual(distance, distance2));
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(17366.16623, meters));
+        REQUIRE(MgUtil::ValuesEqual(17366.16623, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2558,7 +2581,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetAzimuth()
+TEST_CASE("Projected_GetAzimuth", "[CoordinateSystem]")
 {
     try
     {
@@ -2565,19 +2588,19 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord1(410961.8644, 1415078.441);
         MgCoordinateXY coord2(432415.4557, 1362302.051);
 
         double degrees = pCoordinateSystem->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(157.7149495, degrees));
+        REQUIRE(MgUtil::ValuesEqual(157.7149495, degrees));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2585,7 +2608,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetCoordinate()
+TEST_CASE("Projected_GetCoordinate", "[CoordinateSystem]")
 {
     try
     {
@@ -2592,18 +2615,18 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         MgCoordinateXY coord(410961.8644, 1415078.441);
         Ptr<MgCoordinate> pCoord = pCoordinateSystem->GetCoordinate(&coord, 157.7491121, 57002.22092);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(432415.4557, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1362302.051, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(432415.4557, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1362302.051, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2611,7 +2634,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_Measure_GetDistance()
+TEST_CASE("Arbitrary_Measure_GetDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -2618,25 +2641,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
         double distance = measure->GetDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, distance));
+        REQUIRE(MgUtil::ValuesEqual(5.0, distance));
 
         Ptr<MgCoordinateSystem> coordSys = measure->GetCoordSys();
         double meters = coordSys->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(8046.72, meters));
+        REQUIRE(MgUtil::ValuesEqual(8046.72, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2644,7 +2667,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_Measure_GetAzimuth()
+TEST_CASE("Arbitrary_Measure_GetAzimuth", "[CoordinateSystem]")
 {
     try
     {
@@ -2651,22 +2674,22 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(5.0, 5.0);
 
         double degrees = measure->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(45.0, degrees));
+        REQUIRE(MgUtil::ValuesEqual(45.0, degrees));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2674,7 +2697,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_Measure_GetCoordinate()
+TEST_CASE("Arbitrary_Measure_GetCoordinate", "[CoordinateSystem]")
 {
     try
     {
@@ -2681,21 +2704,21 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ArbitraryWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord(0.0, 0.0);
         Ptr<MgCoordinate> pCoord = measure->GetCoordinate(&coord, 45.0, 10.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(7.071067812, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(7.071067812, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(7.071067812, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(7.071067812, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2703,7 +2726,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_Measure_GetDistance()
+TEST_CASE("Geographic_Measure_GetDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -2710,25 +2733,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double distance = measure->GetDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(4.986535473, distance));
+        REQUIRE(MgUtil::ValuesEqual(4.986535473, distance));
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(555098.5897, meters));
+        REQUIRE(MgUtil::ValuesEqual(555098.5897, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2736,7 +2759,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_Measure_GetAzimuth()
+TEST_CASE("Geographic_Measure_GetAzimuth", "[CoordinateSystem]")
 {
     try
     {
@@ -2743,22 +2766,22 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord1(0.0, 0.0);
         MgCoordinateXY coord2(4.0, 3.0);
 
         double degrees = measure->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(53.26700666, degrees));
+        REQUIRE(MgUtil::ValuesEqual(53.26700666, degrees));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2766,7 +2789,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_Measure_GetCoordinate()
+TEST_CASE("Geographic_Measure_GetCoordinate", "[CoordinateSystem]")
 {
     try
     {
@@ -2773,21 +2796,21 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord(0.0, 0.0);
         Ptr<MgCoordinate> pCoord = measure->GetCoordinate(&coord, 60.0, 10.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(8.682351371, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.014236434, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(8.682351371, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.014236434, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2795,7 +2818,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_ConvertCode()
+TEST_CASE("Geographic_ConvertCode", "[CoordinateSystem]")
 {
     try
     {
@@ -2803,18 +2826,18 @@
 
         MgCoordinateSystemFactory factory;
         STRING code = factory.ConvertWktToCoordinateSystemCode(ogcWkt);
-        CPPUNIT_ASSERT(_wcsicmp(L"LL84", code.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"LL84", code.c_str()) == 0);
         STRING wkt = factory.ConvertCoordinateSystemCodeToWkt(code);
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
 
         wkt = factory.ConvertCoordinateSystemCodeToWkt(L"ll84");
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2822,7 +2845,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetUnits()
+TEST_CASE("Geographic_GetUnits", "[CoordinateSystem]")
 {
     try
     {
@@ -2829,16 +2852,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING units = pCoordinateSystem->GetUnits();
-        CPPUNIT_ASSERT(_wcsicmp(L"Degree", units.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Degree", units.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2846,7 +2869,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetUnitScale()
+TEST_CASE("Geographic_GetUnitScale", "[CoordinateSystem]")
 {
     try
     {
@@ -2853,16 +2876,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double scale = pCoordinateSystem->GetUnitScale();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(111319.4908, scale));
+        REQUIRE(MgUtil::ValuesEqual(111319.4908, scale));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2870,7 +2893,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetMinX()
+TEST_CASE("Geographic_GetMinX", "[Broken]")
 {
     try
     {
@@ -2877,19 +2900,19 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMinX();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-180.0, value));
+        REQUIRE(MgUtil::ValuesEqual(-180.0, value));
 
         value = pCoordinateSystem->GetLonMin();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-180.0, value));
+        REQUIRE(MgUtil::ValuesEqual(-180.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2897,7 +2920,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetMinY()
+TEST_CASE("Geographic_GetMinY", "[CoordinateSystem]")
 {
     try
     {
@@ -2904,19 +2927,19 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMinY();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-90.0, value));
+        REQUIRE(MgUtil::ValuesEqual(-90.0, value));
 
         value = pCoordinateSystem->GetLatMin();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-90.0, value));
+        REQUIRE(MgUtil::ValuesEqual(-90.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2924,7 +2947,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetMaxX()
+TEST_CASE("Geographic_GetMaxX", "[Broken]")
 {
     try
     {
@@ -2931,19 +2954,19 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMaxX();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(180.0, value));
+        REQUIRE(MgUtil::ValuesEqual(180.0, value));
 
         value = pCoordinateSystem->GetLonMax();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(180.0, value));
+        REQUIRE(MgUtil::ValuesEqual(180.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2951,7 +2974,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetMaxY()
+TEST_CASE("Geographic_GetMaxY", "[CoordinateSystem]")
 {
     try
     {
@@ -2958,19 +2981,19 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMaxY();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(90.0, value));
+        REQUIRE(MgUtil::ValuesEqual(90.0, value));
 
         value = pCoordinateSystem->GetLatMax();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(90.0, value));
+        REQUIRE(MgUtil::ValuesEqual(90.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -2978,7 +3001,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetCsCode()
+TEST_CASE("Geographic_GetCsCode", "[CoordinateSystem]")
 {
     try
     {
@@ -2985,16 +3008,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetCsCode();
-        CPPUNIT_ASSERT(_wcsicmp(L"LL84", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"LL84", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3002,7 +3025,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetDescription()
+TEST_CASE("Geographic_GetDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3009,16 +3032,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"WGS84 datum, Latitude-Longitude; Degrees", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"WGS84 datum, Latitude-Longitude; Degrees", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3026,7 +3049,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetProjection()
+TEST_CASE("Geographic_GetProjection", "[CoordinateSystem]")
 {
     try
     {
@@ -3033,16 +3056,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetProjection();
-        CPPUNIT_ASSERT(_wcsicmp(L"LL", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"LL", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3050,7 +3073,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetProjectionDescription()
+TEST_CASE("Geographic_GetProjectionDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3057,16 +3080,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetProjectionDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"Null Projection, produces/processes Latitude & Longitude", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Null Projection, produces/processes Latitude & Longitude", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3074,7 +3097,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetDatum()
+TEST_CASE("Geographic_GetDatum", "[CoordinateSystem]")
 {
     try
     {
@@ -3081,16 +3104,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDatum();
-        CPPUNIT_ASSERT(_wcsicmp(L"WGS84", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"WGS84", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3098,7 +3121,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetDatumDescription()
+TEST_CASE("Geographic_GetDatumDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3105,16 +3128,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDatumDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"World Geodetic System of 1984", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"World Geodetic System of 1984", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3122,7 +3145,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetEllipsoid()
+TEST_CASE("Geographic_GetEllipsoid", "[CoordinateSystem]")
 {
     try
     {
@@ -3129,16 +3152,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetEllipsoid();
-        CPPUNIT_ASSERT(_wcsicmp(L"WGS84", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"WGS84", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3146,7 +3169,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetEllipsoidDescription()
+TEST_CASE("Geographic_GetEllipsoidDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3153,16 +3176,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetEllipsoidDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"World Geodetic System of 1984, GEM 10C", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"World Geodetic System of 1984, GEM 10C", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3170,7 +3193,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_GetCategory()
+TEST_CASE("Geographic_GetCategory", "[CoordinateSystem]")
 {
     try
     {
@@ -3177,16 +3200,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgStringCollection> value = pCoordinateSystem->GetCategories();
-        CPPUNIT_ASSERT(value->Contains(L"Lat Longs"));
+        REQUIRE(value->Contains(L"Lat Longs"));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3194,7 +3217,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_Measure_GetDistance()
+TEST_CASE("Projected_Measure_GetDistance", "[CoordinateSystem]")
 {
     try
     {
@@ -3201,25 +3224,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord1(410961.8644, 1415078.441);
         MgCoordinateXY coord2(432415.4557, 1362302.051);
 
         double distance = measure->GetDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(56975.49704, distance));
+        REQUIRE(MgUtil::ValuesEqual(56975.49704, distance));
 
         double meters = pCoordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(17366.16623, meters));
+        REQUIRE(MgUtil::ValuesEqual(17366.16623, meters));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3227,7 +3250,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_Measure_GetAzimuth()
+TEST_CASE("Projected_Measure_GetAzimuth", "[CoordinateSystem]")
 {
     try
     {
@@ -3234,22 +3257,22 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord1(410961.8644, 1415078.441);
         MgCoordinateXY coord2(432415.4557, 1362302.051);
 
         double degrees = measure->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(157.7149495, degrees));
+        REQUIRE(MgUtil::ValuesEqual(157.7149495, degrees));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3257,7 +3280,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_Measure_GetCoordinate()
+TEST_CASE("Projected_Measure_GetCoordinate", "[CoordinateSystem]")
 {
     try
     {
@@ -3264,21 +3287,21 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgCoordinateSystemMeasure> measure = pCoordinateSystem->GetMeasure();
-        CPPUNIT_ASSERT(measure);
+        REQUIRE(measure);
 
         MgCoordinateXY coord(410961.8644, 1415078.441);
         Ptr<MgCoordinate> pCoord = measure->GetCoordinate(&coord, 157.7491121, 57002.220920);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(432415.4557, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1362302.051, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(432415.4557, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1362302.051, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3286,7 +3309,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_ConvertCode()
+TEST_CASE("Projected_ConvertCode", "[CoordinateSystem]")
 {
     try
     {
@@ -3294,18 +3317,18 @@
 
         MgCoordinateSystemFactory factory;
         STRING code = factory.ConvertWktToCoordinateSystemCode(ogcWkt);
-        CPPUNIT_ASSERT(_wcsicmp(L"GA-W", code.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"GA-W", code.c_str()) == 0);
         STRING wkt = factory.ConvertCoordinateSystemCodeToWkt(code);
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
 
         wkt = factory.ConvertCoordinateSystemCodeToWkt(L"ga-w");
-        CPPUNIT_ASSERT(wkt.length() > 0);
+        REQUIRE(wkt.length() > 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3313,7 +3336,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetUnits()
+TEST_CASE("Projected_GetUnits", "[CoordinateSystem]")
 {
     try
     {
@@ -3320,16 +3343,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING units = pCoordinateSystem->GetUnits();
-        CPPUNIT_ASSERT(_wcsicmp(L"FOOT", units.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"FOOT", units.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3337,7 +3360,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetUnitScale()
+TEST_CASE("Projected_GetUnitScale", "[CoordinateSystem]")
 {
     try
     {
@@ -3344,16 +3367,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double scale = pCoordinateSystem->GetUnitScale();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.30480061, scale));
+        REQUIRE(MgUtil::ValuesEqual(0.30480061, scale));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3361,7 +3384,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetMinX()
+TEST_CASE("Projected_GetMinX", "[Broken]")
 {
     try
     {
@@ -3368,16 +3391,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMinX();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-171305.5915, value));
+        REQUIRE(MgUtil::ValuesEqual(-171305.5915, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3385,7 +3408,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetMinY()
+TEST_CASE("Projected_GetMinY", "[Broken]")
 {
     try
     {
@@ -3392,16 +3415,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMinY();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.0, value));
+        REQUIRE(MgUtil::ValuesEqual(0.0, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3409,7 +3432,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetMaxX()
+TEST_CASE("Projected_GetMaxX", "[Broken]")
 {
     try
     {
@@ -3416,16 +3439,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMaxX();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1171305.5915, value));
+        REQUIRE(MgUtil::ValuesEqual(1171305.5915, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3433,7 +3456,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetMaxY()
+TEST_CASE("Projected_GetMaxY", "[Broken]")
 {
     try
     {
@@ -3440,16 +3463,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         double value = pCoordinateSystem->GetMaxY();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(21920187.62, value));
+        REQUIRE(MgUtil::ValuesEqual(21920187.62, value));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3457,7 +3480,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetCsCode()
+TEST_CASE("Projected_GetCsCode", "[CoordinateSystem]")
 {
     try
     {
@@ -3464,16 +3487,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetCsCode();
-        CPPUNIT_ASSERT(_wcsicmp(L"GA-W", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"GA-W", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3481,7 +3504,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetDescription()
+TEST_CASE("Projected_GetDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3488,16 +3511,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"NAD27 Georgia State Planes, West Zone(1002), US Foot", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"NAD27 Georgia State Planes, West Zone(1002), US Foot", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3505,7 +3528,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetProjection()
+TEST_CASE("Projected_GetProjection", "[CoordinateSystem]")
 {
     try
     {
@@ -3512,16 +3535,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetProjection();
-        CPPUNIT_ASSERT(_wcsicmp(L"TM", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"TM", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3529,7 +3552,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetProjectionDescription()
+TEST_CASE("Projected_GetProjectionDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3536,16 +3559,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetProjectionDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"Transverse Mercator or Gauss Kruger Projection", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Transverse Mercator or Gauss Kruger Projection", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3553,7 +3576,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetDatum()
+TEST_CASE("Projected_GetDatum", "[CoordinateSystem]")
 {
     try
     {
@@ -3560,16 +3583,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDatum();
-        CPPUNIT_ASSERT(_wcsicmp(L"NAD27", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"NAD27", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3577,7 +3600,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetDatumDescription()
+TEST_CASE("Projected_GetDatumDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3584,16 +3607,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetDatumDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"NAD 1927, mean Values, Continental United States", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"NAD 1927, mean Values, Continental United States", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3601,7 +3624,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetEllipsoid()
+TEST_CASE("Projected_GetEllipsoid", "[CoordinateSystem]")
 {
     try
     {
@@ -3608,16 +3631,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetEllipsoid();
-        CPPUNIT_ASSERT(_wcsicmp(L"CLRK66", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"CLRK66", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3625,7 +3648,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetEllipsoidDescription()
+TEST_CASE("Projected_GetEllipsoidDescription", "[CoordinateSystem]")
 {
     try
     {
@@ -3632,16 +3655,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         STRING value = pCoordinateSystem->GetEllipsoidDescription();
-        CPPUNIT_ASSERT(_wcsicmp(L"Clarke 1866, Benoit Ratio", value.c_str()) == 0);
+        REQUIRE(_wcsicmp(L"Clarke 1866, Benoit Ratio", value.c_str()) == 0);
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3649,7 +3672,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_GetCategory()
+TEST_CASE("Projected_GetCategory", "[CoordinateSystem]")
 {
     try
     {
@@ -3656,16 +3679,16 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = ProjectedWkt;
         Ptr<MgCoordinateSystem> pCoordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(pCoordinateSystem);
+        REQUIRE(pCoordinateSystem);
 
         Ptr<MgStringCollection> value = pCoordinateSystem->GetCategories();
-        CPPUNIT_ASSERT(value->Contains(L"USA, Georgia"));
+        REQUIRE(value->Contains(L"USA, Georgia"));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3673,7 +3696,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_XY()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -3680,24 +3703,24 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(10.0, 5.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3705,7 +3728,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_XYZ()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -3712,25 +3735,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(10.0, 5.0, 1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.280833333, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(3.280833333, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3738,7 +3761,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXY()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -3745,25 +3768,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXY coord(10.0, 5.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3771,7 +3794,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYM()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -3778,26 +3801,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYM coord(10.0, 5.0, 100.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(328.0833333, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(328.0833333, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3805,7 +3828,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYZ()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -3812,26 +3835,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZ coord(10.0, 5.0, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.280833333, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(3.280833333, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3839,7 +3862,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYZM()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -3846,27 +3869,27 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZM coord(10.0, 5.0, 1.0, 100.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.280833333, pCoord->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(328.0833333, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(3.280833333, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(328.0833333, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3874,7 +3897,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_EnvelopeXY()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -3881,14 +3904,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXY(0.0, 1.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXY(10.0, 5.0);
@@ -3898,16 +3921,16 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.0, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.280833333, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(0.0, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(3.280833333, ll->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3915,7 +3938,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Arbitrary_Transform_EnvelopeXYZ()
+TEST_CASE("Arbitrary_To_Arbitrary_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -3922,14 +3945,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXYZ(0.0, 1.0, 1.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXYZ(10.0, 5.0, 2.0);
@@ -3939,18 +3962,18 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(32.80833333, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(16.40416667, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(2.0, ur->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.0, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.280833333, ll->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, ll->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(32.80833333, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(16.40416667, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(2.0, ur->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(0.0, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(3.280833333, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, ll->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3958,7 +3981,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_XY()
+TEST_CASE("Arbitrary_To_Geographic_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -3965,11 +3988,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -3984,7 +4007,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -3992,7 +4015,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_XYZ()
+TEST_CASE("Arbitrary_To_Geographic_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -3999,11 +4022,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4018,7 +4041,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4026,7 +4049,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_CoordinateXY()
+TEST_CASE("Arbitrary_To_Geographic_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4033,11 +4056,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4052,7 +4075,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4060,7 +4083,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYM()
+TEST_CASE("Arbitrary_To_Geographic_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -4067,11 +4090,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4086,7 +4109,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4094,7 +4117,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYZ()
+TEST_CASE("Arbitrary_To_Geographic_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4101,11 +4124,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4120,7 +4143,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4128,7 +4151,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYZM()
+TEST_CASE("Arbitrary_To_Geographic_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -4135,11 +4158,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4154,7 +4177,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4162,7 +4185,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_EnvelopeXY()
+TEST_CASE("Arbitrary_To_Geographic_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4169,11 +4192,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4188,7 +4211,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4196,7 +4219,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Geographic_Transform_EnvelopeXYZ()
+TEST_CASE("Arbitrary_To_Geographic_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4203,11 +4226,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4222,7 +4245,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4230,7 +4253,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_XY()
+TEST_CASE("Arbitrary_To_Projected_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -4237,11 +4260,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4256,7 +4279,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4264,7 +4287,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_XYZ()
+TEST_CASE("Arbitrary_To_Projected_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4271,11 +4294,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4290,7 +4313,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4298,7 +4321,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_CoordinateXY()
+TEST_CASE("Arbitrary_To_Projected_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4305,11 +4328,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4324,7 +4347,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4332,7 +4355,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_CoordinateXYM()
+TEST_CASE("Arbitrary_To_Projected_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -4339,11 +4362,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4358,7 +4381,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4366,7 +4389,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_CoordinateXYZ()
+TEST_CASE("Arbitrary_To_Projected_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4373,11 +4396,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4392,7 +4415,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4400,7 +4423,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_CoordinateXYZM()
+TEST_CASE("Arbitrary_To_Projected_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -4407,11 +4430,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4426,7 +4449,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4434,7 +4457,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_EnvelopeXY()
+TEST_CASE("Arbitrary_To_Projected_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4441,11 +4464,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4460,7 +4483,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4468,7 +4491,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Arbitrary_To_Projected_Transform_EnvelopeXYZ()
+TEST_CASE("Arbitrary_To_Projected_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4475,11 +4498,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ArbitraryWkt_Meter;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4494,7 +4517,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4502,7 +4525,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_XY()
+TEST_CASE("Geographic_To_Arbitrary_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -4509,11 +4532,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4528,7 +4551,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4536,7 +4559,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_XYZ()
+TEST_CASE("Geographic_To_Arbitrary_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4543,11 +4566,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4562,7 +4585,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4570,7 +4593,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_CoordinateXY()
+TEST_CASE("Geographic_To_Arbitrary_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4577,11 +4600,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4596,7 +4619,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4604,7 +4627,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYM()
+TEST_CASE("Geographic_To_Arbitrary_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -4611,11 +4634,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4630,7 +4653,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4638,7 +4661,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYZ()
+TEST_CASE("Geographic_To_Arbitrary_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4645,11 +4668,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4664,7 +4687,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4672,7 +4695,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYZM()
+TEST_CASE("Geographic_To_Arbitrary_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -4679,11 +4702,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4698,7 +4721,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4706,7 +4729,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_EnvelopeXY()
+TEST_CASE("Geographic_To_Arbitrary_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4713,11 +4736,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4732,7 +4755,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4740,7 +4763,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Arbitrary_Transform_EnvelopeXYZ()
+TEST_CASE("Geographic_To_Arbitrary_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4747,11 +4770,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -4766,7 +4789,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4774,7 +4797,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_XY()
+TEST_CASE("Geographic_To_Geographic_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -4781,24 +4804,24 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(10.0, 5.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4806,7 +4829,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_XYZ()
+TEST_CASE("Geographic_To_Geographic_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4813,25 +4836,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(10.0, 5.0, 1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4839,7 +4862,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_CoordinateXY()
+TEST_CASE("Geographic_To_Geographic_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4846,25 +4869,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXY coord(10.0, 5.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4872,7 +4895,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_CoordinateXYM()
+TEST_CASE("Geographic_To_Geographic_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -4879,26 +4902,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYM coord(10.0, 5.0, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4906,7 +4929,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_CoordinateXYZ()
+TEST_CASE("Geographic_To_Geographic_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -4913,26 +4936,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZ coord(10.0, 5.0, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4940,7 +4963,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_CoordinateXYZM()
+TEST_CASE("Geographic_To_Geographic_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -4947,27 +4970,27 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZM coord(10.0, 5.0, 1.0, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -4975,7 +4998,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_EnvelopeXY()
+TEST_CASE("Geographic_To_Geographic_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -4982,14 +5005,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXY(0.0, 1.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXY(10.0, 5.0);
@@ -4999,16 +5022,16 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.0, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(0.0, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, ll->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5016,7 +5039,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Geographic_Transform_EnvelopeXYZ()
+TEST_CASE("Geographic_To_Geographic_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5023,14 +5046,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXYZ(0.0, 1.0, 1.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXYZ(10.0, 5.0, 2.0);
@@ -5040,18 +5063,18 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(10.0, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(5.0, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(2.0, ur->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.0, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, ll->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, ll->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(10.0, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(5.0, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(2.0, ur->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(0.0, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, ll->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5059,7 +5082,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_XY()
+TEST_CASE("Geographic_To_Projected_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -5066,24 +5089,24 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(-84.46, 33.89);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5091,7 +5114,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_XYZ()
+TEST_CASE("Geographic_To_Projected_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5098,26 +5121,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(-84.46, 33.89, 1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
         // TODO: Commented out because Mentor gives different results on Linux
-//        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.116561399, pCoord->GetZ()));
+//        REQUIRE(MgUtil::ValuesEqual(3.116561399, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5125,7 +5148,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_CoordinateXY()
+TEST_CASE("Geographic_To_Projected_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -5132,25 +5155,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXY coord(-84.46, 33.89);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5158,7 +5181,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_CoordinateXYM()
+TEST_CASE("Geographic_To_Projected_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -5165,26 +5188,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYM coord(-84.46, 33.89, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(365220.6956, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(365220.6956, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5192,7 +5215,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_CoordinateXYZ()
+TEST_CASE("Geographic_To_Projected_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5199,27 +5222,27 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZ coord(-84.46, 33.89, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
         // TODO: Commented out because Mentor gives different results on Linux
-//        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.116561399, pCoord->GetZ()));
+//        REQUIRE(MgUtil::ValuesEqual(3.116561399, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5227,7 +5250,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_CoordinateXYZM()
+TEST_CASE("Geographic_To_Projected_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -5234,29 +5257,29 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZM coord(-84.46, 33.89, 1.0, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
         // TODO: Commented out because Mentor gives different results on Linux
-//        CPPUNIT_ASSERT(MgUtil::ValuesEqual(3.116561399, pCoord->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(365220.6956, pCoord->GetM()));
+//        REQUIRE(MgUtil::ValuesEqual(3.116561399, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(365220.6956, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5264,7 +5287,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_EnvelopeXY()
+TEST_CASE("Geographic_To_Projected_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -5271,14 +5294,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXY(-83.0, 34.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXY(-85.0, 33.0);
@@ -5288,16 +5311,16 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(853597.4323, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1457027.613, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(244492.8335, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1092185.195, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(853597.4323, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1457027.613, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(244492.8335, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1092185.195, ll->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5305,7 +5328,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_To_Projected_Transform_EnvelopeXYZ()
+TEST_CASE("Geographic_To_Projected_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5312,14 +5335,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         //#2787: We get datum shift warnings if Z coordinates are involved
         transform->IgnoreDatumShiftWarning(true);
@@ -5331,18 +5354,18 @@
 
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(853597.4323, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1457027.613, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(2.0, ur->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(551096.7774, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1091213.712, ll->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, ll->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(853597.4323, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1457027.613, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(2.0, ur->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(551096.7774, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1091213.712, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, ll->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5350,7 +5373,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_XY()
+TEST_CASE("Projected_To_Arbitrary_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -5357,11 +5380,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5376,7 +5399,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5384,7 +5407,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_XYZ()
+TEST_CASE("Projected_To_Arbitrary_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5391,11 +5414,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5410,7 +5433,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5418,7 +5441,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_CoordinateXY()
+TEST_CASE("Projected_To_Arbitrary_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -5425,11 +5448,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5444,7 +5467,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5452,7 +5475,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_CoordinateXYM()
+TEST_CASE("Projected_To_Arbitrary_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -5459,11 +5482,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5478,7 +5501,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5486,7 +5509,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_CoordinateXYZ()
+TEST_CASE("Projected_To_Arbitrary_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5493,11 +5516,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5512,7 +5535,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5520,7 +5543,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_CoordinateXYZM()
+TEST_CASE("Projected_To_Arbitrary_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -5527,11 +5550,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5546,7 +5569,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5554,7 +5577,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_EnvelopeXY()
+TEST_CASE("Projected_To_Arbitrary_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -5561,11 +5584,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5580,7 +5603,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5588,7 +5611,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Arbitrary_Transform_EnvelopeXYZ()
+TEST_CASE("Projected_To_Arbitrary_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5595,11 +5618,11 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         try
         {
@@ -5614,7 +5637,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5622,7 +5645,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_XY()
+TEST_CASE("Projected_To_Geographic_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -5629,24 +5652,24 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(410961.8644, 1415078.441);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5654,7 +5677,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_XYZ()
+TEST_CASE("Projected_To_Geographic_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5661,26 +5684,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(410961.8644, 1415078.441, 1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
         // TODO: Commented out because Mentor gives different results on Linux
-//        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.3548707958, pCoord->GetZ()));
+//        REQUIRE(MgUtil::ValuesEqual(0.3548707958, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5688,7 +5711,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_CoordinateXY()
+TEST_CASE("Projected_To_Geographic_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -5695,25 +5718,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXY coord(410961.8644, 1415078.441);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5721,7 +5744,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_CoordinateXYM()
+TEST_CASE("Projected_To_Geographic_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -5728,26 +5751,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYM coord(410961.8644, 1415078.441, 100000.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.2738070466, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(0.2738070466, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5755,7 +5778,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_CoordinateXYZ()
+TEST_CASE("Projected_To_Geographic_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5762,27 +5785,27 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZ coord(410961.8644, 1415078.441, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
         // TODO: Commented out because Mentor gives different results on Linux
-//        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.3548707958, pCoord->GetZ()));
+//        REQUIRE(MgUtil::ValuesEqual(0.3548707958, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5790,7 +5813,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_CoordinateXYZM()
+TEST_CASE("Projected_To_Geographic_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -5797,28 +5820,28 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZM coord(410961.8644, 1415078.441, 1.0, 100000.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.89, pCoord->GetY()));
         // TODO: Commented out because Mentor gives different results on Linux
-//        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.3548707958, pCoord->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.2738070466, pCoord->GetM()));
+//        REQUIRE(MgUtil::ValuesEqual(0.3548707958, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(0.2738070466, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5826,7 +5849,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_EnvelopeXY()
+TEST_CASE("Projected_To_Geographic_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -5833,14 +5856,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXY(410983.0, 1415115.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXY(410000.0, 1415000.0);
@@ -5850,16 +5873,16 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46000082, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.88999734, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46317002, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.88977686, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46000082, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.88999734, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46317002, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.88977686, ll->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5867,7 +5890,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Geographic_Transform_EnvelopeXYZ()
+TEST_CASE("Projected_To_Geographic_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5874,14 +5897,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = GeographicWkt_LL84;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXYZ(410983.0, 1415115.0, 1.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXYZ(410000.0, 1415000.0, 2.0);
@@ -5891,18 +5914,18 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46000082, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.88999734, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(2.0, ur->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-84.46317002, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(33.88977686, ll->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, ll->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46000082, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.88999734, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(2.0, ur->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(-84.46317002, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(33.88977686, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, ll->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5910,7 +5933,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_XY()
+TEST_CASE("Projected_To_Projected_Transform_XY", "[CoordinateSystem]")
 {
     try
     {
@@ -5917,24 +5940,24 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(410961.8644, 1415078.441);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5942,7 +5965,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_XYZ()
+TEST_CASE("Projected_To_Projected_Transform_XYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -5949,25 +5972,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(410961.8644, 1415078.441, 1.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -5975,7 +5998,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_CoordinateXY()
+TEST_CASE("Projected_To_Projected_Transform_CoordinateXY", "[CoordinateSystem]")
 {
     try
     {
@@ -5982,25 +6005,25 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXY coord(410961.8644, 1415078.441);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6008,7 +6031,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_CoordinateXYM()
+TEST_CASE("Projected_To_Projected_Transform_CoordinateXYM", "[CoordinateSystem]")
 {
     try
     {
@@ -6015,26 +6038,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYM coord(410961.8644, 1415078.441, 100000.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(100000.0, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(100000.0, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6042,7 +6065,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_CoordinateXYZ()
+TEST_CASE("Projected_To_Projected_Transform_CoordinateXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -6049,26 +6072,26 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZ coord(410961.8644, 1415078.441, 1.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6076,7 +6099,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_CoordinateXYZM()
+TEST_CASE("Projected_To_Projected_Transform_CoordinateXYZM", "[CoordinateSystem]")
 {
     try
     {
@@ -6083,27 +6106,27 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         MgCoordinateXYZM coord(410961.8644, 1415078.441, 1.0, 100000.0);
         Ptr<MgCoordinate> pCoord = transform->Transform(&coord);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(100000.0, pCoord->GetM()));
+        REQUIRE(MgUtil::ValuesEqual(410961.8644, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415078.441, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, pCoord->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(100000.0, pCoord->GetM()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6111,7 +6134,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_EnvelopeXY()
+TEST_CASE("Projected_To_Projected_Transform_EnvelopeXY", "[CoordinateSystem]")
 {
     try
     {
@@ -6118,14 +6141,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXY(410983.0, 1415115.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXY(410000.0, 1415000.0);
@@ -6135,16 +6158,16 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410983.0, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415115.0, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410000.0, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415000.0, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410983.0, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415115.0, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(410000.0, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415000.0, ll->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6152,7 +6175,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Projected_To_Projected_Transform_EnvelopeXYZ()
+TEST_CASE("Projected_To_Projected_Transform_EnvelopeXYZ", "[CoordinateSystem]")
 {
     try
     {
@@ -6159,14 +6182,14 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt1 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ProjectedWkt_GAW;
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> coord1 = new MgCoordinateXYZ(410983.0, 1415115.0, 1.0);
         Ptr<MgCoordinate> coord2 = new MgCoordinateXYZ(410000.0, 1415000.0, 2.0);
@@ -6176,18 +6199,18 @@
         Ptr<MgCoordinate> ur = envelopeTarget->GetUpperRightCoordinate();
         Ptr<MgCoordinate> ll = envelopeTarget->GetLowerLeftCoordinate();
 
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410983.0, ur->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415115.0, ur->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(2.0, ur->GetZ()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(410000.0, ll->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1415000.0, ll->GetY()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(1.0, ll->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(410983.0, ur->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415115.0, ur->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(2.0, ur->GetZ()));
+        REQUIRE(MgUtil::ValuesEqual(410000.0, ll->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(1415000.0, ll->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(1.0, ll->GetZ()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6195,7 +6218,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Boston_Geographic()
+TEST_CASE("Boston_Geographic", "[CoordinateSystem]")
 {
     try
     {
@@ -6202,7 +6225,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> coordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(coordinateSystem);
+        REQUIRE(coordinateSystem);
 
         MgCoordinateXY coord1(LonBoston, LatBoston);
         MgCoordinateXY coord2(LonNewYork, LatNewYork);
@@ -6209,25 +6232,25 @@
 
         // Calculate the distance to New York
         double distance = coordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(2.748740240, distance));
+        REQUIRE(MgUtil::ValuesEqual(2.748740240, distance));
 
         double meters = coordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(305988.3638, meters));
+        REQUIRE(MgUtil::ValuesEqual(305988.3638, meters));
 
         // Calculate the azimuth to New York
         double azimuth = coordinateSystem->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-125.5883639, azimuth));
+        REQUIRE(MgUtil::ValuesEqual(-125.5883639, azimuth));
 
         // If we move in the azimuth direction calculated above and the calculated distance above to New York we should end up in New York
         Ptr<MgCoordinate> coordinate = coordinateSystem->GetCoordinate(&coord1, azimuth, distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(LonNewYork, coordinate->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(LatNewYork, coordinate->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(LonNewYork, coordinate->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(LatNewYork, coordinate->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6235,7 +6258,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_NewYork_Geographic()
+TEST_CASE("NewYork_Geographic", "[CoordinateSystem]")
 {
     try
     {
@@ -6242,7 +6265,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = GeographicWkt;
         Ptr<MgCoordinateSystem> coordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(coordinateSystem);
+        REQUIRE(coordinateSystem);
 
         MgCoordinateXY coord1(LonNewYork, LatNewYork);
         MgCoordinateXY coord2(LonBoston, LatBoston);
@@ -6249,25 +6272,25 @@
 
         // Calculate the distance to Boston
         double distance = coordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(2.748740240, distance));
+        REQUIRE(MgUtil::ValuesEqual(2.748740240, distance));
 
         double meters = coordinateSystem->ConvertCoordinateSystemUnitsToMeters(distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(305988.3638, meters));
+        REQUIRE(MgUtil::ValuesEqual(305988.3638, meters));
 
         // Calculate the azimuth to Boston
         double azimuth = coordinateSystem->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(52.45839467, azimuth));
+        REQUIRE(MgUtil::ValuesEqual(52.45839467, azimuth));
 
         // If we move in the azimuth direction calculated above and the calculated distance above to Boston we should end up in Boston
         Ptr<MgCoordinate> coordinate = coordinateSystem->GetCoordinate(&coord1, azimuth, distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(LonBoston, coordinate->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(LatBoston, coordinate->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(LonBoston, coordinate->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(LatBoston, coordinate->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6275,7 +6298,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Boston_Projected()
+TEST_CASE("Boston_Projected", "[CoordinateSystem]")
 {
     try
     {
@@ -6282,7 +6305,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = Projected_UTM18_NAD83;
         Ptr<MgCoordinateSystem> coordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(coordinateSystem);
+        REQUIRE(coordinateSystem);
 
         MgCoordinateXY coord1(XBoston, YBoston);
         MgCoordinateXY coord2(XNewYork, YNewYork);
@@ -6289,22 +6312,22 @@
 
         // Calculate the distance to New York
         double distance = coordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(305853.5115, distance));
+        REQUIRE(MgUtil::ValuesEqual(305853.5115, distance));
 
         // Calculate the azimuth to New York
         double azimuth = coordinateSystem->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(-128.7141250, azimuth));
+        REQUIRE(MgUtil::ValuesEqual(-128.7141250, azimuth));
 
         // If we move in the azimuth direction calculated above and the calculated distance above to New York we should end up in New York
         Ptr<MgCoordinate> coordinate = coordinateSystem->GetCoordinate(&coord1, azimuth, distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(XNewYork, coordinate->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(YNewYork, coordinate->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(XNewYork, coordinate->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(YNewYork, coordinate->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6312,7 +6335,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_NewYork_Projected()
+TEST_CASE("NewYork_Projected", "[CoordinateSystem]")
 {
     try
     {
@@ -6319,7 +6342,7 @@
         MgCoordinateSystemFactory factory;
         STRING ogcWkt = Projected_UTM18_NAD83;
         Ptr<MgCoordinateSystem> coordinateSystem = factory.Create(ogcWkt);
-        CPPUNIT_ASSERT(coordinateSystem);
+        REQUIRE(coordinateSystem);
 
         MgCoordinateXY coord1(XNewYork, YNewYork);
         MgCoordinateXY coord2(XBoston, YBoston);
@@ -6326,22 +6349,22 @@
 
         // Calculate the distance to Boston
         double distance = coordinateSystem->MeasureGreatCircleDistance(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(305853.5115, distance));
+        REQUIRE(MgUtil::ValuesEqual(305853.5115, distance));
 
         // Calculate the azimuth to Boston
         double azimuth = coordinateSystem->GetAzimuth(&coord1, &coord2);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(51.13907730, azimuth));
+        REQUIRE(MgUtil::ValuesEqual(51.13907730, azimuth));
 
         // If we move in the azimuth direction calculated above and the calculated distance above to Boston we should end up in Boston
         Ptr<MgCoordinate> coordinate = coordinateSystem->GetCoordinate(&coord1, azimuth, distance);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(XBoston, coordinate->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(YBoston, coordinate->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(XBoston, coordinate->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(YBoston, coordinate->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6349,7 +6372,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_EPSG()
+TEST_CASE("EPSG", "[CoordinateSystem]")
 {
     try
     {
@@ -6357,25 +6380,25 @@
 
         STRING ogcWkt;
         Ptr<MgCoordinateSystemFactory> factory = new MgCoordinateSystemFactory();
-        CPPUNIT_ASSERT(factory);
+        REQUIRE(factory);
 
         ogcWkt = factory->ConvertCoordinateSystemCodeToWkt(L"EPSG:4326");
-        CPPUNIT_ASSERT_MESSAGE(MgUtil::WideCharToMultiByte(ogcWkt), ogcWkt == EPSG_4326_Wkt);
+        REQUIRE(ogcWkt == EPSG_4326_Wkt);
 
         ogcWkt = factory->ConvertCoordinateSystemCodeToWkt(L"ePsG:4326");
-        CPPUNIT_ASSERT_MESSAGE(MgUtil::WideCharToMultiByte(ogcWkt), ogcWkt == EPSG_4326_Wkt);
+        REQUIRE(ogcWkt == EPSG_4326_Wkt);
 
-        CPPUNIT_ASSERT_THROW_MG(ogcWkt = factory->ConvertCoordinateSystemCodeToWkt(L"test:4000"), MgCoordinateSystemLoadFailedException*);
+        REQUIRE_THROWS_MG(ogcWkt = factory->ConvertCoordinateSystemCodeToWkt(L"test:4000"), MgCoordinateSystemLoadFailedException*);
 
         ogcWkt = factory->ConvertEpsgCodeToWkt(4326);
-        CPPUNIT_ASSERT_MESSAGE(MgUtil::WideCharToMultiByte(ogcWkt), ogcWkt == EPSG_4326_Wkt);
+        REQUIRE(ogcWkt == EPSG_4326_Wkt);
 
         ogcWkt = factory->ConvertEpsgCodeToWkt(0);
         // TODO: This should be throwing an exception because the conversion failed.
-        CPPUNIT_ASSERT_MESSAGE(MgUtil::WideCharToMultiByte(ogcWkt), ogcWkt == L"");
+        REQUIRE(ogcWkt == L"");
 
         INT32 epsg = factory->ConvertWktToEpsgCode(EPSG_4326_Wkt);
-        CPPUNIT_ASSERT(epsg == 4326);
+        REQUIRE(epsg == 4326);
 
         long lStart = GetTickCount();
 
@@ -6451,7 +6474,7 @@
         else
         {
             ACE_DEBUG((LM_INFO, ACE_TEXT("Could not open EPSG code test file: %C\n"), EpsgTestFile));
-            CPPUNIT_ASSERT(false);
+            REQUIRE(false);
         }
 
         ACE_DEBUG((LM_INFO, ACE_TEXT("\nTotal EPSG codes tested: %d/%d (Passed/Total)\n"), nEpsgCodesPassed, nEpsgCodesTested));
@@ -6461,7 +6484,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6469,7 +6492,7 @@
     }
 }
 
-void TestCoordinateSystem::TestCase_Geographic_DatumConversion()
+TEST_CASE("Geographic_DatumConversion", "[CoordinateSystem]")
 {
     try
     {
@@ -6481,23 +6504,23 @@
         ogcWktTarget = factory.ConvertCoordinateSystemCodeToWkt(L"Accra1929.LL");
 
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWktSource);
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWktTarget);
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         Ptr<MgCoordinate> pCoord = transform->Transform(0.0, 0.0);
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.0001886392995, pCoord->GetX()));
-        CPPUNIT_ASSERT(MgUtil::ValuesEqual(0.001309777484, pCoord->GetY()));
+        REQUIRE(MgUtil::ValuesEqual(0.0001886392995, pCoord->GetX()));
+        REQUIRE(MgUtil::ValuesEqual(0.001309777484, pCoord->GetY()));
     }
     catch(MgException* e)
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {
@@ -6505,7 +6528,7 @@
     }
 }
 
-bool TestCoordinateSystem::CompareCodes(STRING code1, STRING code2)
+static bool CompareCodes(STRING code1, STRING code2)
 {
     bool bResult = false;
 
@@ -6536,7 +6559,7 @@
     return bResult;
 }
 
-void TestCoordinateSystem::TestCase_Benchmark_Transformation()
+TEST_CASE("Benchmark_Transformation", "[CoordinateSystem]")
 {
     try
     {
@@ -6553,18 +6576,18 @@
         long lStart = GetTickCount();
         Ptr<MgCoordinateSystem> coordinateSystemSource = factory.Create(ogcWkt1);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Source Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         STRING ogcWkt2 = ArbitraryWkt_Feet;
         lStart = GetTickCount();
         Ptr<MgCoordinateSystem> coordinateSystemTarget = factory.Create(ogcWkt2);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Target Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         lStart = GetTickCount();
         Ptr<MgCoordinateSystemTransform> transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  Transformation Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         // MgCoordinate
         lStart = GetTickCount();
@@ -6601,18 +6624,18 @@
         lStart = GetTickCount();
         coordinateSystemSource = factory.Create(ogcWkt1);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Source Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         ogcWkt2 = GeographicWkt_LL84;
         lStart = GetTickCount();
         coordinateSystemTarget = factory.Create(ogcWkt2);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Target Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         lStart = GetTickCount();
         transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  Transformation Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         // MgCoordinate
         lStart = GetTickCount();
@@ -6649,18 +6672,18 @@
         lStart = GetTickCount();
         coordinateSystemSource = factory.Create(ogcWkt1);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Source Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         ogcWkt2 = ProjectedWkt_GAW;
         lStart = GetTickCount();
         coordinateSystemTarget = factory.Create(ogcWkt2);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Target Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         lStart = GetTickCount();
         transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  Transformation Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         // MgCoordinate
         lStart = GetTickCount();
@@ -6697,18 +6720,18 @@
         lStart = GetTickCount();
         coordinateSystemSource = factory.Create(ogcWkt1);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Source Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         ogcWkt2 = GeographicWkt_LL84;
         lStart = GetTickCount();
         coordinateSystemTarget = factory.Create(ogcWkt2);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Target Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         lStart = GetTickCount();
         transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  Transformation Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         // MgCoordinate
         lStart = GetTickCount();
@@ -6745,18 +6768,18 @@
         lStart = GetTickCount();
         coordinateSystemSource = factory.Create(ogcWkt1);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Source Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemSource);
+        REQUIRE(coordinateSystemSource);
 
         ogcWkt2 = ProjectedWkt_GAW;
         lStart = GetTickCount();
         coordinateSystemTarget = factory.Create(ogcWkt2);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  CS Target Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(coordinateSystemTarget);
+        REQUIRE(coordinateSystemTarget);
 
         lStart = GetTickCount();
         transform = factory.GetTransform(coordinateSystemSource, coordinateSystemTarget);
         ACE_DEBUG((LM_INFO, ACE_TEXT("  Transformation Creation Time: = %6.4f (s)\n"), ((GetTickCount()-lStart)/1000.0)));
-        CPPUNIT_ASSERT(transform);
+        REQUIRE(transform);
 
         // MgCoordinate
         lStart = GetTickCount();
@@ -6791,7 +6814,7 @@
     {
         STRING message = e->GetDetails(TEST_LOCALE);
         SAFE_RELEASE(e);
-        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+        FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
     }
     catch(...)
     {

Deleted: sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.h
===================================================================
--- sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.h	2020-07-13 13:19:27 UTC (rev 9660)
+++ sandbox/jng/catch2/Server/src/UnitTesting/TestCoordinateSystem.h	2020-07-13 14:35:05 UTC (rev 9661)
@@ -1,560 +0,0 @@
-//
-//  Copyright (C) 2004-2011 by Autodesk, Inc.
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of version 2.1 of the GNU Lesser
-//  General Public License as published by the Free Software Foundation.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#ifndef TESTCOORDINATESYSTEM_H_
-#define TESTCOORDINATESYSTEM_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-
-// Comment out the line below to disable the slow test cases
-#define ENABLE_SLOW_TESTS 1
-
-class TestCoordinateSystem : public CppUnit::TestFixture
-{
-    CPPUNIT_TEST_SUITE(TestCoordinateSystem);
-    CPPUNIT_TEST(TestStart); // This must be the very first unit test
-
-    CPPUNIT_TEST(TestCase_ReadAllCoordinateSystems);
-    CPPUNIT_TEST(TestCase_ReadAllDatums);
-    CPPUNIT_TEST(TestCase_ReadAllEllipsoids);
-    CPPUNIT_TEST(TestCase_ReadAllCategories);
-    CPPUNIT_TEST(TestCase_ReadAllGeodeticTransformations);
-    CPPUNIT_TEST(TestCase_ReadAllGeodeticPaths);
-
-    CPPUNIT_TEST(TestCase_UpdateCoordinateSystems);
-    CPPUNIT_TEST(TestCase_UpdateDatums);
-    CPPUNIT_TEST(TestCase_UpdateEllipsoids);
-    CPPUNIT_TEST(TestCase_UpdateCategories);
-    CPPUNIT_TEST(TestCase_UpdateGeodeticTransformations);
-    CPPUNIT_TEST(TestCase_UpdateGeodeticPaths);
-
-    CPPUNIT_TEST(TestCase_InitializeInvalidUserDictionaryDir);
-    CPPUNIT_TEST(TestCase_InitializeValidUserDictionaryDir);
-
-    CPPUNIT_TEST(TestCase_UpdateUserCoordinateSystems);
-    CPPUNIT_TEST(TestCase_UpdateUserDatums);
-    CPPUNIT_TEST(TestCase_UpdateUserEllipsoids);
-    CPPUNIT_TEST(TestCase_UpdateUserCategories);
-    CPPUNIT_TEST(TestCase_UpdateUserGeodeticTransformations);
-    CPPUNIT_TEST(TestCase_UpdateUserGeodeticPaths);
-
-#ifdef ENABLE_SLOW_TESTS
-    CPPUNIT_TEST(TestCase_CheckCoordinateSystems);
-#endif
-    CPPUNIT_TEST(TestCase_CreateValidCoordinateSystem);
-    CPPUNIT_TEST(TestCase_CreateInvalidCoordinateSystem);
-#ifdef ENABLE_SLOW_TESTS
-    CPPUNIT_TEST(TestCase_EnumerateCategories);
-#endif
-    CPPUNIT_TEST(TestCase_EnumerateCoordSys);
-    CPPUNIT_TEST(TestCase_GetBaseLibrary);
-    CPPUNIT_TEST(TestCase_IsValid);
-
-    CPPUNIT_TEST(TestCase_ValidateCoordinateSystemArbitrary);
-    CPPUNIT_TEST(TestCase_Arbitrary_ConvertFromLonLat);
-    CPPUNIT_TEST(TestCase_Arbitrary_ConvertFromLonLatArray);
-    CPPUNIT_TEST(TestCase_Arbitrary_ConvertToLonLat);
-    CPPUNIT_TEST(TestCase_Arbitrary_ConvertToLonLatArray);
-    CPPUNIT_TEST(TestCase_Arbitrary_ConvertCoordinateSystemUnitsToMeters);
-    CPPUNIT_TEST(TestCase_Arbitrary_ConvertMetersToCoordinateSystemUnits);
-    CPPUNIT_TEST(TestCase_Arbitrary_MeasureEuclideanDistance);
-    CPPUNIT_TEST(TestCase_Arbitrary_MeasureGreatCircleDistance);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetAzimuth);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetCoordinate);
-    CPPUNIT_TEST(TestCase_Arbitrary_ConvertCode);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetUnits);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetUnitScale);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetMinX);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetMinY);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetMaxX);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetMaxY);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetCsCode);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetDescription);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetProjection);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetProjectionDescription);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetDatum);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetDatumDescription);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetEllipsoid);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetEllipsoidDescription);
-    CPPUNIT_TEST(TestCase_Arbitrary_GetCategory);
-
-    CPPUNIT_TEST(TestCase_ValidateCoordinateSystemGeographic);
-    CPPUNIT_TEST(TestCase_Geographic_ConvertFromLonLat);
-    CPPUNIT_TEST(TestCase_Geographic_ConvertFromLonLatArray);
-    CPPUNIT_TEST(TestCase_Geographic_ConvertToLonLat);
-    CPPUNIT_TEST(TestCase_Geographic_ConvertToLonLatArray);
-    CPPUNIT_TEST(TestCase_Geographic_ConvertCoordinateSystemUnitsToMeters);
-    CPPUNIT_TEST(TestCase_Geographic_ConvertMetersToCoordinateSystemUnits);
-    CPPUNIT_TEST(TestCase_Geographic_MeasureEuclideanDistance);
-    CPPUNIT_TEST(TestCase_Geographic_MeasureGreatCircleDistance);
-    CPPUNIT_TEST(TestCase_Geographic_GetAzimuth);
-    CPPUNIT_TEST(TestCase_Geographic_GetCoordinate);
-    CPPUNIT_TEST(TestCase_Geographic_ConvertCode);
-    CPPUNIT_TEST(TestCase_Geographic_GetUnits);
-    CPPUNIT_TEST(TestCase_Geographic_GetUnitScale);
-    //CPPUNIT_TEST(TestCase_Geographic_GetMinX);
-    CPPUNIT_TEST(TestCase_Geographic_GetMinY);
-    //CPPUNIT_TEST(TestCase_Geographic_GetMaxX);
-    CPPUNIT_TEST(TestCase_Geographic_GetMaxY);
-    CPPUNIT_TEST(TestCase_Geographic_GetCsCode);
-    CPPUNIT_TEST(TestCase_Geographic_GetDescription);
-    CPPUNIT_TEST(TestCase_Geographic_GetProjection);
-    CPPUNIT_TEST(TestCase_Geographic_GetProjectionDescription);
-    CPPUNIT_TEST(TestCase_Geographic_GetDatum);
-    CPPUNIT_TEST(TestCase_Geographic_GetDatumDescription);
-    CPPUNIT_TEST(TestCase_Geographic_GetEllipsoid);
-    CPPUNIT_TEST(TestCase_Geographic_GetEllipsoidDescription);
-    CPPUNIT_TEST(TestCase_Geographic_GetCategory);
-
-    CPPUNIT_TEST(TestCase_ValidateCoordinateSystemProjected);
-    CPPUNIT_TEST(TestCase_Projected_ConvertFromLonLat);
-    CPPUNIT_TEST(TestCase_Projected_ConvertFromLonLatArray);
-    CPPUNIT_TEST(TestCase_Projected_ConvertToLonLat);
-    CPPUNIT_TEST(TestCase_Projected_ConvertToLonLatArray);
-    CPPUNIT_TEST(TestCase_Projected_ConvertCoordinateSystemUnitsToMeters);
-    CPPUNIT_TEST(TestCase_Projected_ConvertMetersToCoordinateSystemUnits);
-    CPPUNIT_TEST(TestCase_Projected_MeasureEuclideanDistance);
-    CPPUNIT_TEST(TestCase_Projected_MeasureGreatCircleDistance);
-    CPPUNIT_TEST(TestCase_Projected_GetAzimuth);
-    CPPUNIT_TEST(TestCase_Projected_GetCoordinate);
-    CPPUNIT_TEST(TestCase_Projected_ConvertCode);
-    CPPUNIT_TEST(TestCase_Projected_GetUnits);
-    CPPUNIT_TEST(TestCase_Projected_GetUnitScale);
-    //CPPUNIT_TEST(TestCase_Projected_GetMinX);
-    //CPPUNIT_TEST(TestCase_Projected_GetMinY);
-    //CPPUNIT_TEST(TestCase_Projected_GetMaxX);
-    //CPPUNIT_TEST(TestCase_Projected_GetMaxY);
-    CPPUNIT_TEST(TestCase_Projected_GetCsCode);
-    CPPUNIT_TEST(TestCase_Projected_GetDescription);
-    CPPUNIT_TEST(TestCase_Projected_GetProjection);
-    CPPUNIT_TEST(TestCase_Projected_GetProjectionDescription);
-    CPPUNIT_TEST(TestCase_Projected_GetDatum);
-    CPPUNIT_TEST(TestCase_Projected_GetDatumDescription);
-    CPPUNIT_TEST(TestCase_Projected_GetEllipsoid);
-    CPPUNIT_TEST(TestCase_Projected_GetEllipsoidDescription);
-    CPPUNIT_TEST(TestCase_Projected_GetCategory);
-
-    CPPUNIT_TEST(TestCase_Arbitrary_Measure_GetDistance);
-    CPPUNIT_TEST(TestCase_Arbitrary_Measure_GetAzimuth);
-    CPPUNIT_TEST(TestCase_Arbitrary_Measure_GetCoordinate);
-    CPPUNIT_TEST(TestCase_Geographic_Measure_GetDistance);
-    CPPUNIT_TEST(TestCase_Geographic_Measure_GetAzimuth);
-    CPPUNIT_TEST(TestCase_Geographic_Measure_GetCoordinate);
-    CPPUNIT_TEST(TestCase_Projected_Measure_GetDistance);
-    CPPUNIT_TEST(TestCase_Projected_Measure_GetAzimuth);
-    CPPUNIT_TEST(TestCase_Projected_Measure_GetCoordinate);
-
-    // Arbitrary
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_XY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Arbitrary_Transform_EnvelopeXYZ);
-
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_XY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Geographic_Transform_EnvelopeXYZ);
-
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_XY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Arbitrary_To_Projected_Transform_EnvelopeXYZ);
-
-    // Geographic
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_XY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Arbitrary_Transform_EnvelopeXYZ);
-
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_XY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Geographic_Transform_EnvelopeXYZ);
-
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_XY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Geographic_To_Projected_Transform_EnvelopeXYZ);
-
-    // Projected
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_XY);
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Projected_To_Arbitrary_Transform_EnvelopeXYZ);
-
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_XY);
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Projected_To_Geographic_Transform_EnvelopeXYZ);
-
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_XY);
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_XYZ);
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_CoordinateXY);
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_CoordinateXYM);
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_CoordinateXYZ);
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_CoordinateXYZM);
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_EnvelopeXY);
-    CPPUNIT_TEST(TestCase_Projected_To_Projected_Transform_EnvelopeXYZ);
-
-    // Datum conversion
-    CPPUNIT_TEST(TestCase_Geographic_DatumConversion);
-
-    // Real world locations
-    CPPUNIT_TEST(TestCase_Boston_Geographic);
-    CPPUNIT_TEST(TestCase_NewYork_Geographic);
-    CPPUNIT_TEST(TestCase_Boston_Projected);
-    CPPUNIT_TEST(TestCase_NewYork_Projected);
-
-    // EPSG
-#ifdef ENABLE_SLOW_TESTS
-    CPPUNIT_TEST(TestCase_EPSG);
-#endif
-
-    // Performance
-#ifdef ENABLE_SLOW_TESTS
-    CPPUNIT_TEST(TestCase_Benchmark_Transformation);
-#endif
-
-    CPPUNIT_TEST(TestEnd); // This must be the very last unit test
-    CPPUNIT_TEST_SUITE_END();
-
-public:
-    void setUp();
-    void tearDown();
-    void TestStart();
-    void TestEnd();
-
-    //check sanity of the dictionaries
-    void TestCase_ReadAllCoordinateSystems();
-    void TestCase_ReadAllDatums();
-    void TestCase_ReadAllEllipsoids();
-    void TestCase_ReadAllCategories();
-    void TestCase_ReadAllGeodeticTransformations();
-    void TestCase_ReadAllGeodeticPaths();
-
-    void TestCase_UpdateCoordinateSystems();
-    void TestCase_UpdateDatums();
-    void TestCase_UpdateEllipsoids();
-    void TestCase_UpdateCategories();
-    void TestCase_UpdateGeodeticTransformations();
-    void TestCase_UpdateGeodeticPaths();
-
-    void TestCase_InitializeInvalidUserDictionaryDir();
-    void TestCase_InitializeValidUserDictionaryDir();
-
-    void TestCase_UpdateUserCoordinateSystems();
-    void TestCase_UpdateUserDatums();
-    void TestCase_UpdateUserEllipsoids();
-    void TestCase_UpdateUserCategories();
-    void TestCase_UpdateUserGeodeticTransformations();
-    void TestCase_UpdateUserGeodeticPaths();
-
-    void TestCase_CheckCoordinateSystems();
-    void TestCase_CreateValidCoordinateSystem();
-    void TestCase_CreateInvalidCoordinateSystem();
-    void TestCase_EnumerateCategories();
-    void TestCase_EnumerateCoordSys();
-    void TestCase_GetBaseLibrary();
-    void TestCase_IsValid();
-
-    void TestCase_ValidateCoordinateSystemArbitrary();
-    void TestCase_Arbitrary_ConvertFromLonLat();
-    void TestCase_Arbitrary_ConvertFromLonLatArray();
-    void TestCase_Arbitrary_ConvertToLonLat();
-    void TestCase_Arbitrary_ConvertToLonLatArray();
-    void TestCase_Arbitrary_ConvertCoordinateSystemUnitsToMeters();
-    void TestCase_Arbitrary_ConvertMetersToCoordinateSystemUnits();
-    void TestCase_Arbitrary_MeasureEuclideanDistance();
-    void TestCase_Arbitrary_MeasureGreatCircleDistance();
-    void TestCase_Arbitrary_GetAzimuth();
-    void TestCase_Arbitrary_GetCoordinate();
-    void TestCase_Arbitrary_ConvertCode();
-    void TestCase_Arbitrary_GetUnits();
-    void TestCase_Arbitrary_GetUnitScale();
-    void TestCase_Arbitrary_GetMinX();
-    void TestCase_Arbitrary_GetMinY();
-    void TestCase_Arbitrary_GetMaxX();
-    void TestCase_Arbitrary_GetMaxY();
-    void TestCase_Arbitrary_GetCsCode();
-    void TestCase_Arbitrary_GetDescription();
-    void TestCase_Arbitrary_GetProjection();
-    void TestCase_Arbitrary_GetProjectionDescription();
-    void TestCase_Arbitrary_GetDatum();
-    void TestCase_Arbitrary_GetDatumDescription();
-    void TestCase_Arbitrary_GetEllipsoid();
-    void TestCase_Arbitrary_GetEllipsoidDescription();
-    void TestCase_Arbitrary_GetCategory();
-
-    void TestCase_ValidateCoordinateSystemGeographic();
-    void TestCase_Geographic_ConvertFromLonLat();
-    void TestCase_Geographic_ConvertFromLonLatArray();
-    void TestCase_Geographic_ConvertToLonLat();
-    void TestCase_Geographic_ConvertToLonLatArray();
-    void TestCase_Geographic_ConvertCoordinateSystemUnitsToMeters();
-    void TestCase_Geographic_ConvertMetersToCoordinateSystemUnits();
-    void TestCase_Geographic_MeasureEuclideanDistance();
-    void TestCase_Geographic_MeasureGreatCircleDistance();
-    void TestCase_Geographic_GetAzimuth();
-    void TestCase_Geographic_GetCoordinate();
-    void TestCase_Geographic_ConvertCode();
-    void TestCase_Geographic_GetUnits();
-    void TestCase_Geographic_GetUnitScale();
-    void TestCase_Geographic_GetMinX();
-    void TestCase_Geographic_GetMinY();
-    void TestCase_Geographic_GetMaxX();
-    void TestCase_Geographic_GetMaxY();
-    void TestCase_Geographic_GetCsCode();
-    void TestCase_Geographic_GetDescription();
-    void TestCase_Geographic_GetProjection();
-    void TestCase_Geographic_GetProjectionDescription();
-    void TestCase_Geographic_GetDatum();
-    void TestCase_Geographic_GetDatumDescription();
-    void TestCase_Geographic_GetEllipsoid();
-    void TestCase_Geographic_GetEllipsoidDescription();
-    void TestCase_Geographic_GetCategory();
-
-    void TestCase_ValidateCoordinateSystemProjected();
-    void TestCase_Projected_ConvertFromLonLat();
-    void TestCase_Projected_ConvertFromLonLatArray();
-    void TestCase_Projected_ConvertToLonLat();
-    void TestCase_Projected_ConvertToLonLatArray();
-    void TestCase_Projected_ConvertCoordinateSystemUnitsToMeters();
-    void TestCase_Projected_ConvertMetersToCoordinateSystemUnits();
-    void TestCase_Projected_MeasureEuclideanDistance();
-    void TestCase_Projected_MeasureGreatCircleDistance();
-    void TestCase_Projected_GetAzimuth();
-    void TestCase_Projected_GetCoordinate();
-    void TestCase_Projected_ConvertCode();
-    void TestCase_Projected_GetUnits();
-    void TestCase_Projected_GetUnitScale();
-    void TestCase_Projected_GetMinX();
-    void TestCase_Projected_GetMinY();
-    void TestCase_Projected_GetMaxX();
-    void TestCase_Projected_GetMaxY();
-    void TestCase_Projected_GetCsCode();
-    void TestCase_Projected_GetDescription();
-    void TestCase_Projected_GetProjection();
-    void TestCase_Projected_GetProjectionDescription();
-    void TestCase_Projected_GetDatum();
-    void TestCase_Projected_GetDatumDescription();
-    void TestCase_Projected_GetEllipsoid();
-    void TestCase_Projected_GetEllipsoidDescription();
-    void TestCase_Projected_GetCategory();
-
-    // Test Measure
-    void TestCase_Arbitrary_Measure_GetDistance();
-    void TestCase_Arbitrary_Measure_GetAzimuth();
-    void TestCase_Arbitrary_Measure_GetCoordinate();
-    void TestCase_Geographic_Measure_GetDistance();
-    void TestCase_Geographic_Measure_GetAzimuth();
-    void TestCase_Geographic_Measure_GetCoordinate();
-    void TestCase_Projected_Measure_GetDistance();
-    void TestCase_Projected_Measure_GetAzimuth();
-    void TestCase_Projected_Measure_GetCoordinate();
-
-    // Test Transform
-    // Arbitrary
-    void TestCase_Arbitrary_To_Arbitrary_Transform_XY();
-    void TestCase_Arbitrary_To_Arbitrary_Transform_XYZ();
-    void TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXY();
-    void TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYM();
-    void TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYZ();
-    void TestCase_Arbitrary_To_Arbitrary_Transform_CoordinateXYZM();
-    void TestCase_Arbitrary_To_Arbitrary_Transform_EnvelopeXY();
-    void TestCase_Arbitrary_To_Arbitrary_Transform_EnvelopeXYZ();
-
-    void TestCase_Arbitrary_To_Geographic_Transform_XY();
-    void TestCase_Arbitrary_To_Geographic_Transform_XYZ();
-    void TestCase_Arbitrary_To_Geographic_Transform_CoordinateXY();
-    void TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYM();
-    void TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYZ();
-    void TestCase_Arbitrary_To_Geographic_Transform_CoordinateXYZM();
-    void TestCase_Arbitrary_To_Geographic_Transform_EnvelopeXY();
-    void TestCase_Arbitrary_To_Geographic_Transform_EnvelopeXYZ();
-
-    void TestCase_Arbitrary_To_Projected_Transform_XY();
-    void TestCase_Arbitrary_To_Projected_Transform_XYZ();
-    void TestCase_Arbitrary_To_Projected_Transform_CoordinateXY();
-    void TestCase_Arbitrary_To_Projected_Transform_CoordinateXYM();
-    void TestCase_Arbitrary_To_Projected_Transform_CoordinateXYZ();
-    void TestCase_Arbitrary_To_Projected_Transform_CoordinateXYZM();
-    void TestCase_Arbitrary_To_Projected_Transform_EnvelopeXY();
-    void TestCase_Arbitrary_To_Projected_Transform_EnvelopeXYZ();
-
-    // Geographic
-    void TestCase_Geographic_To_Arbitrary_Transform_XY();
-    void TestCase_Geographic_To_Arbitrary_Transform_XYZ();
-    void TestCase_Geographic_To_Arbitrary_Transform_CoordinateXY();
-    void TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYM();
-    void TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYZ();
-    void TestCase_Geographic_To_Arbitrary_Transform_CoordinateXYZM();
-    void TestCase_Geographic_To_Arbitrary_Transform_EnvelopeXY();
-    void TestCase_Geographic_To_Arbitrary_Transform_EnvelopeXYZ();
-
-    void TestCase_Geographic_To_Geographic_Transform_XY();
-    void TestCase_Geographic_To_Geographic_Transform_XYZ();
-    void TestCase_Geographic_To_Geographic_Transform_CoordinateXY();
-    void TestCase_Geographic_To_Geographic_Transform_CoordinateXYM();
-    void TestCase_Geographic_To_Geographic_Transform_CoordinateXYZ();
-    void TestCase_Geographic_To_Geographic_Transform_CoordinateXYZM();
-    void TestCase_Geographic_To_Geographic_Transform_EnvelopeXY();
-    void TestCase_Geographic_To_Geographic_Transform_EnvelopeXYZ();
-
-    void TestCase_Geographic_To_Projected_Transform_XY();
-    void TestCase_Geographic_To_Projected_Transform_XYZ();
-    void TestCase_Geographic_To_Projected_Transform_CoordinateXY();
-    void TestCase_Geographic_To_Projected_Transform_CoordinateXYM();
-    void TestCase_Geographic_To_Projected_Transform_CoordinateXYZ();
-    void TestCase_Geographic_To_Projected_Transform_CoordinateXYZM();
-    void TestCase_Geographic_To_Projected_Transform_EnvelopeXY();
-    void TestCase_Geographic_To_Projected_Transform_EnvelopeXYZ();
-
-    // Projected
-    void TestCase_Projected_To_Arbitrary_Transform_XY();
-    void TestCase_Projected_To_Arbitrary_Transform_XYZ();
-    void TestCase_Projected_To_Arbitrary_Transform_CoordinateXY();
-    void TestCase_Projected_To_Arbitrary_Transform_CoordinateXYM();
-    void TestCase_Projected_To_Arbitrary_Transform_CoordinateXYZ();
-    void TestCase_Projected_To_Arbitrary_Transform_CoordinateXYZM();
-    void TestCase_Projected_To_Arbitrary_Transform_EnvelopeXY();
-    void TestCase_Projected_To_Arbitrary_Transform_EnvelopeXYZ();
-
-    void TestCase_Projected_To_Geographic_Transform_XY();
-    void TestCase_Projected_To_Geographic_Transform_XYZ();
-    void TestCase_Projected_To_Geographic_Transform_CoordinateXY();
-    void TestCase_Projected_To_Geographic_Transform_CoordinateXYM();
-    void TestCase_Projected_To_Geographic_Transform_CoordinateXYZ();
-    void TestCase_Projected_To_Geographic_Transform_CoordinateXYZM();
-    void TestCase_Projected_To_Geographic_Transform_EnvelopeXY();
-    void TestCase_Projected_To_Geographic_Transform_EnvelopeXYZ();
-
-    void TestCase_Projected_To_Projected_Transform_XY();
-    void TestCase_Projected_To_Projected_Transform_XYZ();
-    void TestCase_Projected_To_Projected_Transform_CoordinateXY();
-    void TestCase_Projected_To_Projected_Transform_CoordinateXYM();
-    void TestCase_Projected_To_Projected_Transform_CoordinateXYZ();
-    void TestCase_Projected_To_Projected_Transform_CoordinateXYZM();
-    void TestCase_Projected_To_Projected_Transform_EnvelopeXY();
-    void TestCase_Projected_To_Projected_Transform_EnvelopeXYZ();
-
-    // Datum conversion
-    void TestCase_Geographic_DatumConversion();
-
-    // Real world locations
-    void TestCase_Boston_Geographic();
-    void TestCase_NewYork_Geographic();
-    void TestCase_Boston_Projected();
-    void TestCase_NewYork_Projected();
-
-    // EPSG
-    void TestCase_EPSG();
-
-    // Performance
-    void TestCase_Benchmark_Transformation();
-
-    static bool SetDefaultUserDictionaryDir();
-
-    class FileAutoBackup
-    {
-    private:
-
-        STRING m_sFilename;
-        STRING m_sRotateSuffix;
-        STRING m_sBackupFilename;
-        bool m_bRotated;
-        bool m_bKeepFile;
-
-    public:
-        FileAutoBackup(const CREFSTRING filename, const CREFSTRING rotateSuffix, bool keepFile = false)
-            : m_sFilename(filename), m_sRotateSuffix(rotateSuffix), m_bRotated(false), m_bKeepFile(keepFile)
-        {
-            struct _stat64 fileStatus;
-            bool fileExists = MgFileUtil::GetFileStatus(filename, fileStatus);
-
-            this->m_sBackupFilename = (this->m_sFilename + this->m_sRotateSuffix);
-
-            ACE_DEBUG((LM_INFO, ACE_TEXT("\nBacking up file\n%W\n-->\n%W\n"), this->m_sFilename.c_str(), this->m_sBackupFilename.c_str()));
-
-            MgFileUtil::DeleteFile(this->m_sBackupFilename);
-            if (fileExists)
-            {
-                if (!this->m_bKeepFile)
-                {
-                    MgFileUtil::RenameFile(this->m_sFilename, this->m_sBackupFilename);
-                }
-                else
-                {
-                    MgFileUtil::CopyFile(this->m_sFilename, this->m_sBackupFilename);
-                }
-
-                this->m_bRotated = true;
-            }
-        }
-
-        ~FileAutoBackup()
-        {
-            MgFileUtil::DeleteFile(this->m_sFilename);
-            if (this->m_bRotated)
-            {
-                ACE_DEBUG((LM_INFO, ACE_TEXT("\nRestoring file\n%W\n-->\n%W\n"), this->m_sBackupFilename.c_str(), this->m_sFilename.c_str()));
-                MgFileUtil::RenameFile(this->m_sBackupFilename, this->m_sFilename, true);
-            }
-            else
-            {
-                ACE_DEBUG((LM_INFO, ACE_TEXT("\nDid not restore file\n%W\nas it did not exist before\n"), this->m_sFilename.c_str()));
-            }
-        }
-    };
-
-private:
-
-    bool CompareCodes(STRING code1, STRING code2);
-};
-
-#endif

Modified: sandbox/jng/catch2/Server/src/UnitTesting/TestFeatureService.cpp
===================================================================
--- sandbox/jng/catch2/Server/src/UnitTesting/TestFeatureService.cpp	2020-07-13 13:19:27 UTC (rev 9660)
+++ sandbox/jng/catch2/Server/src/UnitTesting/TestFeatureService.cpp	2020-07-13 14:35:05 UTC (rev 9661)
@@ -2688,7 +2688,11 @@
     }
 }
 
+#ifdef _DEBUG
+TEST_CASE("BenchmarkSqliteAggregateJoin", "[Broken]")
+#else
 TEST_CASE("BenchmarkSqliteAggregateJoin", "[FeatureService]")
+#endif
 {
     try
     {

Modified: sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.cpp
===================================================================
--- sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.cpp	2020-07-13 13:19:27 UTC (rev 9660)
+++ sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.cpp	2020-07-13 14:35:05 UTC (rev 9661)
@@ -17,11 +17,6 @@
 
 #include "MapGuideCommon.h"
 #include "UnitTesting.h"
-#include <cppunit/TestResultCollector.h>
-#include <cppunit/TextOutputter.h>
-#include <cppunit/XmlOutputter.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <cppunit/ui/text/TestRunner.h>
 #include "FoundationDefs.h"
 
 #define CATCH_CONFIG_RUNNER
@@ -33,94 +28,41 @@
     // Any specific test case may overwrite these information.
     Ptr<MgUserInformation> userInfo = new MgUserInformation(MgUser::Administrator, L"");
     MgUserInformation::SetCurrentUserInfo(userInfo);
+    bool bRunTests = true;
 
     Catch::Session session;
-    if (!test.empty() && test != L"all")
+    if (!test.empty())
     {
-        std::string testToRun = "[";
-        testToRun += MgUtil::WideCharToMultiByte(test);
-        testToRun += "]";
-        session.configData().testsOrTags.push_back(testToRun);
-    }
-    int nResult = session.run();
-
-    return nResult;
-    /*
-    int nResult = 0;
-    bool bRunTests = true;
-
-    // Set the default user information for this test run.
-    // Any specific test case may overwrite these information.
-    Ptr<MgUserInformation> userInfo = new MgUserInformation(MgUser::Administrator, L"");
-    MgUserInformation::SetCurrentUserInfo(userInfo);
-
-    CppUnit::TextUi::TestRunner runner;
-
-    // Setup which tests to run
-    if(test.size() > 0)
-    {
-        if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), MG_WCHAR_TO_TCHAR(MgResources::ServerCmdTestDefaultTests)) == 0)
+        if (test == L"all")
         {
-            // Add all of the tests
-#ifdef _DEBUG
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running all unit tests - Excluding Performance and CoordinateSystem. <<<<<\n\n")));
-#else
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running all unit tests - Excluding Performance. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestCoordinateSystem").makeTest());
-#endif
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestDrawingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestFeatureService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestGeometry").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestLogManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMdfModel").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestKmlService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMappingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMisc").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestRenderingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestResourceService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTileService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestProfilingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerAdminService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServiceManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTransformMesh").makeTest());
+            session.configData().testsOrTags.push_back("[CoordinateSystem]");
+            session.configData().testsOrTags.push_back("[DrawingService]");
+            session.configData().testsOrTags.push_back("[FeatureService]");
+            session.configData().testsOrTags.push_back("[Geometry]");
+            session.configData().testsOrTags.push_back("[KmlService]");
+            session.configData().testsOrTags.push_back("[LogManager]");
+            session.configData().testsOrTags.push_back("[MappingService]");
+            session.configData().testsOrTags.push_back("[MdfModel]");
+            session.configData().testsOrTags.push_back("[Misc]");
+            session.configData().testsOrTags.push_back("[Performance]");
+            session.configData().testsOrTags.push_back("[RenderingService]");
+            session.configData().testsOrTags.push_back("[ResourceService]");
+            session.configData().testsOrTags.push_back("[ServerAdminService]");
+            session.configData().testsOrTags.push_back("[ServerManager]");
+            session.configData().testsOrTags.push_back("[ServiceManager]");
+            session.configData().testsOrTags.push_back("[SiteManager]");
+            session.configData().testsOrTags.push_back("[SiteService]");
+            session.configData().testsOrTags.push_back("[TileService]");
+            session.configData().testsOrTags.push_back("[ProfilingService]");
+            session.configData().testsOrTags.push_back("[TransformMesh]");
         }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("AllExceptCoordSys")) == 0)
+        else if (test == L"list")
         {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running all unit tests - Excluding Performance and CoordinateSystem. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestDrawingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestFeatureService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestGeometry").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestLogManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMdfModel").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestKmlService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMappingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMisc").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestRenderingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestResourceService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTileService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestProfilingService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerAdminService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServiceManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteService").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteManager").makeTest());
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTransformMesh").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), MG_WCHAR_TO_TCHAR(MgResources::ServerCmdTestListTests)) == 0)
-        {
             // Title
-            ACE_OS::printf("The following unit tests are available:\n\n");
+            ACE_OS::printf("The following test suites are available to run:\n\n");
 
             // Available tests
-#ifdef _DEBUG
-            ACE_OS::printf("  All - Excluding Performance and CoordinateSystem\n");
-#else
-            ACE_OS::printf("  All - Excluding Performance\n");
-#endif
-            ACE_OS::printf("  AllExceptCoordSys\n");
+            ACE_OS::printf("  all - Excluding Performance\n");
             ACE_OS::printf("  CoordinateSystem\n");
             ACE_OS::printf("  DrawingService\n");
             ACE_OS::printf("  FeatureService\n");
@@ -145,166 +87,19 @@
 
             bRunTests = false;
         }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("CoordinateSystem")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Coordinate System tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestCoordinateSystem").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("DrawingService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Drawing Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestDrawingService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("FeatureService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Feature Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestFeatureService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("Geometry")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Geometry tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestGeometry").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("KmlService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Kml Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestKmlService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("LogManager")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Log Manager tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestLogManager").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("MappingService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Mapping Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMappingService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("MdfModel")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only MdfModel tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMdfModel").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("Misc")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Miscellaneous tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMisc").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("Performance")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Performance tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestPerformance").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("RenderingService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Rendering Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestRenderingService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("ResourceService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Resource Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestResourceService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("ServerAdminService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only ServerAdmin Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerAdminService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("ServerManager")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Server Manager tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerManager").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("ServiceManager")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Service Manager tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServiceManager").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("SiteManager")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Site Manager tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteManager").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("SiteService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Site Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("TileService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Tile Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTileService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("ProfilingService")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Profiling Service tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestProfilingService").makeTest());
-        }
-        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_TEXT("TransformMesh")) == 0)
-        {
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Transform Mesh tests. <<<<<\n\n")));
-            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTransformMesh").makeTest());
-        }
         else
         {
-            // Test suite not found
-            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Unrecognized unit test: %s <<<<<\n\n"), MG_WCHAR_TO_TCHAR(test)));
-            bRunTests = false;
+            std::string testToRun = "[";
+            testToRun += MgUtil::WideCharToMultiByte(test);
+            testToRun += "]";
+            session.configData().testsOrTags.push_back(testToRun);
         }
-    }
-    else
-    {
-        // Add all of the tests
-#ifdef _DEBUG
-        ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running all unit tests - Excluding Performance and CoordinateSystem. <<<<<\n\n")));
-#else
-        ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running all unit tests - Excluding Performance. <<<<<\n\n")));
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestCoordinateSystem").makeTest());
-#endif
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestFeatureService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestGeometry").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestLogManager").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMdfModel").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestKmlService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMappingService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestMisc").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestRenderingService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestResourceService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTileService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestProfilingService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerAdminService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerManager").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServiceManager").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteService").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestSiteManager").makeTest());
-        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTransformMesh").makeTest());
-    }
+    } 
 
-    if(bRunTests)
+    int nResult = 0;
+    if (bRunTests)
     {
-        if (fileName.size() > 0)
-        {
-            ofstream outfile(MG_WCHAR_TO_CHAR(fileName.c_str()));
-
-            if (outfile.is_open())
-            {
-                runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), outfile, "ISO-8859-1"));
-                runner.run();
-                outfile.close();
-            }
-        }
-        else
-        {
-            runner.setOutputter(new CppUnit::TextOutputter(&runner.result(), std::cout));
-            runner.run();
-        }
-
-        nResult = runner.result().testFailuresTotal();
+        nResult = session.run();
     }
-
-    // Reset the current user information for this test run.
-    MgUserInformation::SetCurrentUserInfo(NULL);
-
     return nResult;
-    */
 }

Modified: sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.vcxproj
===================================================================
--- sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.vcxproj	2020-07-13 13:19:27 UTC (rev 9660)
+++ sandbox/jng/catch2/Server/src/UnitTesting/UnitTesting.vcxproj	2020-07-13 14:35:05 UTC (rev 9661)
@@ -201,7 +201,6 @@
     <ClInclude Include="CatchHelperMacros.h" />
     <ClInclude Include="CppUnitExtensions.h" />
     <ClInclude Include="TestServiceFactory.h" />
-    <ClInclude Include="TestCoordinateSystem.h" />
     <ClInclude Include="TestLogManagerThread.h" />
     <ClInclude Include="UnitTesting.h" />
   </ItemGroup>



More information about the mapguide-commits mailing list