From 133a4a9906e55b20ff8780ebe5f59df87d5523ee Mon Sep 17 00:00:00 2001
From: dr scofield (aka dirk husemann)
Date: Thu, 1 Oct 2009 15:03:16 +0200
Subject: - adding new LandDataSerializer testcase to "test-xml" target as well
 - adding another LandDataSerializer testcase

---
 .nant/local.include                                |  5 +++
 .../Serialization/External/LandDataSerializer.cs   | 22 +++++------
 .../Serialization/Tests/LandDataSerializerTests.cs | 44 ++++++++++++++++++++--
 3 files changed, 57 insertions(+), 14 deletions(-)

diff --git a/.nant/local.include b/.nant/local.include
index 8e233d0..f78c6a6 100644
--- a/.nant/local.include
+++ b/.nant/local.include
@@ -228,6 +228,11 @@
     <arg value="-xml=test-results/OpenSim.Framework.Communications.Tests.dll-Results.xml" />
   </exec>
 
+ <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.serialization.tests">
+    <arg value="./bin/OpenSim.Framework.Serialization.Tests.dll" />
+    <arg value="-xml=test-results/OpenSim.Framework.Serialization.Tests.dll-Results.xml" />
+  </exec>
+
  <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.servers.tests">
     <arg value="./bin/OpenSim.Framework.Servers.Tests.dll" />
     <arg value="-xml=test-results/OpenSim.Framework.Servers.Tests.dll-Results.xml" />
diff --git a/OpenSim/Framework/Serialization/External/LandDataSerializer.cs b/OpenSim/Framework/Serialization/External/LandDataSerializer.cs
index e980945..a3bc5d1 100644
--- a/OpenSim/Framework/Serialization/External/LandDataSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/LandDataSerializer.cs
@@ -99,7 +99,7 @@ namespace OpenSim.Framework.Serialization.External
             {
                 while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
                 {
-                    ParcelManager.ParcelAccessEntry pae;
+                    ParcelManager.ParcelAccessEntry pae = new ParcelManager.ParcelAccessEntry();
 
                     xtr.ReadStartElement("ParcelAccessEntry");
                     pae.AgentID    = UUID.Parse(                           xtr.ReadElementString("AgentID"));
@@ -112,14 +112,14 @@ namespace OpenSim.Framework.Serialization.External
             }
             xtr.Read();
 
-            landData.PassHours      = Convert.ToSingle(                xtr.ReadElementString("PassHours"));
-            landData.PassPrice      = Convert.ToInt32(                 xtr.ReadElementString("PassPrice"));
-            landData.SalePrice      = Convert.ToInt32(                 xtr.ReadElementString("SalePrice"));
-            landData.SnapshotID     = UUID.Parse(                      xtr.ReadElementString("SnapshotID"));
-            landData.UserLocation   = Vector3.Parse(                   xtr.ReadElementString("UserLocation"));
-            landData.UserLookAt     = Vector3.Parse(                   xtr.ReadElementString("UserLookAt"));
-            landData.Dwell          = Convert.ToInt32(                 xtr.ReadElementString("Dwell"));
-            landData.OtherCleanTime = Convert.ToInt32(                 xtr.ReadElementString("OtherCleanTime"));
+            landData.PassHours      = Convert.ToSingle(                    xtr.ReadElementString("PassHours"));
+            landData.PassPrice      = Convert.ToInt32(                     xtr.ReadElementString("PassPrice"));
+            landData.SalePrice      = Convert.ToInt32(                     xtr.ReadElementString("SalePrice"));
+            landData.SnapshotID     = UUID.Parse(                          xtr.ReadElementString("SnapshotID"));
+            landData.UserLocation   = Vector3.Parse(                       xtr.ReadElementString("UserLocation"));
+            landData.UserLookAt     = Vector3.Parse(                       xtr.ReadElementString("UserLookAt"));
+            landData.Dwell          = Convert.ToInt32(                     xtr.ReadElementString("Dwell"));
+            landData.OtherCleanTime = Convert.ToInt32(                     xtr.ReadElementString("OtherCleanTime"));
 
             xtr.ReadEndElement();
             
@@ -165,8 +165,8 @@ namespace OpenSim.Framework.Serialization.External
             {
                 xtw.WriteStartElement("ParcelAccessEntry");
                 xtw.WriteElementString("AgentID",     pal.AgentID.ToString());
-                xtw.WriteElementString("Time",        Convert.ToString(pal.Time));
-                xtw.WriteElementString("AccessList",  Convert.ToString(pal.Flags));
+                xtw.WriteElementString("Time",        pal.Time.ToString("s"));
+                xtw.WriteElementString("AccessList",  Convert.ToString((uint)pal.Flags));
                 xtw.WriteEndElement();
             }
             xtw.WriteEndElement();
diff --git a/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs
index 06ec047..14e0462 100644
--- a/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs
+++ b/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs
@@ -39,7 +39,13 @@ namespace OpenSim.Framework.Serialization.Tests
     public class LandDataSerializerTest
     {
         private LandData land;
-        private string preSerialized = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n  <Area>128</Area>\n  <AuctionID>0</AuctionID>\n  <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n  <Category>10</Category>\n  <ClaimDate>0</ClaimDate>\n  <ClaimPrice>0</ClaimPrice>\n  <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n  <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n  <IsGroupOwned>False</IsGroupOwned>\n  <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n  <Description>land data to test LandDataSerializer</Description>\n  <Flags>536870944</Flags>\n  <LandingType>2</LandingType>\n  <Name>LandDataSerializerTest Land</Name>\n  <Status>0</Status>\n  <LocalID>0</LocalID>\n  <MediaAutoScale>1</MediaAutoScale>\n  <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n  <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n  <MusicURL />\n  <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n  <ParcelAccessList />\n  <PassHours>0</PassHours>\n  <PassPrice>0</PassPrice>\n  <SalePrice>0</SalePrice>\n  <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n  <UserLocation>&lt;0, 0, 0&gt;</UserLocation>\n  <UserLookAt>&lt;0, 0, 0&gt;</UserLookAt>\n  <Dwell>0</Dwell>\n  <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
+        private LandData landWithParcelAccessList;
+
+        private static string preSerialized = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n  <Area>128</Area>\n  <AuctionID>0</AuctionID>\n  <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n  <Category>10</Category>\n  <ClaimDate>0</ClaimDate>\n  <ClaimPrice>0</ClaimPrice>\n  <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n  <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n  <IsGroupOwned>False</IsGroupOwned>\n  <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n  <Description>land data to test LandDataSerializer</Description>\n  <Flags>536870944</Flags>\n  <LandingType>2</LandingType>\n  <Name>LandDataSerializerTest Land</Name>\n  <Status>0</Status>\n  <LocalID>0</LocalID>\n  <MediaAutoScale>1</MediaAutoScale>\n  <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n  <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n  <MusicURL />\n  <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n  <ParcelAccessList />\n  <PassHours>0</PassHours>\n  <PassPrice>0</PassPrice>\n  <SalePrice>0</SalePrice>\n  <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n  <UserLocation>&lt;0, 0, 0&gt;</UserLocation>\n  <UserLookAt>&lt;0, 0, 0&gt;</UserLookAt>\n  <Dwell>0</Dwell>\n  <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
+        private static string preSerializedWithParcelAccessList = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n  <Area>128</Area>\n  <AuctionID>0</AuctionID>\n  <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n  <Category>10</Category>\n  <ClaimDate>0</ClaimDate>\n  <ClaimPrice>0</ClaimPrice>\n  <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n  <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n  <IsGroupOwned>False</IsGroupOwned>\n  <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n  <Description>land data to test LandDataSerializer</Description>\n  <Flags>536870944</Flags>\n  <LandingType>2</LandingType>\n  <Name>LandDataSerializerTest Land</Name>\n  <Status>0</Status>\n  <LocalID>0</LocalID>\n  <MediaAutoScale>1</MediaAutoScale>\n  <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n  <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n  <MusicURL />\n  <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n  <ParcelAccessList>\n    <ParcelAccessEntry>\n      <AgentID>62d65d45-c91a-4f77-862c-46557d978b6c</AgentID>\n      <Time>2009-10-01T00:00:00</Time>\n      <AccessList>2</AccessList>\n    </ParcelAccessEntry>\n    <ParcelAccessEntry>\n      <AgentID>ec2a8d18-2378-4fe0-8b68-2a31b57c481e</AgentID>\n      <Time>2010-10-20T00:00:00</Time>\n      <AccessList>1</AccessList>\n    </ParcelAccessEntry>\n  </ParcelAccessList>\n  <PassHours>0</PassHours>\n  <PassPrice>0</PassPrice>\n  <SalePrice>0</SalePrice>\n  <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n  <UserLocation>&lt;0, 0, 0&gt;</UserLocation>\n  <UserLookAt>&lt;0, 0, 0&gt;</UserLookAt>\n  <Dwell>0</Dwell>\n  <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
+
+
+  
 
         [SetUp]
         public void setup()
@@ -67,27 +73,59 @@ namespace OpenSim.Framework.Serialization.Tests
             this.land.MediaID = new UUID("d4452578-2f25-4b97-a81b-819af559cfd7");
             this.land.MediaURL = "http://videos.opensimulator.org/bumblebee.mp4";
             this.land.OwnerID = new UUID("1b8eedf9-6d15-448b-8015-24286f1756bf");
+
+            this.landWithParcelAccessList = this.land.Copy();
+            this.landWithParcelAccessList.ParcelAccessList.Clear();
+
+            ParcelManager.ParcelAccessEntry pae0 = new ParcelManager.ParcelAccessEntry();
+            pae0.AgentID = new UUID("62d65d45-c91a-4f77-862c-46557d978b6c");
+            pae0.Flags = AccessList.Ban;
+            pae0.Time = new DateTime(2009, 10, 01);
+            this.landWithParcelAccessList.ParcelAccessList.Add(pae0);
+
+            ParcelManager.ParcelAccessEntry pae1 = new ParcelManager.ParcelAccessEntry();
+            pae1.AgentID = new UUID("ec2a8d18-2378-4fe0-8b68-2a31b57c481e");
+            pae1.Flags = AccessList.Access;
+            pae1.Time = new DateTime(2010, 10, 20);
+            this.landWithParcelAccessList.ParcelAccessList.Add(pae1);
         }
 
         /// <summary>
+        /// Test the LandDataSerializer.Serialize() method
         /// </summary>
         [Test]
         public void LandDataSerializerSerializeTest()
         {
             string serialized = LandDataSerializer.Serialize(this.land);
             Assert.That(serialized.Length > 0, "Serialize(LandData) returned empty string");
-            Assert.That(serialized == this.preSerialized, "result of Serialize(LandData) does not match expected result");
+            Assert.That(serialized == LandDataSerializerTest.preSerialized, 
+                        "result of Serialize(LandData) does not match expected result");
+
+            string serializedWithParcelAccessList = LandDataSerializer.Serialize(this.landWithParcelAccessList);
+            Assert.That(serializedWithParcelAccessList.Length > 0, 
+                        "Serialize(LandData) returned empty string for LandData object with ParcelAccessList");
+            Assert.That(serializedWithParcelAccessList == LandDataSerializerTest.preSerializedWithParcelAccessList, 
+                        "result of Serialize(LandData) does not match expected result (pre-serialized with parcel access list");
         }
 
         /// <summary>
+        /// Test the LandDataSerializer.Deserialize() method
         /// </summary>
         [Test]
         public void TestLandDataSerializerDeserializeFromStringTest()
         {
-            LandData reifiedLandData = LandDataSerializer.Deserialize(this.preSerialized);
+            LandData reifiedLandData = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerialized);
             Assert.That(reifiedLandData != null, "Deserialize(string) returned null");
             Assert.That(reifiedLandData.GlobalID == this.land.GlobalID, "Reified LandData.GlobalID != original LandData.GlobalID");
             Assert.That(reifiedLandData.Name == this.land.Name, "Reified LandData.Name != original LandData.Name");
+
+            LandData reifiedLandDataWithParcelAccessList = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerializedWithParcelAccessList);
+            Assert.That(reifiedLandDataWithParcelAccessList != null, 
+                        "Deserialize(string) returned null (pre-serialized with parcel access list)");
+            Assert.That(reifiedLandDataWithParcelAccessList.GlobalID == this.landWithParcelAccessList.GlobalID, 
+                        "Reified LandData.GlobalID != original LandData.GlobalID (pre-serialized with parcel access list)");
+            Assert.That(reifiedLandDataWithParcelAccessList.Name == this.landWithParcelAccessList.Name, 
+                        "Reified LandData.Name != original LandData.Name (pre-serialized with parcel access list)");
         }
     }
 }
-- 
cgit v1.1