public void TestParseInvalidSingleMultiplicityNotAtomic()
        {
            const string attIdentifier = "link";

            var e = Assert.Catch(() => {
                LinkAttributeParser.ParseMultiplicity(attIdentifier, (ParsedElement) new NParsedAttributeColon());
            });

            Assert.IsInstanceOf(typeof(InvalidParameterAttributeException), e);
            StringAssert.AreEqualIgnoringCase(
                string.Format(InvalidParameterAttributeException.ATOMIC_ONLY, attIdentifier),
                e.Message
                );
        }
        public void TestParseInvalidSingleMultiplicityName()
        {
            const string attIdentifier = "link";

            var e = Assert.Catch(() => {
                LinkAttributeParser.ParseMultiplicity(attIdentifier, new NParsedAttributeAtomic(new NameExpression("test")));
            });

            Assert.IsInstanceOf(typeof(InvalidParameterAttributeException), e);
            StringAssert.AreEqualIgnoringCase(
                string.Format(InvalidParameterAttributeException.INVALID_VALUE, attIdentifier),
                e.Message
                );
        }
        public void TestNotAtomicValue(NParsedAttributeValue v)
        {
            var          ap            = new LinkAttributeParser();
            const string attIdentifier = "link";

            var e = Assert.Catch(() => {
                ap.ParsedAttribute(attIdentifier,
                                   null,
                                   v);
            });

            Assert.IsInstanceOf(typeof(InvalidAttributeValueException), e);
            StringAssert.AreEqualIgnoringCase(
                string.Format(InvalidAttributeValueException.ATOMIC_ONLY, attIdentifier),
                e.Message
                );
        }
        public void TestInvalidAtomicValue()
        {
            var          ap            = new LinkAttributeParser();
            const string attIdentifier = "link";

            var e = Assert.Catch(() => {
                ap.ParsedAttribute(attIdentifier,
                                   null,
                                   new NParsedAttributeAtomic(new NameExpression("")));
            });

            Assert.IsInstanceOf(typeof(InvalidAttributeValueException), e);
            StringAssert.AreEqualIgnoringCase(
                string.Format(InvalidAttributeValueException.IDENTIFIER, attIdentifier),
                e.Message
                );
        }
        public void TestParseInvalidParameters()
        {
            var          ap            = new LinkAttributeParser();
            const string attIdentifier = "link";

            var e = Assert.Catch(() => {
                ap.ParsedAttribute(attIdentifier,
                                   new NParsedAttributeColon(),
                                   new NParsedAttributeAtomic(new IdentifierExpression("test")));
            });

            Assert.IsInstanceOf(typeof(InvalidParameterAttributeException), e);
            StringAssert.AreEqualIgnoringCase(
                string.Format(InvalidParameterAttributeException.ATOMIC_OR_LIST, attIdentifier),
                e.Message
                );
        }
        public void TestParseInvalidNumberOfParameters()
        {
            var          ap            = new LinkAttributeParser();
            const string attIdentifier = "link";

            var e = Assert.Catch(() => {
                ap.ParsedAttribute(attIdentifier,
                                   new NParsedAttributeList(new [] {
                    new IdentifierExpression("M"),
                    new IdentifierExpression("M"),
                    new IdentifierExpression("M")
                }),
                                   new NParsedAttributeAtomic(new IdentifierExpression("test")));
            });

            Assert.IsInstanceOf(typeof(InvalidParameterAttributeException), e);
            StringAssert.AreEqualIgnoringCase(
                string.Format(InvalidParameterAttributeException.INVALID_VALUE, attIdentifier),
                e.Message
                );
        }