コード例 #1
0
        public void RuleDefinitionParserCreatesWhenRuleThen()
        {
            var s  = "RULE-WHEN WhenRuleName AProperty EQ { AVALUE } THEN BProperty EQ { BVALUE }";
            var id = new ImportDefinition();

            // Act
            RuleDefinitionParser.Parse(s, id);

            // Act
            Assert.AreEqual(1, id.Rules.Count);
            var r = (WhenRuleThen)id.Rules[0];

            Assert.AreEqual("WhenRuleName", r.RuleName);
            Assert.AreEqual(1, r.WhenComparisons.Count);
            var wc = r.WhenComparisons[0];

            Assert.AreEqual("AProperty", wc.PropertyName);
            Assert.AreEqual(Enums.ComparisonOperators.EQ, wc.ComparisonOperator);
            Assert.AreEqual(1, wc.ValidValues.Count);
            Assert.AreEqual("AVALUE", wc.ValidValues[0]);
            Assert.AreEqual(1, r.ThenComparisons.Count);
            var tc = r.ThenComparisons[0];

            Assert.AreEqual("BProperty", tc.PropertyName);
            Assert.AreEqual(Enums.ComparisonOperators.EQ, tc.ComparisonOperator);
            Assert.AreEqual(1, tc.ValidValues.Count);
            Assert.AreEqual("BVALUE", tc.ValidValues[0]);
        }
コード例 #2
0
        public void RuleDefinitionParserThrowsExceptionWhenRuleTokenIsInvalid()
        {
            // Arrange
            var id = new ImportDefinition();
            var s  = "RULE-NOTATYPE RuleName Property EQ {A value}";
            var expectedException = "The RULE token RULE-NOTATYPE is not a valid rule type.";

            // Act
            try
            {
                RuleDefinitionParser.Parse(s, id);
                Assert.Fail("ArgumentException expected, not thrown.");
            }
            catch (ArgumentException ex)
            {
                Assert.AreEqual(expectedException, ex.Message);
            }
        }
コード例 #3
0
 public void RuleDefinitionParserThrowsExceptionWhenImportDefinitionIsNull()
 {
     try
     {
         RuleDefinitionParser.Parse("RULE-IS Property EQ {A Value}", null);
         Assert.Fail("ArgumentNullException expected, not thrown.");
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("ID", ex.ParamName);
     }
     catch (Exception ex)
     {
         Assert.Fail("ArgumentNullException expected, " +
                     ex.GetType().Name +
                     " thrown instead.");
     }
 }
コード例 #4
0
 private void RuleDefinitionParserThrowsExceptionWhenLineIsNullEquivalent(string Line)
 {
     try
     {
         RuleDefinitionParser.Parse(Line, new ImportDefinition());
         Assert.Fail("ArgumentNullException expected, not thrown.");
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("Line", ex.ParamName);
     }
     catch (Exception ex)
     {
         Assert.Fail("ArgumentNullException expected, " +
                     ex.GetType().Name +
                     " thrown instead.");
     }
 }
コード例 #5
0
        public void RuleDefinitionParserCreatesValueRule()
        {
            // Arrange
            var s  = "RULE-IS RuleName Property EQ {Value}";
            var id = new ImportDefinition();

            // Act
            RuleDefinitionParser.Parse(s, id);

            // Assert
            Assert.AreEqual(1, id.Rules.Count);
            var r = (ValueRule)id.Rules[0];

            Assert.AreEqual("RuleName", r.RuleName);
            Assert.AreEqual("Property", r.Comparison.PropertyName);
            Assert.AreEqual(Enums.ComparisonOperators.EQ, r.Comparison.ComparisonOperator);
            Assert.AreEqual(1, r.Comparison.ValidValues.Count);
            Assert.AreEqual("Value", r.Comparison.ValidValues[0]);
        }
コード例 #6
0
 private static void ParseLine(string line, ImportDefinition id)
 {
     if (line.StartsWith("#"))
     {
         // This is a comment
         return;
     }
     if (line.StartsWith("COLUMN"))
     {
         ColumnDefinitionParser.Parse(line, id);
         return;
     }
     if (line.StartsWith("FILETYPE"))
     {
         FileTypeParser.Parse(line, id);
         return;
     }
     else if (line.StartsWith("HEADERROW"))
     {
         HeaderRowParser.Parse(line, id);
         return;
     }
     else if (line.StartsWith("TABLE"))
     {
         TableDefinitionParser.Parse(line, id);
         return;
     }
     else if (line.StartsWith("RULE"))
     {
         RuleDefinitionParser.Parse(line, id);
         return;
     }
     else if (line.StartsWith("DESTINATION"))
     {
         DestinationParser.Parse(line, id);
         return;
     }
     else
     {
         throw new ArgumentException("Invalid token at beginning of line: " + line);
     }
 }
コード例 #7
0
        public void RuleDefinitionCreatesRuleRequiredWhen()
        {
            // Arrange
            var s  = "RULE-REQUIRED-WHEN RuleName AProperty EQ {AVALUE} THEN {BProperty}";
            var id = new ImportDefinition();

            // Act
            RuleDefinitionParser.Parse(s, id);

            // Assert
            Assert.AreEqual(1, id.Rules.Count);
            var r = (WhenRequiredRule)id.Rules[0];

            Assert.AreEqual(1, r.WhenComparisons.Count);
            var wc = r.WhenComparisons[0];

            Assert.AreEqual("AProperty", wc.PropertyName);
            Assert.AreEqual(Enums.ComparisonOperators.EQ, wc.ComparisonOperator);
            Assert.AreEqual(1, wc.ValidValues.Count);
            Assert.AreEqual("AVALUE", wc.ValidValues[0]);
            Assert.AreEqual(1, r.RequiredProperties.Count);
            Assert.AreEqual("BProperty", r.RequiredProperties[0]);
        }