예제 #1
0
        public void WriteTo_PassMatchingValue_ValueElementIsWrittenToParamElement()
        {
            var integerValue = new IntegerValue(2345);
            var xmlElement   = new XElement("param");

            var writerAction  = new Action <XElement, XmlRpcValue>((xml, xmlRpcValue) => xml.Add(new XElement("value", xmlRpcValue.Data.ToString())));
            var integerWriter = A.Fake <IValueWriter>();

            A.CallTo(() => integerWriter.WriteTo(A <XElement> .Ignored, integerValue)).Invokes(writerAction);

            var writers = A.Fake <IValueWriters>();

            A.CallTo(() => writers.GetWriter(typeof(IntegerValue)))
            .Returns(integerWriter);

            var writer = new StructValueWriter(writers);

            var value = new StructValue(new Dictionary <string, XmlRpcValue> {
                { "TestProp", integerValue }
            });

            writer.WriteTo(xmlElement, value);

            var memberElements = xmlElement.XPathSelectElements("value/struct/member").ToArray();

            Assert.Single(memberElements);
            var memberElement = memberElements.First();
            var subElements   = memberElement.Elements().ToArray();

            Assert.Equal(2, subElements.Length);
            var nameElement = subElements.First();

            Assert.Equal("TestProp", nameElement.Value);
            Assert.Equal(integerValue.Value.ToString(), subElements.Last().Value);
        }
예제 #2
0
        public void HandlesType_NotMatchingType_ReturnsFalse()
        {
            var writers = A.Fake <IValueWriters>();
            var writer  = new StructValueWriter(writers);

            Assert.False(writer.HandlesType(typeof(StringValue)));
        }