예제 #1
0
        public void TableLookTranslationTests(string localName, string value, int newValue)
        {
            const int Padding = 4;
            const int Base    = 16;

            var valueIsTrue = value == "true" || value == "1";
            var element     = new TableLook();
            var xml         = $"<w:{element.LocalName} xmlns:w=\"{element.NamespaceUri}\" w:{localName}=\"{value}\" />";

            element.OuterXml = xml;

            Assert.True(element.HasAttributes);
            var attribute = Assert.Single(element.GetAttributes());
            var expected  = Convert.ToString(valueIsTrue ? newValue : 0, Base).PadLeft(Padding, '0');

            Assert.Equal("val", attribute.LocalName);
            Assert.Equal(expected, attribute.Value);

            // Validate bitwise actions on value
            for (int i = 0; i < 8; i++)
            {
                var offset = 1 << i;

                element.SetAttribute(new OpenXmlAttribute("w", "val", element.NamespaceUri, Convert.ToString(offset, Base)));

                using (var reader = XmlReader.Create(new StringReader(xml)))
                {
                    Assert.True(reader.Read());

                    using (var converting = new XmlConvertingReader(reader, true))
                    {
                        element.LoadAttributes(converting);
                    }
                }

                var attribute2 = Assert.Single(element.GetAttributes());

                int GetExpectedValue()
                {
                    if (valueIsTrue)
                    {
                        return(newValue | offset);
                    }

                    if (offset == newValue)
                    {
                        return(0);
                    }

                    return(offset);
                }

                var expectedValue = GetExpectedValue();
                var expected2     = Convert.ToString(expectedValue, Base).PadLeft(Padding, '0');

                Assert.Equal("val", attribute2.LocalName);
                Assert.Equal(expected2, attribute2.Value, StringComparer.OrdinalIgnoreCase);
            }
        }
 public void DelegatesCallClose(bool strictRelationshipFound)
 {
     using (var baseReader = Substitute.For <XmlReader>())
         using (var reader = new XmlConvertingReader(baseReader, strictRelationshipFound))
         {
             reader.Close();
             baseReader.Received(1).Close();
         }
 }
        public void NamespaceUriIsHandled(string baseNamespaceUri, string expectedNamespaceUri, bool strictRelationshipFound)
        {
            using (var baseReader = Substitute.For <XmlReader>())
                using (var reader = new XmlConvertingReader(baseReader, strictRelationshipFound))
                {
                    baseReader.NamespaceURI.Returns(baseNamespaceUri);

                    Assert.Equal(expectedNamespaceUri, reader.NamespaceURI);
                }
        }
        public void StrictTranslationAppliesToValue(string baseValue, string expectedValue, XmlNodeType nodeType, bool strictRelationshipFound)
        {
            using (var baseReader = Substitute.For <XmlReader>())
                using (var reader = new XmlConvertingReader(baseReader, strictRelationshipFound))
                {
                    baseReader.Value.Returns(baseValue);
                    baseReader.NodeType.Returns(nodeType);

                    Assert.Equal(expectedValue, reader.Value);
                }
        }
        public void DelegatesCallDispose(bool strictRelationshipFound)
        {
            using (var baseReader = Substitute.For <XmlReader>())
                using (var reader = new XmlConvertingReader(baseReader, strictRelationshipFound))
                {
                    ((IDisposable)reader).Dispose();
                    ((IDisposable)baseReader).Received(1).Dispose();

#if !FEATURE_XML_DISPOSE_PROTECTED
                    baseReader.ClearReceivedCalls();
                    reader.Dispose();
                    baseReader.Received(1).Dispose();
#endif
                }
        }