public void ExceptionTest()
{
AssertThrow<ArgumentNullException>(
() => new EmberType(null).Ignore(),
() => new EmberTypeBag(null).Ignore(),
() => new EmberConverter(null).Ignore());
AssertThrow<ArgumentException>(() => new EmberType().Ignore());
using (var stream = new MemoryStream())
using (var reader = new EmberReader(stream))
using (var writer = XmlWriter.Create(new StringBuilder()))
{
var converter = new EmberConverter();
AssertThrow<ArgumentNullException>(
() => converter.ToXml((byte[])null, writer),
() => converter.ToXml(new byte[0], null),
() => converter.ToXml((EmberReader)null, writer),
() => converter.ToXml(reader, null));
}
using (var stringReader = new StringReader(string.Empty))
using (var reader = XmlReader.Create(stringReader))
using (var stream = new MemoryStream())
using (var writer = new EmberWriter(stream))
{
var converter = new EmberConverter();
AssertThrow<ArgumentNullException>(
() => converter.FromXml(null),
() => converter.FromXml(null, writer),
() => converter.FromXml(reader, null));
}
AssertXmlException("<whatever type=\"A-11\"></whatever>", "Unknown field path: whatever.");
AssertXmlException(
"<A-0 type=\"Sequence\"><whatever type=\"Set\" /></A-0>", "Unknown field path: A-0.whatever.");
AssertXmlException("<A-0 type=\"C-11\"></A-0>", "Unknown type: C-11.");
AssertXmlException(
"<A-0 type=\"A-11\" whatever=\"\"></A-0>",
"Unexpected Attribute Count: Each element must have exactly one type attribute.");
AssertXmlException(
"<A-0 type=\"A-11\"><![CDATA[Whatever]]></A-0>",
"Unexpected Node Type: Encountered CDATA while looking for Element.");
AssertXmlException("<A-0 type=\"Boolean\" />", "Unexpected empty element for a field of type Boolean.");
}