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; }
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); }
public void TwoNameCriteria() { ITestMethod tm = new TestMethod(new TestFixture(typeof(SampleTestFixture)), typeof(SampleTestFixture).GetMethod("Foo")); var addCriterion = new OrCriterion(); addCriterion.Add(new NameCriterion(typeof(SampleTestFixture).FullName + ".Foo")); addCriterion.Add(new NameCriterion("bar")); var testRun = new TestRun(addCriterion); Assert.True(testRun.Contains(tm)); }
/// <summary> /// Visits the specified or criterion. /// </summary> /// <param name="orCriterion">The or criterion.</param> /// <returns>FramePredicateExpression.</returns> public object Visit(OrCriterion orCriterion) { FramePredicateExpression result = null; foreach (var c in orCriterion.Criteria) { var f = (FramePredicateExpression)c.Accept(this); if (result == null) { result = f; continue; } result = result.Or(f); } return(result); }
public void Create_The_Correct_Expression_Tree_For_Or() { 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 OrCriterion(new[] { criteria1, criteria2 }); var f = visitor.Visit(and); var builder = new ContextFactoryBuilder(); var frame = new FrameEntity { Rax = ((ulong)0).ToHexString(), Rbx = ((ulong)1).ToHexString() }; var frame2 = new FrameEntity { Rax = ((ulong)1).ToHexString(), Rbx = ((ulong)1).ToHexString() }; builder.WithFrame(frame).WithFrame(frame2); var method = ((FramePredicateExpression)f).Compile(); new[] { frame, frame2 }.Where(x => method(x)).SequenceEqual(new[] { frame, frame2 }).Should().BeTrue(); }