예제 #1
0
        public void TestJsonCollectionSerialization()
        {
            List <ChangeRequest> crListOut      = new List <ChangeRequest>();
            ChangeRequest        changeRequest1 = new ChangeRequest(new Uri("http://com/somewhere/changeRequest1"));

            changeRequest1.SetFixed(true);
            changeRequest1.AddAffectedByDefect(new Link(new Uri("http://com/somewhere/changeRequest2"), "Test of links"));

            crListOut.Add(changeRequest1);

            ChangeRequest changeRequest2 = new ChangeRequest(new Uri("http://com/somewhere/changeRequest2"));

            changeRequest2.SetFixed(false);
            changeRequest2.AddAffectedByDefect(new Link(new Uri("http://com/somewhere/changeRequest1"), "Test of links"));

            crListOut.Add(changeRequest2);

            JsonValue json = JsonHelper.CreateJson("http://com/somewhere/changerequests",
                                                   "http://com/somewhere/changerequests?page=20",
                                                   "http://com/somewhere/changerequests?page=21",
                                                   null,
                                                   crListOut,
                                                   null);

            OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter(json, false);

            string jsonString = SerializeCollection <ChangeRequest>(formatter, crListOut, OslcMediaType.APPLICATION_JSON_TYPE);

            List <ChangeRequest> crListIn = DeserializeCollection <ChangeRequest>(formatter, jsonString, OslcMediaType.APPLICATION_JSON_TYPE).ToList();

            Assert.AreEqual(crListOut.Count, crListIn.Count);

            //No guarantees of order in a collection, use the "about" attribute to identify individual ChangeRequests
            foreach (ChangeRequest cr in crListIn)
            {
                string crAboutUri = cr.GetAbout().AbsoluteUri;

                if (crAboutUri.Equals("http://com/somewhere/changeRequest1"))
                {
                    Assert.AreEqual(cr.IsFixed(), changeRequest1.IsFixed());
                    Assert.AreEqual(cr.GetAffectedByDefects()[0].GetValue(), changeRequest1.GetAffectedByDefects()[0].GetValue());
                    Assert.AreEqual(cr.GetAffectedByDefects()[0].GetLabel(), changeRequest1.GetAffectedByDefects()[0].GetLabel());
                }
                else if (crAboutUri.Equals("http://com/somewhere/changeRequest2"))
                {
                    Assert.AreEqual(cr.IsFixed(), changeRequest2.IsFixed());
                    Assert.AreEqual(cr.GetAffectedByDefects()[0].GetValue(), changeRequest2.GetAffectedByDefects()[0].GetValue());
                    Assert.AreEqual(cr.GetAffectedByDefects()[0].GetLabel(), changeRequest2.GetAffectedByDefects()[0].GetLabel());
                }
                else
                {
                    Assert.Fail("Deserialized ChangeRequest about attribute not recognized: " + crAboutUri);
                }
            }
        }
예제 #2
0
        public void TestJsonSerialization()
        {
            ChangeRequest changeRequest1 = new ChangeRequest(new Uri("http://com/somewhere/changeReuest"));

            changeRequest1.SetFixed(true);
            changeRequest1.AddAffectedByDefect(new Link(new Uri("http://com/somewhere/changeRequest2"), "Test of links"));

            OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter();

            string json = Serialize <ChangeRequest>(formatter, changeRequest1, OslcMediaType.APPLICATION_JSON_TYPE);

            Debug.WriteLine(json);

            ChangeRequest changeRequest2 = Deserialize <ChangeRequest>(formatter, json, OslcMediaType.APPLICATION_JSON_TYPE);

            Assert.AreEqual(changeRequest1.GetAbout(), changeRequest2.GetAbout());
            Assert.AreEqual(changeRequest1.IsFixed(), changeRequest2.IsFixed());
            Assert.AreEqual(changeRequest1.GetAffectedByDefects()[0].GetValue(), changeRequest2.GetAffectedByDefects()[0].GetValue());
            Assert.AreEqual(changeRequest1.GetAffectedByDefects()[0].GetLabel(), changeRequest2.GetAffectedByDefects()[0].GetLabel());
        }