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);
     }
 }
Exemple #2
0
        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");
        }