public void InvalidAttributeTests() { bool isremote = false; try { ParserClassDefinition defn = ParserDefintionFactory.GetClassDefinition("Invalid-Inherits", NamespaceAssembly, true, out isremote); Assert.IsNotNull(defn); throw new InvalidOperationException("No Exception raised for the 'inherits' attribute"); } catch (PDFParserException) { //Successfully caught the parser exception for invalid attribute name } try { ParserClassDefinition defn = ParserDefintionFactory.GetClassDefinition("Invalid-Code", NamespaceAssembly, true, out isremote); Assert.IsNotNull(defn); throw new InvalidOperationException("No Exception raised for the 'inherits' attribute"); } catch (PDFParserException) { //Successfully caught the parser exception for invalid attribute name } }
/// <summary> /// Validates the attributes on the Fakes.ParserInnerComplex type /// </summary> /// <param name="defn"></param> private void ValidateInnerDefn(ParserClassDefinition defn) { Assert.AreEqual(5, defn.Attributes.Count); Assert.AreEqual(0, defn.Elements.Count); Assert.IsNull(defn.DefaultElement); Assert.IsTrue(defn.IsMaxFrameworkSupported); //not defined Assert.IsTrue(defn.IsMinFrameworkSupported); //not defined ParserAttributeDefinition attr; ParserPropertyDefinition prop; Assert.IsTrue(defn.Attributes.TryGetPropertyDefinition("index", string.Empty, out prop)); //defined on base class Assert.AreEqual("Index", prop.PropertyInfo.Name); attr = prop as ParserAttributeDefinition; Assert.IsNotNull(attr); Assert.IsFalse(defn.Attributes.TryGetPropertyDefinition("another-name", string.Empty, out prop)); Assert.IsFalse(defn.Attributes.TryGetPropertyDefinition("AnotherIndex", string.Empty, out prop)); //Does not exist Assert.IsFalse(defn.Attributes.TryGetPropertyDefinition("inherits", string.Empty, out prop)); //defined but overridden Assert.IsTrue(defn.Attributes.TryGetPropertyDefinition("concrete", NamespaceAssembly, out prop)); //the override Assert.IsTrue(defn.Attributes.TryGetPropertyDefinition("size", null, out prop)); Assert.IsTrue(defn.Attributes.TryGetPropertyDefinition("ro-size", null, out prop)); Assert.IsTrue(defn.Attributes.TryGetPropertyDefinition("date", null, out prop)); //TODO: Events }
public void GetClassDefinitionTest() { ParserClassDefinition defn = ParserDefintionFactory.GetClassDefinition(typeof(Fakes.ParserRootOne)); Assert.IsNotNull(defn); this.ValidateRootOneDefn(defn); defn = ParserDefintionFactory.GetClassDefinition(typeof(Fakes.ParserInnerComplex)); this.ValidateInnerDefn(defn); }
/// <summary> /// Validates that the expected class definition matches the loaded definition for the Fakes.ParserRootOne class /// </summary> /// <param name="defn"></param> private void ValidateRootOneDefn(ParserClassDefinition defn) { Assert.AreEqual(defn.ClassType, typeof(Fakes.ParserRootOne)); //Check the required versions Assert.AreEqual(new Version(0, 8, 0, 0), defn.MinRequiredFramework); Assert.IsTrue(defn.IsMinFrameworkSupported); //name attribute Assert.AreEqual(1, defn.Attributes.Count); ParserAttributeDefinition name = defn.Attributes[0] as ParserAttributeDefinition; Assert.IsNotNull(name, "No item was returned by index or it is not an Attribute definition"); Assert.AreEqual("name", name.Name, "Name of the attribute definition and the name in the colection do not match"); Assert.IsNotNull(name.Converter, "No converter for the string attribute 'name'"); Assert.IsFalse(name.IsCodeDomGenerator); Assert.AreEqual(2, defn.Elements.Count); //First element - complex ParserComplexElementDefiniton complex = defn.Elements["Complex-Element"] as ParserComplexElementDefiniton; Assert.IsNotNull(complex); Assert.AreEqual("Complex-Element", complex.Name); Assert.AreEqual(String.Empty, complex.NameSpace); Assert.AreEqual(DeclaredParseType.ComplexElement, complex.ParseType); Assert.IsNotNull(complex.PropertyInfo); Assert.AreEqual("Complex", complex.PropertyInfo.Name); Assert.AreEqual(typeof(Fakes.ParserInnerComplex), complex.ValueType); //Second element - collection of ParserInnerComplex with explicit namespace ParserArrayDefinition collection = defn.Elements["Collection-One", NamespaceAssembly] as ParserArrayDefinition; Assert.IsNotNull(collection); Assert.AreEqual("Collection-One", collection.Name); Assert.IsFalse(collection.IsCustomParsable); //Assert.AreEqual(NamespaceAssembly, collection.NameSpace); Assert.AreEqual(DeclaredParseType.ArrayElement, collection.ParseType); Assert.AreEqual("CollectionOne", collection.PropertyInfo.Name); Assert.AreEqual(typeof(Fakes.ParserCollection), collection.ValueType); Assert.AreEqual(typeof(Fakes.ParserInnerComplex), collection.ContentType); //Third element - default collection of ParserInnerBase collection = defn.DefaultElement as ParserArrayDefinition; Assert.IsNotNull(collection); Assert.AreEqual("", collection.Name); Assert.IsFalse(collection.IsCustomParsable); Assert.AreEqual(string.Empty, collection.NameSpace); Assert.AreEqual(DeclaredParseType.ArrayElement, collection.ParseType); Assert.AreEqual("DefaultCollection", collection.PropertyInfo.Name); Assert.AreEqual(typeof(Fakes.ParserCollection), collection.ValueType); Assert.AreEqual(typeof(Fakes.ParserInnerBase), collection.ContentType); }
public void GetClassDefinitionTest1() { bool isremote = false; ParserClassDefinition defn = ParserDefintionFactory.GetClassDefinition("Root1", NamespaceAssembly, true, out isremote); Assert.IsNotNull(defn); ValidateRootOneDefn(defn); defn = ParserDefintionFactory.GetClassDefinition("Inner", NamespaceAssembly, true, out isremote); Assert.IsNotNull(defn); ValidateInnerDefn(defn); defn = ParserDefintionFactory.GetClassDefinition("Inner-Ref", NamespaceAssembly, true, out isremote); Assert.IsNotNull(defn); Assert.IsTrue(isremote); ValidateInnerDefn(defn); }