public void SerializeDate() { DateTime dtOne = new DateTime(2005, 8, 10, 11, 23, 4, DateTimeKind.Utc); OSD llsdOne = OSD.FromDate(dtOne); string sDtOne = OSDParser.SerializeLLSDNotation(llsdOne); OSD llsdOneDS = OSDParser.DeserializeLLSDNotation(sDtOne); Assert.AreEqual(OSDType.Date, llsdOneDS.Type); DateTime dtOneDS = llsdOneDS.AsDate(); Assert.AreEqual(dtOne, dtOneDS.ToUniversalTime()); DateTime dtTwo = new DateTime(2010, 10, 11, 23, 00, 10, 100, DateTimeKind.Utc); OSD llsdTwo = OSD.FromDate(dtTwo); string sDtTwo = OSDParser.SerializeLLSDNotation(llsdTwo); OSD llsdTwoDS = OSDParser.DeserializeLLSDNotation(sDtTwo); Assert.AreEqual(OSDType.Date, llsdTwoDS.Type); DateTime dtTwoDS = llsdTwoDS.AsDate(); Assert.AreEqual(dtTwo, dtTwoDS.ToUniversalTime()); // check if a *local* time can be serialized and deserialized DateTime dtThree = new DateTime(2009, 12, 30, 8, 25, 10, DateTimeKind.Local); OSD llsdDateThree = OSD.FromDate(dtThree); string sDateThreeSerialized = OSDParser.SerializeLLSDNotation(llsdDateThree); OSD llsdDateThreeDS = OSDParser.DeserializeLLSDNotation(sDateThreeSerialized); Assert.AreEqual(OSDType.Date, llsdDateThreeDS.Type); Assert.AreEqual(dtThree, llsdDateThreeDS.AsDate()); }
public void SerializeMap() { OSDMap llsdOne = new OSDMap(); string sOne = OSDParser.SerializeLLSDNotation(llsdOne); OSDMap llsdOneDS = (OSDMap)OSDParser.DeserializeLLSDNotation(sOne); Assert.AreEqual(OSDType.Map, llsdOneDS.Type); Assert.AreEqual(0, llsdOneDS.Count); OSD llsdTwo = OSD.FromInteger(123234); OSD llsdThree = OSD.FromString("asedkfjhaqweiurohzasdf"); OSDMap llsdFour = new OSDMap(); llsdFour["test0"] = llsdTwo; llsdFour["test1"] = llsdThree; llsdOne["test0"] = llsdTwo; llsdOne["test1"] = llsdThree; llsdOne["test2"] = llsdFour; string sFive = OSDParser.SerializeLLSDNotation(llsdOne); OSDMap llsdFive = (OSDMap)OSDParser.DeserializeLLSDNotation(sFive); Assert.AreEqual(OSDType.Map, llsdFive.Type); Assert.AreEqual(3, llsdFive.Count); Assert.AreEqual(OSDType.Integer, llsdFive["test0"].Type); Assert.AreEqual(123234, llsdFive["test0"].AsInteger()); Assert.AreEqual(OSDType.String, llsdFive["test1"].Type); Assert.AreEqual("asedkfjhaqweiurohzasdf", llsdFive["test1"].AsString()); OSDMap llsdSix = (OSDMap)llsdFive["test2"]; Assert.AreEqual(OSDType.Map, llsdSix.Type); Assert.AreEqual(2, llsdSix.Count); Assert.AreEqual(OSDType.Integer, llsdSix["test0"].Type); Assert.AreEqual(123234, llsdSix["test0"].AsInteger()); Assert.AreEqual(OSDType.String, llsdSix["test1"].Type); Assert.AreEqual("asedkfjhaqweiurohzasdf", llsdSix["test1"].AsString()); // We test here also for 4byte characters as map keys string xml = "<x>𐄷</x>"; byte[] bytes = Encoding.UTF8.GetBytes(xml); XmlTextReader xtr = new XmlTextReader(new MemoryStream(bytes, false)); xtr.Read(); xtr.Read(); string content = xtr.ReadString(); OSDMap llsdSeven = new OSDMap(); llsdSeven[content] = OSD.FromString(content); string sSeven = OSDParser.SerializeLLSDNotation(llsdSeven); OSDMap llsdSevenDS = (OSDMap)OSDParser.DeserializeLLSDNotation(sSeven); Assert.AreEqual(OSDType.Map, llsdSevenDS.Type); Assert.AreEqual(1, llsdSevenDS.Count); Assert.AreEqual(content, llsdSevenDS[content].AsString()); }
public void SerializeUndef() { OSD llsd = new OSD(); string s = OSDParser.SerializeLLSDNotation(llsd); OSD llsdDS = OSDParser.DeserializeLLSDNotation(s); Assert.AreEqual(OSDType.Unknown, llsdDS.Type); }
public void DoSomeStringSerializingActionsAndAsserts(string s) { OSD llsdOne = OSD.FromString(s); string sOne = OSDParser.SerializeLLSDNotation(llsdOne); OSD llsdOneDS = OSDParser.DeserializeLLSDNotation(sOne); Assert.AreEqual(OSDType.String, llsdOne.Type); Assert.AreEqual(s, llsdOneDS.AsString()); }
public void SerializeBinary() { byte[] binary = { 0x0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; OSD llsdBinary = OSD.FromBinary(binary); string sBinarySerialized = OSDParser.SerializeLLSDNotation(llsdBinary); OSD llsdBinaryDS = OSDParser.DeserializeLLSDNotation(sBinarySerialized); Assert.AreEqual(OSDType.Binary, llsdBinaryDS.Type); Assert.AreEqual(binary, llsdBinaryDS.AsBinary()); }
public void SerializeUUID() { OSD llsdOne = OSD.FromUUID(new UUID("97f4aeca-88a1-42a1-b385-b97b18abb255")); string sOne = OSDParser.SerializeLLSDNotation(llsdOne); OSD llsdOneDS = OSDParser.DeserializeLLSDNotation(sOne); Assert.AreEqual(OSDType.UUID, llsdOneDS.Type); Assert.AreEqual("97f4aeca-88a1-42a1-b385-b97b18abb255", llsdOneDS.AsString()); OSD llsdTwo = OSD.FromUUID(new UUID("00000000-0000-0000-0000-000000000000")); string sTwo = OSDParser.SerializeLLSDNotation(llsdTwo); OSD llsdTwoDS = OSDParser.DeserializeLLSDNotation(sTwo); Assert.AreEqual(OSDType.UUID, llsdTwoDS.Type); Assert.AreEqual("00000000-0000-0000-0000-000000000000", llsdTwoDS.AsString()); }
public void SerializeInteger() { OSD llsdOne = OSD.FromInteger(12319423); string sOne = OSDParser.SerializeLLSDNotation(llsdOne); OSD llsdOneDS = OSDParser.DeserializeLLSDNotation(sOne); Assert.AreEqual(OSDType.Integer, llsdOneDS.Type); Assert.AreEqual(12319423, llsdOne.AsInteger()); OSD llsdTwo = OSD.FromInteger(-71892034); string sTwo = OSDParser.SerializeLLSDNotation(llsdTwo); OSD llsdTwoDS = OSDParser.DeserializeLLSDNotation(sTwo); Assert.AreEqual(OSDType.Integer, llsdTwoDS.Type); Assert.AreEqual(-71892034, llsdTwoDS.AsInteger()); }
public void SerializeBoolean() { OSD llsdTrue = OSD.FromBoolean(true); string sTrue = OSDParser.SerializeLLSDNotation(llsdTrue); OSD llsdTrueDS = OSDParser.DeserializeLLSDNotation(sTrue); Assert.AreEqual(OSDType.Boolean, llsdTrueDS.Type); Assert.AreEqual(true, llsdTrueDS.AsBoolean()); OSD llsdFalse = OSD.FromBoolean(false); string sFalse = OSDParser.SerializeLLSDNotation(llsdFalse); OSD llsdFalseDS = OSDParser.DeserializeLLSDNotation(sFalse); Assert.AreEqual(OSDType.Boolean, llsdFalseDS.Type); Assert.AreEqual(false, llsdFalseDS.AsBoolean()); }
public void SerializeURI() { Uri uriOne = new Uri("http://test.org/test test>\\\"/&yes\"", UriKind.RelativeOrAbsolute); OSD llsdOne = OSD.FromUri(uriOne); string sUriOne = OSDParser.SerializeLLSDNotation(llsdOne); OSD llsdOneDS = OSDParser.DeserializeLLSDNotation(sUriOne); Assert.AreEqual(OSDType.URI, llsdOneDS.Type); Assert.AreEqual(uriOne, llsdOneDS.AsUri()); Uri uriTwo = new Uri("test/test/near/the/end?test=1", UriKind.RelativeOrAbsolute); OSD llsdTwo = OSD.FromUri(uriTwo); string sUriTwo = OSDParser.SerializeLLSDNotation(llsdTwo); OSD llsdTwoDS = OSDParser.DeserializeLLSDNotation(sUriTwo); Assert.AreEqual(OSDType.URI, llsdTwoDS.Type); Assert.AreEqual(uriTwo, llsdTwoDS.AsUri()); }
public void SerializeReal() { OSD llsdOne = OSD.FromReal(12987234.723847d); string sOne = OSDParser.SerializeLLSDNotation(llsdOne); OSD llsdOneDS = OSDParser.DeserializeLLSDNotation(sOne); Assert.AreEqual(OSDType.Real, llsdOneDS.Type); Assert.AreEqual(12987234.723847d, llsdOneDS.AsReal()); OSD llsdTwo = OSD.FromReal(-32347892.234234d); string sTwo = OSDParser.SerializeLLSDNotation(llsdTwo); OSD llsdTwoDS = OSDParser.DeserializeLLSDNotation(sTwo); Assert.AreEqual(OSDType.Real, llsdTwoDS.Type); Assert.AreEqual(-32347892.234234d, llsdTwoDS.AsReal()); OSD llsdThree = OSD.FromReal(Double.MaxValue); string sThree = OSDParser.SerializeLLSDNotation(llsdThree); OSD llsdThreeDS = OSDParser.DeserializeLLSDNotation(sThree); Assert.AreEqual(OSDType.Real, llsdThreeDS.Type); Assert.AreEqual(Double.MaxValue, llsdThreeDS.AsReal()); OSD llsdFour = OSD.FromReal(Double.MinValue); string sFour = OSDParser.SerializeLLSDNotation(llsdFour); OSD llsdFourDS = OSDParser.DeserializeLLSDNotation(sFour); Assert.AreEqual(OSDType.Real, llsdFourDS.Type); Assert.AreEqual(Double.MinValue, llsdFourDS.AsReal()); OSD llsdFive = OSD.FromReal(-1.1123123E+50d); string sFive = OSDParser.SerializeLLSDNotation(llsdFive); OSD llsdFiveDS = OSDParser.DeserializeLLSDNotation(sFive); Assert.AreEqual(OSDType.Real, llsdFiveDS.Type); Assert.AreEqual(-1.1123123E+50d, llsdFiveDS.AsReal()); OSD llsdSix = OSD.FromReal(2.0193899999999998204e-06); string sSix = OSDParser.SerializeLLSDNotation(llsdSix); OSD llsdSixDS = OSDParser.DeserializeLLSDNotation(sSix); Assert.AreEqual(OSDType.Real, llsdSixDS.Type); Assert.AreEqual(2.0193899999999998204e-06, llsdSixDS.AsReal()); }
public void SerializeArray() { OSDArray llsdOne = new OSDArray(); string sOne = OSDParser.SerializeLLSDNotation(llsdOne); OSDArray llsdOneDS = (OSDArray)OSDParser.DeserializeLLSDNotation(sOne); Assert.AreEqual(OSDType.Array, llsdOneDS.Type); Assert.AreEqual(0, llsdOneDS.Count); OSD llsdTwo = OSD.FromInteger(123234); OSD llsdThree = OSD.FromString("asedkfjhaqweiurohzasdf"); OSDArray llsdFour = new OSDArray(); llsdFour.Add(llsdTwo); llsdFour.Add(llsdThree); llsdOne.Add(llsdTwo); llsdOne.Add(llsdThree); llsdOne.Add(llsdFour); string sFive = OSDParser.SerializeLLSDNotation(llsdOne); OSDArray llsdFive = (OSDArray)OSDParser.DeserializeLLSDNotation(sFive); Assert.AreEqual(OSDType.Array, llsdFive.Type); Assert.AreEqual(3, llsdFive.Count); Assert.AreEqual(OSDType.Integer, llsdFive[0].Type); Assert.AreEqual(123234, llsdFive[0].AsInteger()); Assert.AreEqual(OSDType.String, llsdFive[1].Type); Assert.AreEqual("asedkfjhaqweiurohzasdf", llsdFive[1].AsString()); OSDArray llsdSix = (OSDArray)llsdFive[2]; Assert.AreEqual(OSDType.Array, llsdSix.Type); Assert.AreEqual(2, llsdSix.Count); Assert.AreEqual(OSDType.Integer, llsdSix[0].Type); Assert.AreEqual(123234, llsdSix[0].AsInteger()); Assert.AreEqual(OSDType.String, llsdSix[1].Type); Assert.AreEqual("asedkfjhaqweiurohzasdf", llsdSix[1].AsString()); }
public void ToXmlRpc(XmlWriter writer) { writer.WriteStartElement("methodResponse"); { writer.WriteStartElement("params"); writer.WriteStartElement("param"); writer.WriteStartElement("value"); writer.WriteStartElement("struct"); { if (Success) { // session_id WriteXmlRpcStringMember(writer, false, "session_id", SessionID.ToString()); // ui-config WriteXmlRpcArrayStart(writer, "ui-config"); WriteXmlRpcStringMember(writer, true, "allow_first_life", "Y"); WriteXmlRpcArrayEnd(writer); // inventory-lib-owner WriteXmlRpcArrayStart(writer, "inventory-lib-owner"); WriteXmlRpcStringMember(writer, true, "agent_id", LibraryOwner.ToString()); WriteXmlRpcArrayEnd(writer); // start_location WriteXmlRpcStringMember(writer, false, "start_location", StartLocation); // seconds_since_epoch WriteXmlRpcIntMember(writer, false, "seconds_since_epoch", Utils.DateTimeToUnixTime(SecondsSinceEpoch)); // event_categories (TODO) WriteXmlRpcArrayStart(writer, "event_categories"); WriteXmlRpcCategory(writer, "Default Event Category", 20); WriteXmlRpcArrayEnd(writer); // tutorial_setting (TODO) WriteXmlRpcArrayStart(writer, "tutorial_setting"); WriteXmlRpcTutorialSetting(writer, "http://127.0.0.1/tutorial/"); WriteXmlRpcArrayEnd(writer); // classified_categories (TODO) WriteXmlRpcArrayStart(writer, "classified_categories"); WriteXmlRpcCategory(writer, "Default Classified Category", 1); WriteXmlRpcArrayEnd(writer); // inventory-root WriteXmlRpcArrayStart(writer, "inventory-root"); WriteXmlRpcStringMember(writer, true, "folder_id", InventoryRoot.ToString()); WriteXmlRpcArrayEnd(writer); // sim_port WriteXmlRpcIntMember(writer, false, "sim_port", SimPort); // agent_id WriteXmlRpcStringMember(writer, false, "agent_id", AgentID.ToString()); // agent_access WriteXmlRpcStringMember(writer, false, "agent_access", AgentAccess); // inventory-skeleton WriteXmlRpcArrayStart(writer, "inventory-skeleton"); if (InventorySkeleton != null) { foreach (InventoryFolder folder in InventorySkeleton) { WriteXmlRpcInventoryItem(writer, folder.Name, folder.ParentUUID, (uint)folder.Version, (uint)folder.PreferredType, folder.UUID); } } else { WriteXmlRpcInventoryItem(writer, "Inventory", UUID.Zero, 1, (uint)AssetType.Folder, InventoryRoot); } WriteXmlRpcArrayEnd(writer); // buddy-list WriteXmlRpcArrayStart(writer, "buddy-list"); if (BuddyList != null) { foreach (FriendInfo friend in BuddyList) { WriteXmlRpcBuddy(writer, (uint)friend.MyFriendRights, (uint)friend.TheirFriendRights, friend.UUID); } } else { //WriteXmlRpcBuddy(writer, 0, 0, UUID.Random()); } WriteXmlRpcArrayEnd(writer); // first_name WriteXmlRpcStringMember(writer, false, "first_name", FirstName); // global-textures WriteXmlRpcArrayStart(writer, "global-textures"); writer.WriteStartElement("value"); writer.WriteStartElement("struct"); { WriteXmlRpcStringMember(writer, false, "sun_texture_id", "cce0f112-878f-4586-a2e2-a8f104bba271"); WriteXmlRpcStringMember(writer, false, "cloud_texture_id", "fc4b9f0b-d008-45c6-96a4-01dd947ac621"); WriteXmlRpcStringMember(writer, false, "moon_texture_id", "d07f6eed-b96a-47cd-b51d-400ad4a1c428"); } writer.WriteEndElement(); writer.WriteEndElement(); WriteXmlRpcArrayEnd(writer); // inventory-skel-lib WriteXmlRpcArrayStart(writer, "inventory-skel-lib"); if (LibrarySkeleton != null) { foreach (InventoryFolder folder in LibrarySkeleton) { WriteXmlRpcInventoryItem(writer, folder.Name, folder.ParentUUID, (uint)folder.Version, (uint)folder.PreferredType, folder.UUID); } } else { WriteXmlRpcInventoryItem(writer, "Library", UUID.Zero, 1, (uint)AssetType.Folder, LibraryRoot); } WriteXmlRpcArrayEnd(writer); // seed_capability WriteXmlRpcStringMember(writer, false, "seed_capability", SeedCapability); // gestures WriteXmlRpcArrayStart(writer, "gestures"); WriteXmlRpcGesture(writer, UUID.Random(), UUID.Random()); WriteXmlRpcArrayEnd(writer); // sim_ip WriteXmlRpcStringMember(writer, false, "sim_ip", SimIP.ToString()); // inventory-lib-root WriteXmlRpcArrayStart(writer, "inventory-lib-root"); WriteXmlRpcStringMember(writer, true, "folder_id", LibraryRoot.ToString()); WriteXmlRpcArrayEnd(writer); // login-flags WriteXmlRpcArrayStart(writer, "login-flags"); writer.WriteStartElement("value"); writer.WriteStartElement("struct"); { WriteXmlRpcStringMember(writer, false, "gendered", "Y"); WriteXmlRpcStringMember(writer, false, "stipend_since_login", "N"); WriteXmlRpcStringMember(writer, false, "ever_logged_in", "Y"); if (DateTime.Now.IsDaylightSavingTime()) { WriteXmlRpcStringMember(writer, false, "daylight_savings", "Y"); } else { WriteXmlRpcStringMember(writer, false, "daylight_savings", "N"); } } writer.WriteEndElement(); writer.WriteEndElement(); WriteXmlRpcArrayEnd(writer); // inventory_host WriteXmlRpcStringMember(writer, false, "inventory_host", IPAddress.Loopback.ToString()); // home OSDArray homeRegionHandle = new OSDArray(2); uint homeRegionX, homeRegionY; Utils.LongToUInts(HomeRegion, out homeRegionX, out homeRegionY); homeRegionHandle.Add(OSD.FromReal((double)homeRegionX)); homeRegionHandle.Add(OSD.FromReal((double)homeRegionY)); OSDMap home = new OSDMap(3); home["region_handle"] = homeRegionHandle; home["position"] = OSD.FromVector3(HomePosition); home["look_at"] = OSD.FromVector3(HomeLookAt); WriteXmlRpcStringMember(writer, false, "home", OSDParser.SerializeLLSDNotation(home)); // message WriteXmlRpcStringMember(writer, false, "message", Message); // look_at WriteXmlRpcStringMember(writer, false, "look_at", OSDParser.SerializeLLSDNotation(OSD.FromVector3(LookAt))); // login WriteXmlRpcStringMember(writer, false, "login", "true"); // event_notifications WriteXmlRpcArrayStart(writer, "event_notifications"); WriteXmlRpcArrayEnd(writer); // secure_session_id WriteXmlRpcStringMember(writer, false, "secure_session_id", SecureSessionID.ToString()); // region_x WriteXmlRpcIntMember(writer, false, "region_x", RegionX); // last_name WriteXmlRpcStringMember(writer, false, "last_name", LastName); // region_y WriteXmlRpcIntMember(writer, false, "region_y", RegionY); // circuit_code WriteXmlRpcIntMember(writer, false, "circuit_code", CircuitCode); // initial-outfit WriteXmlRpcArrayStart(writer, "initial-outfit"); WriteXmlRpcArrayEnd(writer); } else { // Login failure } } writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); } writer.WriteEndElement(); writer.Close(); }