public void TestNullableEnum() { string Name = "GetEvalsResult"; string Wrapper = "GetEvalsResponse"; string Namespace = "http://tempuri.org/"; Type type = typeof(Client2843.EvalServiceReference.Eval[]); IEnumerable <Type> know_types = new List <Type>(); // This is the XML generated by WCF Server string xml = "<GetEvalsResponse xmlns=\"http://tempuri.org/\"> <GetEvalsResult xmlns:a=\"http://schemas.datacontract.org/2004/07/WcfServiceLibrary1\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"> <a:Eval> <a:Comments>Comment 1</a:Comments> <a:Id>04836718-41a7-45fe-8c0b-ac3fc613b0f8</a:Id> <a:Submitter>Submitter 1</a:Submitter> <a:TimeSubmitted i:nil=\"true\" /> <a:etype>SIMPLE</a:etype> <a:etype2>COMPLEX</a:etype2> </a:Eval> <a:Eval> <a:Comments>Comment 2</a:Comments> <a:Id>fd17a406-4c2c-41ca-9a5d-1a1019d07535</a:Id> <a:Submitter>Submitter 2</a:Submitter> <a:TimeSubmitted>2012-02-26T13:41:00</a:TimeSubmitted> <a:etype i:nil=\"true\" /> <a:etype2>COMPLEX</a:etype2> </a:Eval> </GetEvalsResult> </GetEvalsResponse>"; Client2843.EvalServiceReference.Eval[] evals = null; StringBuilder stringBuilder = new StringBuilder(); var ds = new DataContractSerializer(type, Name, Namespace, know_types); using (var xr = XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create(new StringReader(xml)))) { xr.ReadStartElement(Wrapper, Namespace); for (xr.MoveToContent(); xr.NodeType == XmlNodeType.Element; xr.MoveToContent()) { XmlQualifiedName key = new XmlQualifiedName(xr.LocalName, xr.NamespaceURI); if (Name == key.Name && Namespace == key.Namespace) { break; } } evals = (Client2843.EvalServiceReference.Eval[])ds.ReadObject(xr, true); } using (var xw = XmlDictionaryWriter.CreateDictionaryWriter(XmlWriter.Create(new StringWriter(stringBuilder)))) { ds.WriteObject(xw, evals); } string actualXml = stringBuilder.ToString(); Assert.AreEqual(evals.Length, 2, "Comment 1", "Eval 1 Comment missmatch"); Client2843.EvalServiceReference.Eval ev1 = evals[0]; Client2843.EvalServiceReference.Eval ev2 = evals[1]; // Assert that object deserilized matches each value attribute. Assert.AreEqual(ev1.Comments, "Comment 1", "ev1.Comments missmatch"); Assert.AreEqual(ev1.Submitter, "Submitter 1", "ev1.Submitter missmatch"); Assert.IsNull(ev1.TimeSubmitted, "ev1.TimeSubmitted missmatch"); Assert.AreEqual(ev1.etype, Client2843.EvalServiceReference.EvalType.SIMPLE, "ev1.etype missmatch"); Assert.AreEqual(ev1.etype2, Client2843.EvalServiceReference.EvalType.COMPLEX, "ev1.etype2 missmatch"); Assert.AreEqual(ev2.Comments, "Comment 2", "ev2.Comments missmatch"); Assert.AreEqual(ev2.Submitter, "Submitter 2", "ev2.Submitter missmatch"); Assert.AreEqual(ev2.TimeSubmitted, DateTime.Parse("2012-02-26T13:41:00"), "ev2.TimeSubmitted missmatch"); Assert.IsNull(ev2.etype, "ev2.etype missmatch"); Assert.AreEqual(ev2.etype2, Client2843.EvalServiceReference.EvalType.COMPLEX, "ev2.etype2 missmatch"); Client2843.EvalServiceReference.Eval[] evals2 = null; using (var xr = XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create(new StringReader(actualXml)))) { evals2 = (Client2843.EvalServiceReference.Eval[])ds.ReadObject(xr, true); } Client2843.EvalServiceReference.Eval e1 = evals2[0]; Client2843.EvalServiceReference.Eval e2 = evals2[1]; Assert.AreEqual(e1.Comments, "Comment 1", "e1.Comments missmatch"); Assert.AreEqual(e1.Submitter, "Submitter 1", "e1.Submitter missmatch"); Assert.IsNull(e1.TimeSubmitted, "e1.TimeSubmitted missmatch"); Assert.AreEqual(e1.etype, Client2843.EvalServiceReference.EvalType.SIMPLE, "e1.etype missmatch"); Assert.AreEqual(e1.etype2, Client2843.EvalServiceReference.EvalType.COMPLEX, "e1.etype2 missmatch"); Assert.AreEqual(e2.Comments, "Comment 2", "e2.Comments missmatch"); Assert.AreEqual(e2.Submitter, "Submitter 2", "e2.Submitter missmatch"); Assert.AreEqual(e2.TimeSubmitted, DateTime.Parse("2012-02-26T13:41:00"), "e2.TimeSubmitted missmatch"); Assert.IsNull(e2.etype, "e2.etype missmatch"); Assert.AreEqual(e2.etype2, Client2843.EvalServiceReference.EvalType.COMPLEX, "e2.etype2 missmatch"); }
public void SubmitEval(Client2843.EvalServiceReference.Eval eval) { base.Channel.SubmitEval(eval); }