[mapguide-commits] r5290 - in trunk/MgDev: Server/src/PostBuild Server/src/UnitTesting UnitTest/TestData/MdfModel

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Oct 18 05:56:22 EDT 2010


Author: hubu
Date: 2010-10-18 02:56:22 -0700 (Mon, 18 Oct 2010)
New Revision: 5290

Added:
   trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestMap.mdf
Modified:
   trunk/MgDev/Server/src/PostBuild/PostBuild.mak
   trunk/MgDev/Server/src/UnitTesting/TestMdfModel.cpp
   trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestTypeStyles.ldf
Log:
On behalf of: Spark Liu

Adding unit test for layer / map definition 2.3.0 in MdfModel.

The unit test makes sure that layer definition 2.3.0 is compatible with and convertible from / to earlier version without information missing.
The unit test also makes sure that map definition 2.3.0 is compatible with earlier version and convertible from / to earlier version.
However, as map definition 1.0.0 doesn't take extension into consideration, when a 2.3.0 map definition is stored in 1.0.0 format, the watermark information will be missing. 

Modified: trunk/MgDev/Server/src/PostBuild/PostBuild.mak
===================================================================
--- trunk/MgDev/Server/src/PostBuild/PostBuild.mak	2010-10-18 07:16:47 UTC (rev 5289)
+++ trunk/MgDev/Server/src/PostBuild/PostBuild.mak	2010-10-18 09:56:22 UTC (rev 5290)
@@ -206,6 +206,7 @@
         ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt \
         ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt \
         ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource \
+        ..\..\bin\UnitTestFiles\MdfTestMap.mdf \
         ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf \
         ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd \
         ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd \
@@ -454,6 +455,7 @@
         ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt \
         ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt \
         ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource \
+        ..\..\bin\UnitTestFiles\MdfTestMap.mdf \
         ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf \
         ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd \
         ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd \
@@ -702,6 +704,7 @@
           ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt \
           ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt \
           ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource \
+          ..\..\bin\UnitTestFiles\MdfTestMap.mdf \
           ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf \
           ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd \
           ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd \
@@ -950,6 +953,7 @@
           ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt \
           ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt \
           ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource \
+          ..\..\bin\UnitTestFiles\MdfTestMap.mdf \
           ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf \
           ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd \
           ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd \
@@ -1071,6 +1075,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt       del /F ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt    del /F ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource del /F ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource
+    if EXIST ..\..\bin\UnitTestFiles\MdfTestMap.mdf                 del /F ..\..\bin\UnitTestFiles\MdfTestMap.mdf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf          del /F ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd       del /F ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd
     if EXIST ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd         del /F ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd
@@ -1187,6 +1192,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt       del /F ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt    del /F ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource del /F ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource
+    if EXIST ..\..\bin\UnitTestFiles\MdfTestMap.mdf                 del /F ..\..\bin\UnitTestFiles\MdfTestMap.mdf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf          del /F ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd       del /F ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd
     if EXIST ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd         del /F ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd
@@ -1303,6 +1309,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt       del /F ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt    del /F ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource del /F ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource
+    if EXIST ..\..\bin\UnitTestFiles\MdfTestMap.mdf                 del /F ..\..\bin\UnitTestFiles\MdfTestMap.mdf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf          del /F ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd       del /F ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd
     if EXIST ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd         del /F ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd
@@ -1418,6 +1425,7 @@
     if EXIST ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt       del /F ..\..\bin\UnitTestFiles\UT_GetLayerKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt    del /F ..\..\bin\UnitTestFiles\UT_GetFeaturesKmlResult.txt
     if EXIST ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource del /F ..\..\bin\UnitTestFiles\TESTChainedInner1ToManyJoin.FeatureSource
+    if EXIST ..\..\bin\UnitTestFiles\MdfTestMap.mdf                 del /F ..\..\bin\UnitTestFiles\MdfTestMap.mdf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf          del /F ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf
     if EXIST ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd       del /F ..\..\bin\UnitTestFiles\MdfTestCompoundSymbol.sd
     if EXIST ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd         del /F ..\..\bin\UnitTestFiles\MdfTestSimpleSymbol.sd
@@ -1500,6 +1508,7 @@
 "..\..\..\UnitTest\TestData\KmlService\UT_GetMapKmlResult.txt" :
 "..\..\..\UnitTest\TestData\KmlService\UT_GetLayerKmlResult.txt" :
 "..\..\..\UnitTest\TestData\KmlService\UT_GetFeaturesKmlResult.txt" :
+"..\..\..\UnitTest\TestData\MdfModel\MdfTestMap.mdf" :
 "..\..\..\UnitTest\TestData\MdfModel\MdfTestTypeStyles.ldf" :
 "..\..\..\UnitTest\TestData\MdfModel\MdfTestCompoundSymbol.sd" :
 "..\..\..\UnitTest\TestData\MdfModel\MdfTestSimpleSymbol.sd" :
@@ -1729,6 +1738,10 @@
     if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
     if EXIST "..\..\..\UnitTest\TestData\KmlService\UT_GetFeaturesKmlResult.txt" xcopy /r /d /y "..\..\..\UnitTest\TestData\KmlService\UT_GetFeaturesKmlResult.txt" ..\..\bin\UnitTestFiles\
 
+..\..\bin\UnitTestFiles\MdfTestMap.mdf : "..\..\..\UnitTest\TestData\MdfModel\MdfTestMap.mdf"
+    if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+    if EXIST "..\..\..\UnitTest\TestData\MdfModel\MdfTestMap.mdf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MdfModel\MdfTestMap.mdf" ..\..\bin\UnitTestFiles\
+
 ..\..\bin\UnitTestFiles\MdfTestTypeStyles.ldf : "..\..\..\UnitTest\TestData\MdfModel\MdfTestTypeStyles.ldf"
     if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
     if EXIST "..\..\..\UnitTest\TestData\MdfModel\MdfTestTypeStyles.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MdfModel\MdfTestTypeStyles.ldf" ..\..\bin\UnitTestFiles\

Modified: trunk/MgDev/Server/src/UnitTesting/TestMdfModel.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestMdfModel.cpp	2010-10-18 07:16:47 UTC (rev 5289)
+++ trunk/MgDev/Server/src/UnitTesting/TestMdfModel.cpp	2010-10-18 09:56:22 UTC (rev 5290)
@@ -77,6 +77,11 @@
         Ptr<MgByteSource> ldfsrc3 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles.ldf", false);
         Ptr<MgByteReader> ldfrdr3 = ldfsrc3->GetReader();
         m_svcResource->SetResource(ldfres3, ldfrdr3, NULL);
+
+        Ptr<MgResourceIdentifier> mdfres4 = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestMap.MapDefinition");
+        Ptr<MgByteSource> mdfsrc4 = new MgByteSource(L"../UnitTestFiles/MdfTestMap.mdf", false);
+        Ptr<MgByteReader> mdfrdr4 = mdfsrc4->GetReader();
+        m_svcResource->SetResource(mdfres4, mdfrdr4, NULL);
     }
     catch (MgException* e)
     {
@@ -107,6 +112,8 @@
         m_svcResource->DeleteResource(sdres2);
         Ptr<MgResourceIdentifier> ldfres3 = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestTypeStyles.LayerDefinition");
         m_svcResource->DeleteResource(ldfres3);
+        Ptr<MgResourceIdentifier> mdfres4 = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestMap.MapDefinition");
+        m_svcResource->DeleteResource(mdfres4);
     }
     catch(MgFileIoException* e)
     {
@@ -138,6 +145,7 @@
 
         Ptr<MgResourceIdentifier> sdresV = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestDummy.SymbolDefinition");
         Ptr<MgResourceIdentifier> ldfresV = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestDummy.LayerDefinition");
+        Ptr<MgResourceIdentifier> mdfresV = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestDummy.MapDefinition");
 
         // ------------------------------------------------------
         // process symbol #1 - a simple symbol definition
@@ -256,9 +264,32 @@
         // ------------------------------------------------------
 
         // iterate over the layer definition schema versions
-        for (int minorVersion=3; minorVersion>=0; --minorVersion)
+        const int LAYER_SCHEMA_COUNT = 4 + 1;      //4 for 1.x.x and 1 for 2.x.x
+        std::vector<Version> layerVersions(LAYER_SCHEMA_COUNT);
+        //layer 1.0.0 - MapGuide 2007
+        layerVersions[0].SetMajor(1);
+        layerVersions[0].SetMinor(0);
+        layerVersions[0].SetRevision(0);
+        //layer 1.1.0 - MapGuide 2008
+        layerVersions[1].SetMajor(1);
+        layerVersions[1].SetMinor(1);
+        layerVersions[1].SetRevision(0);
+        //layer 1.2.0 - MapGuide 2009
+        layerVersions[2].SetMajor(1);
+        layerVersions[2].SetMinor(2);
+        layerVersions[2].SetRevision(0);
+        //layer 1.3.0 - MapGuide 2010
+        layerVersions[3].SetMajor(1);
+        layerVersions[3].SetMinor(3);
+        layerVersions[3].SetRevision(0);
+        //layer 2.3.0 - MapGuide 2012
+        layerVersions[4].SetMajor(2);
+        layerVersions[4].SetMinor(3);
+        layerVersions[4].SetRevision(0);
+
+        for (vector<Version>::size_type layerVersionIndex = 0; layerVersionIndex != layerVersions.size(); ++layerVersionIndex)
         {
-            Version layerDefVersion(1, minorVersion, 0);
+            Version &layerDefVersion = layerVersions[layerVersionIndex];
 
             Ptr<MgResourceIdentifier> ldfres = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestTypeStyles.LayerDefinition");
 
@@ -307,6 +338,75 @@
         // delete the files
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_Copy1.ldf", true);
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_Copy2.ldf", true);
+
+        
+        // ------------------------------------------------------
+        // process map definition with type styles
+        // ------------------------------------------------------
+
+        // iterate over the map definition schema versions
+        const int MAP_SCHEMA_COUNT = 1 + 1;      //1 for 1.x.x and 1 for 2.x.x
+        std::vector<Version> mapVersions(MAP_SCHEMA_COUNT);
+        //map 1.0.0 - MapGuide before 2012
+        mapVersions[0].SetMajor(1);
+        mapVersions[0].SetMinor(0);
+        mapVersions[0].SetRevision(0);
+        //map 2.3.0 - MapGuide 2012
+        mapVersions[1].SetMajor(2);
+        mapVersions[1].SetMinor(3);
+        mapVersions[1].SetRevision(0);
+
+        for (vector<Version>::size_type mapVersionIndex = 0; mapVersionIndex != mapVersions.size(); ++mapVersionIndex)
+        {
+            Version &mapDefVersion = mapVersions[mapVersionIndex];
+
+            Ptr<MgResourceIdentifier> mdfres = new MgResourceIdentifier(L"Library://UnitTests/MdfModel/MdfTestMap.MapDefinition");
+
+            // parse the MDF - this exercises MdfParser deserialization
+            Ptr<MgByteReader> rdr = m_svcResource->GetResourceContent(mdfres);
+            Ptr<MgByteSink> sink = new MgByteSink(rdr);
+            Ptr<MgByte> bytes = sink->ToBuffer();
+            CPPUNIT_ASSERT(bytes->GetLength() > 0);
+
+            parser.ParseString((const char*)bytes->Bytes(), bytes->GetLength());
+            CPPUNIT_ASSERT(parser.GetSucceeded());
+
+            // write the file - this exercises MdfParser serialization
+            auto_ptr<MapDefinition> mapDef1(parser.DetachMapDefinition());
+            CPPUNIT_ASSERT(mapDef1.get() != NULL);
+
+            parser.WriteToFile("../UnitTestFiles/MdfTestMap_Copy1.mdf", mapDef1.get(), NULL, NULL, NULL, NULL, NULL, &mapDefVersion);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestMap_Copy1.mdf"));
+
+            // parse and resave the newly written file
+            Ptr<MgByteSource> src1 = new MgByteSource(L"../UnitTestFiles/MdfTestMap_Copy1.mdf");
+            Ptr<MgByteReader> rdr1 = src1->GetReader();
+            Ptr<MgByteSink> sink1 = new MgByteSink(rdr1);
+            Ptr<MgByte> bytes1 = sink1->ToBuffer();
+            parser.ParseString((const char*)bytes1->Bytes(), bytes1->GetLength());
+            auto_ptr<MapDefinition> mapDef2(parser.DetachMapDefinition());
+            CPPUNIT_ASSERT(mapDef2.get() != NULL);
+
+            parser.WriteToFile("../UnitTestFiles/MdfTestMap_Copy2.mdf", mapDef2.get(), NULL, NULL, NULL, NULL, NULL, &mapDefVersion);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestMap_Copy2.mdf"));
+
+            // compare the two files
+            Ptr<MgByteSource> src2 = new MgByteSource(L"../UnitTestFiles/MdfTestMap_Copy2.mdf");
+            Ptr<MgByteReader> rdr2 = src2->GetReader();
+            Ptr<MgByteSink> sink2 = new MgByteSink(rdr2);
+            Ptr<MgByte> bytes2 = sink2->ToBuffer();
+
+            CPPUNIT_ASSERT(bytes1->GetLength() == bytes2->GetLength());
+            CPPUNIT_ASSERT(memcmp(bytes1->Bytes(), bytes2->Bytes(), bytes1->GetLength()) == 0);
+
+            // save the new resource to the repository to validate the XML
+            m_svcResource->SetResource(mdfresV, rdr1, NULL);
+            m_svcResource->DeleteResource(mdfresV);
+        }
+
+        // delete the files
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestMap_Copy1.mdf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestMap_Copy2.mdf", true);
     }
     catch (MgException* e)
     {
@@ -326,6 +426,7 @@
         Version layerDefVersion11(1, 1, 0); // MapGuide 2008
         Version layerDefVersion12(1, 2, 0); // MapGuide 2009
         Version layerDefVersion13(1, 3, 0); // MapGuide 2010
+        Version layerDefVersion23(2, 3, 0); // MapGuide 2012
         Version symbolDefVersion10(1, 0, 0); // MapGuide 2008
         Version symbolDefVersion11(1, 1, 0); // MapGuide 2009
         MdfParser::SAX2Parser parser;
@@ -475,6 +576,9 @@
             parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v13_Copy1.ldf", NULL, layerDef1.get(), NULL, NULL, NULL, NULL, &layerDefVersion13);
             CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy1.ldf"));
 
+            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v23_Copy1.ldf", NULL, layerDef1.get(), NULL, NULL, NULL, NULL, &layerDefVersion23);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy1.ldf"));
+
             // parse and resave the newly written files
             Ptr<MgByteSource> src1_09 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v09_Copy1.ldf");
             Ptr<MgByteReader> rdr1_09 = src1_09->GetReader();
@@ -531,6 +635,17 @@
             parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v13_Copy2.ldf", NULL, layerDef2_13.get(), NULL, NULL, NULL, NULL, &layerDefVersion13);
             CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy2.ldf"));
 
+            Ptr<MgByteSource> src1_23 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy1.ldf");
+            Ptr<MgByteReader> rdr1_23 = src1_23->GetReader();
+            Ptr<MgByteSink> sink1_23 = new MgByteSink(rdr1_23);
+            Ptr<MgByte> bytes1_23 = sink1_23->ToBuffer();
+            parser.ParseString((const char*)bytes1_23->Bytes(), bytes1_23->GetLength());
+            auto_ptr<VectorLayerDefinition> layerDef2_23(parser.DetachVectorLayerDefinition());
+            CPPUNIT_ASSERT(layerDef2_23.get() != NULL);
+
+            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v23_Copy2.ldf", NULL, layerDef2_23.get(), NULL, NULL, NULL, NULL, &layerDefVersion23);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy2.ldf"));
+
             // compare the files
             Ptr<MgByteSource> src2_09 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v09_Copy2.ldf");
             Ptr<MgByteReader> rdr2_09 = src2_09->GetReader();
@@ -567,52 +682,70 @@
             CPPUNIT_ASSERT(bytes1_13->GetLength() == bytes2_13->GetLength());
             CPPUNIT_ASSERT(memcmp(bytes1_13->Bytes(), bytes2_13->Bytes(), bytes1_13->GetLength()) == 0);
 
+            Ptr<MgByteSource> src2_23 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy2.ldf");
+            Ptr<MgByteReader> rdr2_23 = src2_23->GetReader();
+            Ptr<MgByteSink> sink2_23 = new MgByteSink(rdr2_23);
+            Ptr<MgByte> bytes2_23 = sink2_23->ToBuffer();
+            CPPUNIT_ASSERT(bytes1_23->GetLength() == bytes2_23->GetLength());
+            CPPUNIT_ASSERT(memcmp(bytes1_23->Bytes(), bytes2_23->Bytes(), bytes1_23->GetLength()) == 0);
+
             // verify extended data support is working...
             //   - layerDef2_10 was loaded from XML containing extended data
             //   - layerDef2_11 was loaded from XML containing extended data
             //   - layerDef2_12 was loaded from XML containing no extended data
             //   - layerDef2_13 was loaded from XML containing no extended data
+            //   - layerDef2_23 was loaded from XML containing no extended data
             // the data in these object models should be the same
 
-            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v13_Copy3a.ldf", NULL, layerDef2_10.get(), NULL, NULL, NULL, NULL, &layerDefVersion13);
-            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3a.ldf"));
+            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v23_Copy3a.ldf", NULL, layerDef2_10.get(), NULL, NULL, NULL, NULL, &layerDefVersion23);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3a.ldf"));
 
-            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v13_Copy3b.ldf", NULL, layerDef2_11.get(), NULL, NULL, NULL, NULL, &layerDefVersion13);
-            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3b.ldf"));
+            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v23_Copy3b.ldf", NULL, layerDef2_11.get(), NULL, NULL, NULL, NULL, &layerDefVersion23);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3b.ldf"));
 
-            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v13_Copy3c.ldf", NULL, layerDef2_12.get(), NULL, NULL, NULL, NULL, &layerDefVersion13);
-            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3c.ldf"));
+            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v23_Copy3c.ldf", NULL, layerDef2_12.get(), NULL, NULL, NULL, NULL, &layerDefVersion23);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3c.ldf"));
 
-            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v13_Copy3d.ldf", NULL, layerDef2_13.get(), NULL, NULL, NULL, NULL, &layerDefVersion13);
-            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3d.ldf"));
+            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v23_Copy3d.ldf", NULL, layerDef2_13.get(), NULL, NULL, NULL, NULL, &layerDefVersion23);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3d.ldf"));
 
-            Ptr<MgByteSource> src3a_13 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3a.ldf");
-            Ptr<MgByteReader> rdr3a_13 = src3a_13->GetReader();
-            Ptr<MgByteSink> sink3a_13 = new MgByteSink(rdr3a_13);
-            Ptr<MgByte> bytes3a_13 = sink3a_13->ToBuffer();
+            parser.WriteToFile("../UnitTestFiles/MdfTestTypeStyles_v23_Copy3e.ldf", NULL, layerDef2_23.get(), NULL, NULL, NULL, NULL, &layerDefVersion23);
+            CPPUNIT_ASSERT(MgFileUtil::IsFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3e.ldf"));
 
-            Ptr<MgByteSource> src3b_13 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3b.ldf");
-            Ptr<MgByteReader> rdr3b_13 = src3b_13->GetReader();
-            Ptr<MgByteSink> sink3b_13 = new MgByteSink(rdr3b_13);
-            Ptr<MgByte> bytes3b_13 = sink3b_13->ToBuffer();
+            Ptr<MgByteSource> src3a_23 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3a.ldf");
+            Ptr<MgByteReader> rdr3a_23 = src3a_23->GetReader();
+            Ptr<MgByteSink> sink3a_23 = new MgByteSink(rdr3a_23);
+            Ptr<MgByte> bytes3a_23 = sink3a_23->ToBuffer();
 
-            Ptr<MgByteSource> src3c_13 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3c.ldf");
-            Ptr<MgByteReader> rdr3c_13 = src3c_13->GetReader();
-            Ptr<MgByteSink> sink3c_13 = new MgByteSink(rdr3c_13);
-            Ptr<MgByte> bytes3c_13 = sink3c_13->ToBuffer();
+            Ptr<MgByteSource> src3b_23 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3b.ldf");
+            Ptr<MgByteReader> rdr3b_23 = src3b_23->GetReader();
+            Ptr<MgByteSink> sink3b_23 = new MgByteSink(rdr3b_23);
+            Ptr<MgByte> bytes3b_23 = sink3b_23->ToBuffer();
 
-            Ptr<MgByteSource> src3d_13 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3d.ldf");
-            Ptr<MgByteReader> rdr3d_13 = src3d_13->GetReader();
-            Ptr<MgByteSink> sink3d_13 = new MgByteSink(rdr3d_13);
-            Ptr<MgByte> bytes3d_13 = sink3d_13->ToBuffer();
+            Ptr<MgByteSource> src3c_23 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3c.ldf");
+            Ptr<MgByteReader> rdr3c_23 = src3c_23->GetReader();
+            Ptr<MgByteSink> sink3c_23 = new MgByteSink(rdr3c_23);
+            Ptr<MgByte> bytes3c_23 = sink3c_23->ToBuffer();
 
-            CPPUNIT_ASSERT(bytes3a_13->GetLength() == bytes3b_13->GetLength());
-            CPPUNIT_ASSERT(bytes3b_13->GetLength() == bytes3c_13->GetLength());
-            CPPUNIT_ASSERT(bytes3c_13->GetLength() == bytes3d_13->GetLength());
-            CPPUNIT_ASSERT(memcmp(bytes3a_13->Bytes(), bytes3b_13->Bytes(), bytes3a_13->GetLength()) == 0);
-            CPPUNIT_ASSERT(memcmp(bytes3b_13->Bytes(), bytes3c_13->Bytes(), bytes3b_13->GetLength()) == 0);
-            CPPUNIT_ASSERT(memcmp(bytes3c_13->Bytes(), bytes3d_13->Bytes(), bytes3c_13->GetLength()) == 0);
+            Ptr<MgByteSource> src3d_23 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3d.ldf");
+            Ptr<MgByteReader> rdr3d_23 = src3d_23->GetReader();
+            Ptr<MgByteSink> sink3d_23 = new MgByteSink(rdr3d_23);
+            Ptr<MgByte> bytes3d_23 = sink3d_23->ToBuffer();
 
+            Ptr<MgByteSource> src3e_23 = new MgByteSource(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3e.ldf");
+            Ptr<MgByteReader> rdr3e_23 = src3e_23->GetReader();
+            Ptr<MgByteSink> sink3e_23 = new MgByteSink(rdr3e_23);
+            Ptr<MgByte> bytes3e_23 = sink3e_23->ToBuffer();
+
+            CPPUNIT_ASSERT(bytes3a_23->GetLength() == bytes3b_23->GetLength());
+            CPPUNIT_ASSERT(bytes3b_23->GetLength() == bytes3c_23->GetLength());
+            CPPUNIT_ASSERT(bytes3c_23->GetLength() == bytes3d_23->GetLength());
+            CPPUNIT_ASSERT(bytes3d_23->GetLength() == bytes3e_23->GetLength());
+            CPPUNIT_ASSERT(memcmp(bytes3a_23->Bytes(), bytes3b_23->Bytes(), bytes3a_23->GetLength()) == 0);
+            CPPUNIT_ASSERT(memcmp(bytes3b_23->Bytes(), bytes3c_23->Bytes(), bytes3b_23->GetLength()) == 0);
+            CPPUNIT_ASSERT(memcmp(bytes3c_23->Bytes(), bytes3d_23->Bytes(), bytes3c_23->GetLength()) == 0);
+            CPPUNIT_ASSERT(memcmp(bytes3d_23->Bytes(), bytes3e_23->Bytes(), bytes3d_23->GetLength()) == 0);
+
             // save the new resources to the repository to validate the XML
             m_svcResource->SetResource(ldfresV, rdr1_09, NULL);
             m_svcResource->DeleteResource(ldfresV);
@@ -624,8 +757,10 @@
             m_svcResource->DeleteResource(ldfresV);
             m_svcResource->SetResource(ldfresV, rdr1_13, NULL);
             m_svcResource->DeleteResource(ldfresV);
-            m_svcResource->SetResource(ldfresV, rdr3a_13, NULL);
+            m_svcResource->SetResource(ldfresV, rdr1_23, NULL);
             m_svcResource->DeleteResource(ldfresV);
+            m_svcResource->SetResource(ldfresV, rdr3a_23, NULL);
+            m_svcResource->DeleteResource(ldfresV);
         }
 
         // delete the files
@@ -634,17 +769,24 @@
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v11_Copy1.ldf", true);
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v12_Copy1.ldf", true);
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy1.ldf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy1.ldf", true);
 
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v09_Copy2.ldf", true);
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v10_Copy2.ldf", true);
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v11_Copy2.ldf", true);
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v12_Copy2.ldf", true);
         MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy2.ldf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy2.ldf", true);
 
-        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3a.ldf", true);
-        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3b.ldf", true);
-        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3c.ldf", true);
-        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v13_Copy3d.ldf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3a.ldf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3b.ldf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3c.ldf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3d.ldf", true);
+        MgFileUtil::DeleteFile(L"../UnitTestFiles/MdfTestTypeStyles_v23_Copy3e.ldf", true);
+
+        // As MapDefinition 1.0.0 doesn't take extension into consideration, if a MDF 2.3 is
+        // stored into 1.0.0, there will be some information missing. So no test code about
+        // version.
     }
     catch (MgException* e)
     {

Added: trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestMap.mdf
===================================================================
--- trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestMap.mdf	                        (rev 0)
+++ trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestMap.mdf	2010-10-18 09:56:22 UTC (rev 5290)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MapDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MapDefinition-2.3.0.xsd" version="2.3.0">
+  <Name>Base Map</Name>
+  <CoordinateSystem>GEOGCS[&quot;LL84&quot;,DATUM[&quot;WGS 84&quot;,SPHEROID[&quot;WGS 84&quot;,6378137,298.25722293287],TOWGS84[0,0,0,0,0,0,0]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;Degrees&quot;,0.01745329252]]</CoordinateSystem>
+  <Extents>
+    <MinX>-87.79786601383196</MinX>
+    <MaxX>-87.66452777186925</MaxX>
+    <MinY>43.6868578621819</MinY>
+    <MaxY>43.8037962206133</MaxY>
+  </Extents>
+  <BackgroundColor>FFF7E1D2</BackgroundColor>
+  <MapLayer>
+    <Name>RoadCenterLines</Name>
+    <ResourceId>Library://UnitTests/Layers/RoadCenterLines.LayerDefinition</ResourceId>
+    <Selectable>false</Selectable>
+    <ShowInLegend>true</ShowInLegend>
+    <LegendLabel>Road CenterLines</LegendLabel>
+    <ExpandInLegend>false</ExpandInLegend>
+    <Visible>true</Visible>
+    <Group></Group>
+  </MapLayer>
+  <BaseMapDefinition>
+    <FiniteDisplayScale>200000</FiniteDisplayScale>
+    <FiniteDisplayScale>100000</FiniteDisplayScale>
+    <FiniteDisplayScale>50000</FiniteDisplayScale>
+    <FiniteDisplayScale>25000</FiniteDisplayScale>
+    <FiniteDisplayScale>12500</FiniteDisplayScale>
+    <FiniteDisplayScale>6250</FiniteDisplayScale>
+    <FiniteDisplayScale>3125</FiniteDisplayScale>
+    <FiniteDisplayScale>1562.5</FiniteDisplayScale>
+    <FiniteDisplayScale>781.25</FiniteDisplayScale>
+    <FiniteDisplayScale>390.625</FiniteDisplayScale>
+    <BaseMapLayerGroup>
+      <Name>BaseLayers</Name>
+      <Visible>true</Visible>
+      <ShowInLegend>true</ShowInLegend>
+      <ExpandInLegend>true</ExpandInLegend>
+      <LegendLabel>Base Layers</LegendLabel>
+      <BaseMapLayer>
+        <Name>Parcels</Name>
+        <ResourceId>Library://UnitTests/Layers/Parcels.LayerDefinition</ResourceId>
+        <Selectable>true</Selectable>
+        <ShowInLegend>true</ShowInLegend>
+        <LegendLabel>Parcels</LegendLabel>
+        <ExpandInLegend>false</ExpandInLegend>
+      </BaseMapLayer>
+      <BaseMapLayer>
+        <Name>VotingDistricts</Name>
+        <ResourceId>Library://UnitTests/Layers/VotingDistricts.LayerDefinition</ResourceId>
+        <Selectable>true</Selectable>
+        <ShowInLegend>true</ShowInLegend>
+        <LegendLabel>Voting Districts</LegendLabel>
+        <ExpandInLegend>false</ExpandInLegend>
+      </BaseMapLayer>
+    </BaseMapLayerGroup>
+  </BaseMapDefinition>
+  <Watermarks>
+    <Watermark>
+      <Name>Watermark example</Name>
+      <ResourceId>Library://UnitTests/Watermark/Text.WatermarkDefinition</ResourceId>
+    </Watermark>
+  </Watermarks>
+</MapDefinition>


Property changes on: trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestMap.mdf
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestTypeStyles.ldf
===================================================================
--- trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestTypeStyles.ldf	2010-10-18 07:16:47 UTC (rev 5289)
+++ trunk/MgDev/UnitTest/TestData/MdfModel/MdfTestTypeStyles.ldf	2010-10-18 09:56:22 UTC (rev 5290)
@@ -695,6 +695,12 @@
       </ExtendedData1>
     </VectorScaleRange>
     <ExtendedData1>
+      <Watermarks>
+        <Watermark>
+          <Name>New Watermark Definition</Name>
+          <ResourceId>Library://UnitTests/Watermark/Text.WatermarkDefinition</ResourceId>
+        </Watermark>
+      </Watermarks>
       <NewElementA>
         <SubElement>DataA</SubElement>
       </NewElementA>



More information about the mapguide-commits mailing list