public void WriteStringTest()
        {
            using (var memStream = new MemoryStream())
            using (OpenXmlPartWriter target = new OpenXmlPartWriter(memStream))
            {
                string text = "abc";
                target.WriteStartDocument();
                target.WriteStartElement(new Run());

                target.WriteStartElement(new Text());
                target.WriteString(text);
                target.WriteEndElement();

                var textElement = new Text();
                textElement.Space = new EnumValue<SpaceProcessingModeValues>();
                textElement.Space.Value = SpaceProcessingModeValues.Preserve;
                target.WriteStartElement(new Text(), textElement.GetAttributes());
                target.WriteString(text);
                target.WriteString(text);
                target.WriteEndElement();

                var run = new Run(new Text("111"), new Text("222"));
                using (var reader = OpenXmlReader.Create(run))
                {
                    reader.Read();
                    reader.Read();
                    target.WriteStartElement(reader);
                    target.WriteString(reader.GetText());
                    reader.Read();
                    target.WriteEndElement();

                    reader.Read();
                    target.WriteStartElement(reader, textElement.GetAttributes());
                    target.WriteString(reader.GetText());
                    target.WriteString(text);
                    reader.Read();
                    target.WriteEndElement();

                    reader.Close();
                }
                target.Close();
            }
        }
        public void WriterWithNsTest()
        {
            using (var memStream = new MemoryStream())
            {
                using (OpenXmlPartWriter target = new OpenXmlPartWriter(memStream))
                {
                    target.WriteStartDocument();
                    target.WriteStartElement(new Document());

                    target.WriteStartElement(new Body(), new List<OpenXmlAttribute>() { new OpenXmlAttribute("a:a", "http://aa", "ab") });

                    target.WriteStartElement(new Paragraph(), null, null);
                    target.WriteEndElement();

                    List<KeyValuePair<string, string>> ns = new List<KeyValuePair<string, string>>();
                    KeyValuePair<string, string> item = new KeyValuePair<string, string>("b", "http://aaa");
                    ns.Add(item);
                    target.WriteStartElement(new Table(), null, ns);
                    target.WriteEndElement();

                    target.WriteEndElement();
                    
                    target.WriteEndElement();
                    target.Close();
                }
                memStream.Flush();
                memStream.Seek(0, SeekOrigin.Begin);

                using (var reader = new OpenXmlPartReader(memStream))
                {
                    //<w:document>
                    reader.Read();
                    Assert.Equal(1, reader.NamespaceDeclarations.Count());

                    //<w:body>
                    reader.Read();
                    Assert.Equal(1, reader.NamespaceDeclarations.Count());

                    //<w:p>
                    reader.ReadFirstChild();
                    Assert.True(reader.ElementType.Name.EndsWith("Paragraph"));
                    Assert.Equal(0, reader.NamespaceDeclarations.Count());

                    //<w:p>
                    reader.ReadNextSibling();
                    Assert.True(reader.ElementType.Name.EndsWith("Table"));
                    Assert.Equal(1, reader.NamespaceDeclarations.Count());


                }
            }
        }
        public void WriteStringExceptionTest5()
        {
            using (var memStream = new MemoryStream())
            using (OpenXmlPartWriter target = new OpenXmlPartWriter(memStream))
            {
                string text = "abc";
                target.WriteStartDocument();
                target.WriteStartElement(new Run());

                var run = new Run(new RunProperties(), new Text("222"));
                using (var reader = OpenXmlReader.Create(run))
                {
                    reader.Read();
                    reader.Read();
                    target.WriteStartElement(reader);
                    Assert.Throws<System.InvalidOperationException>(() =>
                        {
                            target.WriteString(text); // exception
                        });
                    reader.Read();
                    target.WriteEndElement();
                }
            }
        }
        public void WriteStringExceptionTest6()
        {
            using (var memStream = new MemoryStream())
            using (OpenXmlPartWriter target = new OpenXmlPartWriter(memStream))
            {
                string text = "abc";
                target.WriteStartDocument();
                target.WriteStartElement(new Run());

                var textElement = new Text();
                textElement.Space = SpaceProcessingModeValues.Preserve;
                target.WriteStartElement(new RunProperties(), textElement.GetAttributes());
                target.WriteEndElement();
                target.Close();
                Assert.Throws<System.InvalidOperationException>(() =>
                {
                    target.WriteString(text); // exception
                });
            }
        }
        public void WriteStringExceptionTest()
        {
            using (var memStream = new MemoryStream())
            using (OpenXmlPartWriter target = new OpenXmlPartWriter(memStream))
            {
                string text = "abc";
                target.WriteStartDocument();
                target.WriteStartElement(new Run());

                target.WriteStartElement(new RunProperties());
                Assert.Throws<System.InvalidOperationException>(() =>
                    {
                        target.WriteString(text); // exception
                    });
            }
        }