Exemplo n.º 1
0
        public void TestJsonNotExistsExpression()
        {
            var jsonExpressionString = @"
{
    ""key"": ""environment"",
    ""operator"":""NotExists""
}";
            var expressions          = JsonExpressionParser.Parse(jsonExpressionString);

            var labels = new Dictionary <string, string>
            {
                ["environment"] = LabelSelectorTester_Test.GenerateRandomString(),
            };

            var result = LabelSelectorTester.Test(labels, expressions);

            Assert.IsFalse(result);

            labels = new Dictionary <string, string>
            {
            };

            result = LabelSelectorTester.Test(labels, expressions);
            Assert.IsTrue(result);
        }
Exemplo n.º 2
0
        public void TestJsonNotInExpression()
        {
            const int n = 10;

            var randomValues = new List <string>();

            for (var i = 0; i < n; i += 1)
            {
                var randomString = LabelSelectorTester_Test.GenerateRandomString();
                randomValues.Add(randomString);
            }

            var jsonExpressionString = @"
{
    ""key"": ""environment"",
    ""operator"":""NotIn"",
    ""values"": [
        " + string.Join(",\n", randomValues.Select(value => $@"""{value}""")) + @"
    ]
}";
            var expressions          = JsonExpressionParser.Parse(jsonExpressionString);

            bool result;
            Dictionary <string, string> labels;

            foreach (var randomValue in randomValues)
            {
                labels = new Dictionary <string, string>
                {
                    ["environment"] = randomValue,
                };

                result = LabelSelectorTester.Test(labels, expressions);
                Assert.IsFalse(result);
            }

            labels = new Dictionary <string, string>
            {
                ["environment"] = LabelSelectorTester_Test.GenerateRandomString(),
            };

            result = LabelSelectorTester.Test(labels, expressions);
            Assert.IsTrue(result);
        }
Exemplo n.º 3
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Creating and seeding database...");
            var options = new DbContextOptionsBuilder <TransactionContext>()
                          .UseSqlite("Data Source=transactions.db").Options;

            using (var context = new TransactionContext(options))
            {
                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                context.DbTransactions.AddRange(Transaction.GetList(1000));
                await context.SaveChangesAsync();
            }

            var optionsWithLog = new DbContextOptionsBuilder <TransactionContext>()
                                 .UseSqlite("Data Source=transactions.db")
                                 .UseLoggerFactory(loggerFactory).Options;

            using (var context = new TransactionContext(optionsWithLog))
            {
                var count = await context.DbTransactions.CountAsync();

                Console.WriteLine($"Verified insert count: {count}.");
                Console.WriteLine("Parsing expression...");
                var parser    = new JsonExpressionParser();
                var predicate = parser.ParseExpressionOf <Transaction>(
                    JsonDocument.Parse(
                        await File.ReadAllTextAsync("databaseRules.json")));
                Console.WriteLine("Retrieving from database...");
                var query = context.DbTransactions.Where(predicate)
                            .OrderBy(t => t.Id);
                var results = await query.ToListAsync();

                Console.WriteLine($"Retrieved {results.Count}");
                Console.WriteLine("Sample:");
                Console.WriteLine(results[0]);
            }
        }