From 43da879ea2123707190875fe2615e01be19ecced Mon Sep 17 00:00:00 2001
From: Kevin Cozens
Date: Mon, 5 Aug 2013 19:29:38 -0400
Subject: Added regression tests for the routines related to fake parcel IDs.

---
 OpenSim/Framework/Tests/UtilTest.cs | 84 +++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/OpenSim/Framework/Tests/UtilTest.cs b/OpenSim/Framework/Tests/UtilTest.cs
index 11ca068..c83651c 100644
--- a/OpenSim/Framework/Tests/UtilTest.cs
+++ b/OpenSim/Framework/Tests/UtilTest.cs
@@ -282,5 +282,89 @@ namespace OpenSim.Framework.Tests
                     String.Format("Incorrect InventoryType mapped from Content-Type {0}", invcontenttypes[i]));
             }
         }
+
+        [Test]
+        public void FakeParcelIDTests()
+        {
+            byte[] hexBytes8 = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 };
+            byte[] hexBytes16 = {
+                        0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
+                        0x77, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f };
+            UInt64 var64Bit = (UInt64)0xfedcba9876543210;
+
+            //Region handle is for location 255000,256000.
+            ulong regionHandle1 = 1095216660736000;
+            uint  x1 = 100;
+            uint  y1 = 200;
+            uint  z1 = 22;
+            ulong regionHandle2;
+            uint  x2, y2, z2;
+            UUID fakeParcelID1, fakeParcelID2, uuid;
+
+            ulong bigInt64 = Util.BytesToUInt64Big(hexBytes8);
+            Assert.AreEqual(var64Bit, bigInt64,
+                    "BytesToUint64Bit conversion of 8 bytes to UInt64 failed.");
+
+            //Test building and decoding using some typical input values
+            fakeParcelID1 = Util.BuildFakeParcelID(regionHandle1, x1, y1);
+            Util.ParseFakeParcelID(fakeParcelID1, out regionHandle2, out x2, out y2);
+            Assert.AreEqual(regionHandle1, regionHandle2,
+                    "region handle decoded from FakeParcelID wth X/Y failed.");
+            Assert.AreEqual(x1, x2,
+                    "X coordinate decoded from FakeParcelID wth X/Y failed.");
+            Assert.AreEqual(y1, y2,
+                    "Y coordinate decoded from FakeParcelID wth X/Y failed.");
+
+            fakeParcelID1 = Util.BuildFakeParcelID(regionHandle1, x1, y1, z1);
+            Util.ParseFakeParcelID(fakeParcelID1, out regionHandle2, out x2, out y2, out z2);
+            Assert.AreEqual(regionHandle1, regionHandle2,
+                    "region handle decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(x1, x2,
+                    "X coordinate decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(y1, y2,
+                    "Y coordinate decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(z1, z2,
+                    "Z coordinate decoded from FakeParcelID with X/Y/Z failed.");
+
+            //Do some more extreme tests to check the encoding and decoding
+            x1 = 0x55aa;
+            y1 = 0x9966;
+            z1 = 0x5a96;
+
+            fakeParcelID1 = Util.BuildFakeParcelID(var64Bit, x1, y1);
+            Util.ParseFakeParcelID(fakeParcelID1, out regionHandle2, out x2, out y2);
+            Assert.AreEqual(var64Bit, regionHandle2,
+                    "region handle decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(x1, x2,
+                    "X coordinate decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(y1, y2,
+                    "Y coordinate decoded from FakeParcelID with X/Y/Z failed.");
+
+            fakeParcelID1 = Util.BuildFakeParcelID(var64Bit, x1, y1, z1);
+            Util.ParseFakeParcelID(fakeParcelID1, out regionHandle2, out x2, out y2, out z2);
+            Assert.AreEqual(var64Bit, regionHandle2,
+                    "region handle decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(x1, x2,
+                    "X coordinate decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(y1, y2,
+                    "Y coordinate decoded from FakeParcelID with X/Y/Z failed.");
+            Assert.AreEqual(z1, z2,
+                    "Z coordinate decoded from FakeParcelID with X/Y/Z failed.");
+
+
+            x1 = 64;
+            y1 = 192;
+            fakeParcelID1 = Util.BuildFakeParcelID(regionHandle1, x1, y1);
+            Util.FakeParcelIDToGlobalPosition(fakeParcelID1, out x2, out y2);
+            Assert.AreEqual(255000+x1, x2,
+                    "Global X coordinate decoded from regionHandle failed.");
+            Assert.AreEqual(256000+y1, y2,
+                    "Global Y coordinate decoded from regionHandle failed.");
+
+            uuid = new UUID("00dd0700-00d1-0700-3800-000032000000");
+            Util.FakeParcelIDToGlobalPosition(uuid, out x2, out y2);
+System.Console.WriteLine("uuid: " + uuid);
+System.Console.WriteLine("x2/y2: " + x2 + "," + y2);
+        }
     }
 }
-- 
cgit v1.1