internal void EncodeNormalValue(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(50, standard); writer.WriteElement("Test", "Value"); Assert.Equal("<Test>Value</Test>", writer.ToString()); }
internal void EncodeSyntaxCharacters(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(50, standard); writer.WriteElement("Test", "<&>"); Assert.Equal("<Test><&></Test>", writer.ToString()); }
internal void EncodeNormalValue(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(50, standard); writer.WriteElement("Test", "Value"); Assert.Equal("<Test>Value</Test>", Encoding.UTF8.GetString(writer.GetBytes())); }
internal void EncodeSurrogatePair(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(50, standard); writer.WriteElement("Test", "💩"); string actual = writer.ToString(); Assert.Equal("<Test>💩</Test>", actual); }
/// <summary>Create a new <see cref="FastXmlWriter" /> with the specified capacity.</summary> /// <param name="capacity">The capacity of the XML writer. Note that it does not expand any further.</param> /// <param name="xmlStandard">The XML standard to use</param> /// <param name="invalidChars">What should the writer do when it encounters an invalid character</param> /// <param name="discouragedChars">What should the writer do when it encounters a discouraged character</param> public FastXmlWriter(int capacity, XmlStandard xmlStandard = XmlStandard.Xml10, XmlCharMode invalidChars = XmlCharMode.ThrowException, XmlCharMode discouragedChars = XmlCharMode.ThrowException) { if (invalidChars == XmlCharMode.EntityEncode) { throw new ArgumentException("EntityEncode mode is not supported for invalid XML characters"); } _xmlStandard = xmlStandard; _invalidCharMode = invalidChars; _discouragedCharMode = discouragedChars; _xml = new StringBuilder(capacity); }
internal void XDocumentCompatibility(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(ushort.MaxValue + 200, standard, XmlCharMode.Omit, XmlCharMode.Omit); StringBuilder sb = new StringBuilder(ushort.MaxValue); for (int i = 0; i < ushort.MaxValue; i++) { sb.Append((char)i); } writer.WriteElement("test", sb.ToString()); XDocument _ = XDocument.Parse(writer.ToString()); }
internal void XmlDocumentCompatibility(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(ushort.MaxValue + 200, standard, XmlCharMode.Omit, XmlCharMode.Omit); StringBuilder sb = new StringBuilder(ushort.MaxValue); for (int i = 0; i < ushort.MaxValue; i++) { sb.Append((char)i); } writer.WriteElement("test", sb.ToString()); XmlDocument xmlDoc = new XmlDocument(); using MemoryStream ms = new MemoryStream(writer.GetBytes()); xmlDoc.Load(ms); }
internal void EncodeDiscouragedValue(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(50, standard); Assert.Throws <XmlException>(() => writer.WriteElement("Test", "Value" + '\u007F')); // \u007F is discouraged in both standards }
internal void EncodeNullValue(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(50, standard); Assert.Throws <XmlException>(() => writer.WriteElement("Test", "Value\0Value")); }
internal void EncodeInvalidSurrogateValue(XmlStandard standard) { FastXmlWriter writer = new FastXmlWriter(50, standard); Assert.Throws <XmlException>(() => writer.WriteElement("Test", "Value" + '\uD800')); //standalone high surrogate }