Example #1
0
        public async Task FilterPairs(string columnName, DataType.ETypeCode dataType, object filterValue, Filter.ECompare filterCompare, int expctedRows)
        {
            var table = Helpers.CreateSortedTestData();

            var joinPairs = new List <FilterPair>
            {
                new FilterPair(new TableColumn(columnName, dataType), filterValue, filterCompare)
            };

            // set a junk filter that filters
            var transformFilter = new TransformFilter(table, null, joinPairs);
            await transformFilter.Open(0, null, CancellationToken.None);

            Assert.Equal(5, transformFilter.FieldCount);

            var count = 0;

            while (await transformFilter.ReadAsync())
            {
                count = count + 1;
            }
            Assert.Equal(expctedRows, count);
        }
Example #2
0
        public async Task Filters()
        {
            var table = Helpers.CreateSortedTestData();

            //set a filter that filters all
            var conditions = new List <TransformFunction>();
            var function   = Functions.GetFunction("dexih.functions.BuiltIn.ConditionFunctions", "IsEqual").GetTransformFunction();

            function.Inputs = new dexih.functions.Parameter[] {
                new dexih.functions.Parameter("StringColumn", ETypeCode.String, true, null, new TableColumn("StringColumn"), isArray: true),
                new dexih.functions.Parameter("Compare", ETypeCode.String, false, "junk", isArray: true)
            };
            conditions.Add(function);

            var transformFilter = new TransformFilter(table, conditions, null);
            await transformFilter.Open(0, null, CancellationToken.None);

            Assert.Equal(5, transformFilter.FieldCount);

            var count = 0;

            while (await transformFilter.ReadAsync())
            {
                count = count + 1;
            }
            Assert.Equal(0, count);

            //set a filter than filters to 1 row.
            conditions      = new List <TransformFunction>();
            function        = Functions.GetFunction("dexih.functions.BuiltIn.ConditionFunctions", "IsEqual").GetTransformFunction();
            function.Inputs = new dexih.functions.Parameter[] {
                new dexih.functions.Parameter("StringColumn", ETypeCode.String, true, null, new TableColumn("StringColumn"), isArray: true),
                new dexih.functions.Parameter("Compare", ETypeCode.String, false, "value03", isArray: true)
            };
            conditions.Add(function);

            transformFilter.Conditions = conditions;
            transformFilter.Reset();

            count = 0;
            while (await transformFilter.ReadAsync() == true)
            {
                count = count + 1;
                if (count == 1)
                {
                    Assert.Equal(3, transformFilter["IntColumn"]);
                }
            }
            Assert.Equal(1, count);

            // use the "IN" function to filter 3 rows.
            conditions      = new List <TransformFunction>();
            function        = Functions.GetFunction("dexih.functions.BuiltIn.ConditionFunctions", "IsIn").GetTransformFunction();
            function.Inputs = new dexih.functions.Parameter[] {
                new dexih.functions.Parameter("Value", ETypeCode.String, true, null, new TableColumn("StringColumn")),
                new dexih.functions.Parameter("CompareTo", ETypeCode.String, false, "value03", isArray: true),
                new dexih.functions.Parameter("CompareTo", ETypeCode.String, false, "value05", isArray: true),
                new dexih.functions.Parameter("CompareTo", ETypeCode.String, false, "value07", isArray: true)
            };

            conditions.Add(function);
            transformFilter.Conditions = conditions;
            table.Reset();
            transformFilter.SetInTransform(table);

            count = 0;
            while (await transformFilter.ReadAsync() == true)
            {
                count = count + 1;
            }
            Assert.Equal(3, count);

            // create a mapping, and use the filter after the calculation.
            var mappings = new List <TransformFunction>();

            function = Functions.GetFunction("dexih.functions.BuiltIn.MapFunctions", "Substring").GetTransformFunction();
            function.TargetColumn = new TableColumn("Substring");
            function.Inputs       = new dexih.functions.Parameter[] {
                new dexih.functions.Parameter("name", ETypeCode.String, true, null, new TableColumn("StringColumn")),
                new dexih.functions.Parameter("start", ETypeCode.Int32, false, 5),
                new dexih.functions.Parameter("end", ETypeCode.Int32, false, 50)
            };
            mappings.Add(function);

            table.Reset();
            var transformMapping = new TransformMapping(table, false, null, mappings);

            conditions      = new List <TransformFunction>();
            function        = Functions.GetFunction("dexih.functions.BuiltIn.ConditionFunctions", "LessThan").GetTransformFunction();
            function.Inputs = new dexih.functions.Parameter[] {
                new dexih.functions.Parameter("Substring", ETypeCode.Int32, true, null, new TableColumn("Substring")),
                new dexih.functions.Parameter("Compare", ETypeCode.Int32, false, 5)
            };
            conditions.Add(function);
            transformFilter.Conditions = conditions;
            transformFilter.SetInTransform(transformMapping);

            count = 0;
            while (await transformFilter.ReadAsync() == true)
            {
                count = count + 1;
            }
            Assert.Equal(4, count);
        }