public void Interpret_GivenValidRuleDefinition_ReturnsCorrectResult()
        {
            var lexer = new DefaultLexer();

            const string queryText = "ensure holding.Nav is within 10 of fund.Nav";

            var tokens = lexer.Lex(queryText).ToList();

            var parser = new DefaultParser();

            var ruleDefinition = parser.Parse(tokens);

            var sut = new DefaultInterpreter();

            var ruleFunc = sut.Interpret <Holding, Fund>(ruleDefinition);

            var holding = new Holding
            {
                Nav = 5
            };

            var fund = new Fund
            {
                Nav = 6
            };

            var actual = ruleFunc(holding, fund);

            Assert.That(actual, Is.True);
        }
Esempio n. 2
0
        public void Parse_GivenValidTokens_ReturnsCorrectResult()
        {
            var lexer = new DefaultLexer();

            const string queryText = "ensure holding.Nav is within 10 of fund.Nav";

            var tokens = lexer.Lex(queryText).ToList();

            var sut = new DefaultParser();

            var expected = new RuleDefinition
            {
                Id             = null,
                RuleConditions = new List <RuleCondition>
                {
                    new RuleCondition
                    {
                        ComparisonType      = RuleObject.ObjectProperty,
                        ComparisonAttribute = "Nav",
                        ComparisonTypeName  = "fund",
                        LogicalOperator     = RuleLogicalOperator.None,
                        Operator            = RuleComparatorOperator.Within,
                        Value = "10"
                    }
                },
                TargetAttribute = "Nav",
                TargetType      = RuleObject.ObjectProperty,
                TargetTypeName  = "holding"
            };

            var actual = sut.Parse(tokens);

            Assert.That(actual, Is.EqualTo(expected));
        }
Esempio n. 3
0
        public void Parse_GivenTargetObjectPropertyOfMethod_ReturnsCorrectResult()
        {
            var lexer = new DefaultLexer();

            const string queryText = "ensure target.SomeMethod() is within 10 of comparison.SomeProperty";

            var tokens = lexer.Lex(queryText).ToList();

            var sut = new DefaultParser();

            var expected = new RuleDefinition
            {
                Id             = null,
                RuleConditions = new List <RuleCondition>
                {
                    new RuleCondition
                    {
                        ComparisonType      = RuleObject.ObjectProperty,
                        ComparisonAttribute = "SomeProperty",
                        ComparisonTypeName  = "comparison",
                        LogicalOperator     = RuleLogicalOperator.None,
                        Operator            = RuleComparatorOperator.Within,
                        Value = "10"
                    }
                },
                TargetAttribute = "SomeMethod",
                TargetType      = RuleObject.ObjectMethod,
                TargetTypeName  = "target"
            };

            var actual = sut.Parse(tokens);

            Assert.That(actual, Is.EqualTo(expected));
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            // create Options object
            Options options = new Options();

            // add t option
            options.AddOption("t", false, "display current time");
            options.AddOption("h", false, "Display help options");
            CommandLineParser parser = new DefaultParser();
            CommandLine       cmd    = parser.Parse(options, args);

            options.AddOption("h", "help", false, "Print this usage information");
            options.AddOption("v", "verbose", false, "Print out VERBOSE information");

            OptionGroup optionGroup = new OptionGroup();

            optionGroup.AddOption(new OptionBuilder("f").HasArg(true).ArgName("filename").Build());
            optionGroup.AddOption(new OptionBuilder("m").HasArg(true).ArgName("email").Build());
            options.AddOptionGroup(optionGroup);

            if (cmd.HasOption("h"))
            {
                HelpFormatter formatter = new HelpFormatter();
                formatter.printHelp("x", options, true);
                return;
            }
            if (cmd.HasOption("t"))
            {
                Console.WriteLine(System.DateTime.Now);
            }
        }
Esempio n. 5
0
        protected string Run(string input)
        {
            ExpTree      tree;
            ParserStatus result = DefaultParser.Parse(input, out tree);

            Assert.IsFalse(result.Failed);
            return(tree.Root.Execute(_simplifier).Print(_printer));
        }
        public void TestSimpleValidQuote()
        {
            var p    = new DefaultParser();
            var args = p.Parse("\"123\"");

            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);
        }
        public void TestMultipleInvalidQuotes()
        {
            var p    = new DefaultParser();
            var args = p.Parse("\"123\" \"456");

            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);
        }
        public void TestSimpleArgument()
        {
            var p    = new DefaultParser();
            var args = p.Parse("123");

            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);
        }
        public void TestWhitespaces()
        {
            var p    = new DefaultParser();
            var args = p.Parse("   123");

            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);

            args = p.Parse("    123");
            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);

            args = p.Parse("123     ");
            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);

            args = p.Parse("123 ");
            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);

            args = p.Parse("    123 ");
            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);

            args = p.Parse("\n123   ");
            Assert.AreEqual(1, args.Length);
            Assert.AreEqual("123", args[0]);

            args = p.Parse("    123     456  789");
            Assert.AreEqual(3, args.Length);
            Assert.AreEqual("123", args[0]);
            Assert.AreEqual("456", args[1]);
            Assert.AreEqual("789", args[2]);
        }
        public void TestMultipleSimpleArguments()
        {
            var p    = new DefaultParser();
            var args = p.Parse("123 456 789");

            Assert.AreEqual(3, args.Length);
            Assert.AreEqual("123", args[0]);
            Assert.AreEqual("456", args[1]);
            Assert.AreEqual("789", args[2]);
        }
Esempio n. 11
0
 public static AbacAuthorizationPolicy CreateFromGrammar(string policy, WellKnownGrammars grammar = WellKnownGrammars.Bal)
 {
     try
     {
         return(DefaultParser.Parse(policy, grammar));
     }
     catch (Exception exception)
     {
         throw new InvalidOperationException($"Policy can't be parsed using the  grammar {Enum.GetName(typeof(WellKnownGrammars), grammar)} and policy is not created succcesfully.", exception);
     }
 }
Esempio n. 12
0
        public void ThrowOnBadInput()
        {
            var targetType = typeof(float);
            var parser     = new DefaultParser(targetType);
            var input      = "abc";

            var ex = Assert.Throws <ParsingException>(() => parser.Parse(input));

            Assert.That(ex.Input, Is.EqualTo(input));
            Assert.That(ex.TargetType, Is.EqualTo(targetType));
        }
        public void TestSimpleArgumentUsingQuoteChar()
        {
            var p = new DefaultParser();

            p.QuoteChar = '`';
            var args = p.Parse("`123 456` 789 `123456`");

            Assert.AreEqual(3, args.Length);
            Assert.AreEqual("123 456", args[0]);
            Assert.AreEqual("789", args[1]);
            Assert.AreEqual("123456", args[2]);
        }
Esempio n. 14
0
        public static void Main(string[] args)
        {
            try
            {
                System.Console.Out.WriteLine("khubla.com Paradox DB reader");

                /*
                 * options
                 */
                Options options = new Options();
                Option  oo      = Option.Builder().ArgName(FileOption).LongOpt(FileOption).Type(Sharpen.Runtime.GetClassForType
                                                                                                    (typeof(string))).HasArg().Required(true).Desc("file to read").Build();
                options.AddOption(oo);

                /*
                 * parse
                 */
                CommandLineParser parser = new DefaultParser();
                CommandLine       cmd    = null;
                try
                {
                    cmd = parser.Parse(options, args);
                }
                catch (Exception e)
                {
                    Sharpen.Runtime.PrintStackTrace(e);
                    HelpFormatter formatter = new HelpFormatter();
                    formatter.PrintHelp("posix", options);
                    System.Environment.Exit(0);
                }

                /*
                 * get file
                 */
                string filename = cmd.GetOptionValue(FileOption);
                if (null != filename)
                {
                    File inputFile = new File(filename);
                    if (inputFile.Exists())
                    {
                        DBTableFile       pdxFile           = new DBTableFile();
                        PDXReaderListener pdxReaderListener = new PDXReaderCSVListenerImpl();
                        pdxFile.Read(inputFile, pdxReaderListener);
                        System.Console.Out.WriteLine("done");
                    }
                }
            }
            catch (Exception e)
            {
                Sharpen.Runtime.PrintStackTrace(e);
            }
        }
Esempio n. 15
0
        private static void DefaultParserDemo()
        {
            var p = new DefaultParser();

            PrintRes(p.Parse("   123"));
            PrintRes(p.Parse("123"));
            PrintRes(p.Parse("123 456"));
            PrintRes(p.Parse("\"123\""));
            PrintRes(p.Parse("\"123\" \"456\""));
            PrintRes(p.Parse("\"123\" \"456\" \"789"));
        }
Esempio n. 16
0
 /// <summary>
 /// Convert YAML text <paramref name="yaml"/> to a list of <see cref="YamlNode"/>.
 /// </summary>
 /// <param name="yaml">YAML text</param>
 /// <returns>YAML nodes</returns>
 /// <param name="config"><see cref="YamlConfig">YAML configuration</see> to customize serialization.</param>
 public static YamlNode[] FromYaml(string yaml, YamlConfig config)
 {
     return(DefaultParser.Parse(yaml, config).ToArray());
 }
Esempio n. 17
0
        public void ParseNegativeDecimal()
        {
            var parser = new DefaultParser(typeof(decimal));

            Assert.AreEqual(parser.Parse("-1.2"), -1.2m);
        }
Esempio n. 18
0
 /// <summary>
 /// Convert YAML text <paramref name="yaml"/> to a list of <see cref="YamlNode"/>.
 /// </summary>
 /// <param name="yaml">YAML text</param>
 /// <returns>YAML nodes</returns>
 public static YamlNode[] FromYaml(string yaml)
 {
     return(DefaultParser.Parse(yaml).ToArray());
 }
Esempio n. 19
0
        public void ParseString()
        {
            var parser = new DefaultParser(typeof(string));

            Assert.AreEqual(parser.Parse("teststring"), "teststring");
        }
Esempio n. 20
0
        public void ParseNegativeFloat()
        {
            var parser = new DefaultParser(typeof(float));

            Assert.AreEqual(parser.Parse("-3.5"), -3.5F);
        }
Esempio n. 21
0
        public void Parse_should_yield_results()
        {
            DISetup.SetupContainer();
            var sb = new StringBuilder();

            sb.AppendLine(@"@test = 1");
            sb.AppendLine(@"");
            sb.AppendLine(@"asl_mode_options_1 = {");
            sb.AppendLine(@"	potential = {");
            sb.AppendLine(@"		NOT = {");
            sb.AppendLine(@"			has_country_flag = asl_modify_3");
            sb.AppendLine(@"			has_country_flag = asl_modify_5");
            sb.AppendLine(@"		}");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"	allow = {");
            sb.AppendLine(@"		always = yes");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"	effect = {");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"}");
            sb.AppendLine(@"");
            sb.AppendLine(@"asl_mode_options_3 = {");
            sb.AppendLine(@"	potential = {");
            sb.AppendLine(@"		has_country_flag = asl_modify_3");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"	allow = {");
            sb.AppendLine(@"		always = yes");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"	effect = {");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"}");
            sb.AppendLine(@"");
            sb.AppendLine(@"asl_mode_options_5 = {");
            sb.AppendLine(@"	potential = {");
            sb.AppendLine(@"		has_country_flag = asl_modify_5");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"	allow = {");
            sb.AppendLine(@"		always = yes");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"	effect = {");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"}");
            sb.AppendLine(@"");
            sb.AppendLine(@"### END TEMPLATE:effects ###");

            var sb2 = new StringBuilder();

            sb2.AppendLine(@"asl_mode_options_1 = {");
            sb2.AppendLine(@"	potential = {");
            sb2.AppendLine(@"		NOT = {");
            sb2.AppendLine(@"			has_country_flag = asl_modify_3");
            sb2.AppendLine(@"			has_country_flag = asl_modify_5");
            sb2.AppendLine(@"		}");
            sb2.AppendLine(@"	}");
            sb2.AppendLine(@"	allow = {");
            sb2.AppendLine(@"		always = yes");
            sb2.AppendLine(@"	}");
            sb2.AppendLine(@"	effect = {");
            sb2.AppendLine(@"	}");
            sb2.AppendLine(@"}");

            var args = new ParserArgs()
            {
                ContentSHA      = "sha",
                ModDependencies = new List <string> {
                    "1"
                },
                File    = "common\\fake\\fake.txt",
                Lines   = sb.ToString().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries),
                ModName = "fake"
            };
            var parser = new DefaultParser(new CodeParser(new Logger()), null);
            var result = parser.Parse(args).ToList();

            result.Should().NotBeNullOrEmpty();
            result.Count().Should().Be(4);
            for (int i = 0; i < 4; i++)
            {
                result[i].ContentSHA.Should().Be("sha");
                result[i].Dependencies.First().Should().Be("1");
                result[i].File.Should().Be("common\\fake\\fake.txt");
                switch (i)
                {
                case 0:
                    result[i].Code.Trim().Should().Be("@test = 1");
                    result[i].Id.Should().Be("@test");
                    result[i].ValueType.Should().Be(ValueType.Variable);
                    break;

                case 1:
                    result[i].Id.Should().Be("asl_mode_options_1");
                    result[i].Code.Should().Be(sb2.ToString().Trim().ReplaceTabs());
                    result[i].ValueType.Should().Be(ValueType.Object);
                    break;

                case 2:
                    result[i].Id.Should().Be("asl_mode_options_3");
                    result[i].ValueType.Should().Be(ValueType.Object);
                    break;

                case 3:
                    result[i].Id.Should().Be("asl_mode_options_5");
                    result[i].ValueType.Should().Be(ValueType.Object);
                    break;

                default:
                    break;
                }
                result[i].ModName.Should().Be("fake");
                result[i].Type.Should().Be("common\\fake\\txt");
            }
        }
Esempio n. 22
0
        public void OpenPath1()
        {
            //il : del percorso è in conflitto con la sintassi dei nomi dei parametri

            string args = @"--open C:\";
            var    res  = _textParser.Parse(args);

            Assert.IsTrue((res.First().Param as SimpleParam).Value == @"C:\");
        }
Esempio n. 23
0
        public void ParseNegativeInt()
        {
            var parser = new DefaultParser(typeof(int));

            Assert.AreEqual(parser.Parse("-10"), -10);
        }