Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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>&#x10137;</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());
        }
Ejemplo n.º 3
0
        public void SerializeUndef()
        {
            OSD    llsd = new OSD();
            string s    = OSDParser.SerializeLLSDNotation(llsd);

            OSD llsdDS = OSDParser.DeserializeLLSDNotation(s);

            Assert.AreEqual(OSDType.Unknown, llsdDS.Type);
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        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());
        }
Ejemplo n.º 8
0
        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());
        }
Ejemplo n.º 9
0
        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());
        }
Ejemplo n.º 10
0
        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());
        }
Ejemplo n.º 11
0
        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());
        }
Ejemplo n.º 12
0
        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();
        }