コード例 #1
0
ファイル: QueryTests.cs プロジェクト: tomplusit/sdmxdotnet
        public void ApiDesign()
        {
            var query = new DataQuery();
            var and   = new AndCriterion();

            and.Add(new DimensionCriterion()
            {
                Name = "JD_CATEGORY", Value = "A"
            });
            and.Add(new DimensionCriterion()
            {
                Name = "FREQ", Value = "A"
            });
            and.Add(new DimensionCriterion()
            {
                Name = "FREQ", Value = "M"
            });

            and.Add(new TimePeriodCriterion()
            {
                StartTime = TimePeriod.FromDate(new DateTime(2000, 1, 1)),
                EndTime   = TimePeriod.FromDate(new DateTime(2000, 12, 31))
            });
            var or = new OrCriterion();

            or.Add(new DataSetCriterion()
            {
                Name = "JD014"
            });
            and.Add(or);

            query.Criterion = and;
        }
コード例 #2
0
ファイル: TestRun.cs プロジェクト: ManfredLange/csUnit
        internal TestRun And(ICriterion criterion)
        {
            var andCriterion = new AndCriterion();

            andCriterion.Add(criterion);
            andCriterion.Add(_criterion);
            return(new TestRun(andCriterion));
        }
コード例 #3
0
        public void Find_Matching_Frames_Complex()
        {
            var frameAccess = new FrameAccess();
            var builder     = new ContextFactoryBuilder();

            builder.WithFrame(new FrameEntity
            {
                PosHi    = 0,
                PosLo    = 0,
                ThreadId = 1,
                Rax      = ((ulong)1).ToHexString()
            }).WithFrame(new FrameEntity
            {
                PosHi    = 0,
                PosLo    = 0,
                ThreadId = 2,
                Rax      = ((ulong)2).ToHexString()
            }).WithFrame(new FrameEntity
            {
                PosHi    = 1,
                PosLo    = 0,
                ThreadId = 2,
                Rax      = ((ulong)2).ToHexString()
            }).WithFrame(new FrameEntity
            {
                PosHi    = 1,
                PosLo    = 1,
                ThreadId = 2,
                Rax      = ((ulong)1).ToHexString(),
                Rbx      = ((ulong)2).ToHexString()
            });
            frameAccess.ContextFactory = builder.Build();

            var rax           = new RegisterEqualsCriterion(Register.Rax, ((ulong)1).ToHexString());
            var rbx           = new RegisterEqualsCriterion(Register.Rbx, ((ulong)2).ToHexString());
            var and           = new AndCriterion(new[] { rax, rbx });
            var or            = new OrCriterion(new[] { rax, rbx });
            var not           = new NotCriterion(rax);
            var all           = new OrCriterion(new ICriterion[] { not, rax });
            var none          = new AndCriterion(new ICriterion[] { not, rax });
            var andAll        = new AndCriterion(new ICriterion[] { and, all });
            var andResults    = frameAccess.Search("", and);
            var orResults     = frameAccess.Search("", or);
            var notResults    = frameAccess.Search("", not);
            var allResults    = frameAccess.Search("", all);
            var noneResults   = frameAccess.Search("", none);
            var andAllResults = frameAccess.Search("", andAll);

            andResults.Single().RegisterSet.Rax.Should().Be(1);
            andResults.Single().RegisterSet.Rbx.Should().Be(2);

            orResults.Should().HaveCount(2);
            notResults.Should().HaveCount(2);
            allResults.Should().HaveCount(4);
            noneResults.Should().HaveCount(0);
            andAllResults.Should().HaveCount(1);
        }
コード例 #4
0
        /// <summary>
        ///     Visits the specified and criterion.
        /// </summary>
        /// <param name="andCriterion">The and criterion.</param>
        /// <returns>FramePredicateExpression.</returns>
        public object Visit(AndCriterion andCriterion)
        {
            FramePredicateExpression result = null;

            foreach (var c in andCriterion.Criteria)
            {
                var f = (FramePredicateExpression)c.Accept(this);
                if (result == null)
                {
                    result = f;
                    continue;
                }

                result = result.And(f);
            }

            return(result);
        }
コード例 #5
0
ファイル: QueryTests.cs プロジェクト: dur41d/sdmxdotnet
        public void ApiDesign()
        {
            var query = new DataQuery();
            var and = new AndCriterion();
            and.Add(new DimensionCriterion() { Name = "JD_CATEGORY", Value = "A" });
            and.Add(new DimensionCriterion() { Name = "FREQ", Value = "A" });
            and.Add(new DimensionCriterion() { Name = "FREQ", Value = "M" });

            and.Add(new TimePeriodCriterion()
                {
                    StartTime = TimePeriod.FromDate(new DateTime(2000, 1, 1)),
                    EndTime = TimePeriod.FromDate(new DateTime(2000, 12, 31))
                });
            var or = new OrCriterion();
            or.Add(new DataSetCriterion() { Name = "JD014" });
            and.Add(or);

            query.Criterion = and;
        }
コード例 #6
0
        public void Create_The_Correct_Expression_Tree_For_And()
        {
            var visitor   = new FrameCriterionVisitor();
            var criteria1 = new RegisterEqualsCriterion(Register.Rax, ((ulong)0).ToHexString());
            var criteria2 = new RegisterEqualsCriterion(Register.Rbx, ((ulong)1).ToHexString());
            var and       = new AndCriterion(new[] { criteria1, criteria2 });
            var f         = visitor.Visit(and);

            var frame = new FrameEntity
            {
                Rax = ((ulong)0).ToHexString(),
                Rbx = ((ulong)1).ToHexString()
            };
            var frame2 = new FrameEntity
            {
                Rax = ((ulong)1).ToHexString(),
                Rbx = ((ulong)1).ToHexString()
            };

            var method = ((FramePredicateExpression)f).Compile();

            new[] { frame, frame2 }.Single(x => method(x)).Should().Be(frame);
        }