public override void WriteEvaluator(IntervalCondition <T> proc, JavaScriptExpressionWriter writer, params Action[] argumentWriters) { if (proc.Min.HasValue) { argumentWriters[0](); writer.Output.Write(">"); if (proc.MinInclusive) { writer.Output.Write("="); } WriteLimit(proc.Min.Value, writer); if (proc.Max.HasValue) { writer.Output.Write("&&"); } } if (proc.Max.HasValue) { argumentWriters[0](); writer.Output.Write("<"); if (proc.MaxInclusive) { writer.Output.Write("="); } WriteLimit(proc.Max.Value, writer); } }
public void ConditionManipulations() { // -1- PrimitiveCondition primitiveCondition1 = new PrimitiveCondition("IsOnline", "true", ComparisonOperator.NE); Condition condition1 = new Condition("IsOnline", true, ComparisonOperator.NE); PrimitiveCondition primitiveCondition2 = condition1.GetPrimitives()[0]; Condition condition2 = new Condition(primitiveCondition1); Assert.AreEqual(primitiveCondition1.GetQueryString(), condition1.GetQueryString()); Assert.AreEqual(primitiveCondition1.GetQueryString(), primitiveCondition2.GetQueryString()); Assert.AreEqual(primitiveCondition1.GetQueryString(), condition2.GetQueryString()); Assert.AreEqual(primitiveCondition1.GetQueryString(), "IsOnline%20ne%20true"); // -2- Condition conditionDate1 = new Condition("CreationTime", new DateTime(2020, 1, 10), ComparisonOperator.GE); Condition conditionDate2 = new Condition("CreationTime", new DateTime(2020, 1, 15), ComparisonOperator.LE); Interval <DateTime> interval1 = new Interval <DateTime>(new DateTime(2020, 1, 10), new DateTime(2020, 1, 15)); IntervalCondition <DateTime> intervalConditionDate1 = new IntervalCondition <DateTime>( "CreationTime", new Interval <DateTime>(new DateTime(2020, 1, 10), new DateTime(2020, 1, 15)) ); PrimitiveCondition primitiveConditionDate1 = conditionDate1.GetPrimitives()[0]; PrimitiveCondition primitiveConditionDate2 = conditionDate2.GetPrimitives()[0]; PrimitiveCondition[] primitiveConditionDates1 = interval1.GeneratePrimitiveConditions("CreationTime"); PrimitiveCondition[] primitiveConditionDates2 = intervalConditionDate1.GetPrimitives(); Assert.AreEqual(primitiveConditionDate1.GetQueryString(), primitiveConditionDates1[0].GetQueryString()); Assert.AreEqual(primitiveConditionDate1.GetQueryString(), primitiveConditionDates2[0].GetQueryString()); Assert.AreEqual(primitiveConditionDate1.GetQueryString(), "CreationTime%20ge%202020-01-10T00:00:00Z"); Assert.AreEqual(primitiveConditionDate2.GetQueryString(), primitiveConditionDates1[1].GetQueryString()); Assert.AreEqual(primitiveConditionDate2.GetQueryString(), primitiveConditionDates2[1].GetQueryString()); Assert.AreEqual(primitiveConditionDate2.GetQueryString(), "CreationTime%20le%202020-01-15T00:00:00Z"); // -3- Condition conditionDate3 = new Condition("CreationTime", new DateTime(2019, 12, 26), ComparisonOperator.GE); Condition conditionDate4 = new Condition("CreationTime", new DateTime(2019, 12, 25), ComparisonOperator.GT); IntervalCondition <DateTime> intervalConditionDate2 = new IntervalCondition <DateTime>( "CreationTime", new Interval <DateTime> { Start = new DateTime(2019, 12, 26) } ); IntervalCondition <DateTime> intervalConditionDate3 = new IntervalCondition <DateTime>( "CreationTime", new Interval <DateTime> { Start = new DateTime(2019, 12, 25), IncludeStart = false } ); Assert.AreEqual(conditionDate3.GetQueryString(), intervalConditionDate2.GetQueryString()); Assert.AreEqual(conditionDate3.GetQueryString(), "CreationTime%20ge%202019-12-26T00:00:00Z"); Assert.AreEqual(conditionDate4.GetQueryString(), intervalConditionDate3.GetQueryString()); Assert.AreEqual(conditionDate4.GetQueryString(), "CreationTime%20gt%202019-12-25T00:00:00Z"); DateTime dateTimeTest1 = new DateTime(2019, 12, 25); DateTime dateTimeTest2 = new DateTime(2019, 12, 26); Assert.IsFalse(intervalConditionDate2.Interval.ContainsValue(dateTimeTest1)); Assert.IsFalse(intervalConditionDate3.Interval.ContainsValue(dateTimeTest1)); Assert.IsTrue(intervalConditionDate2.Interval.ContainsValue(dateTimeTest2)); Assert.IsTrue(intervalConditionDate3.Interval.ContainsValue(dateTimeTest2)); // -4- Condition condition3 = new Condition(); condition3.Name = "Robot/Type"; condition3.Value = "Attended"; Condition condition4 = new Condition(); condition4.BaseName = "Robot"; condition4.PropertyName = "Type"; condition4.Value = "Attended"; Condition condition5 = new Condition("Robot/Type", "Attended"); Condition condition6 = new Condition("Robot/Type = Attended"); Assert.AreEqual(condition3.GetQueryString(), condition4.GetQueryString()); Assert.AreEqual(condition3.GetQueryString(), condition5.GetQueryString()); Assert.AreEqual(condition3.GetQueryString(), condition6.GetQueryString()); Assert.AreEqual(condition3.GetQueryString(), "Robot/Type%20eq%20%27Attended%27"); }