예제 #1
0
 public void TestGT_02()
 {
     for (int i = 0; i < 100; i++)
     {
         int             i1     = Random.Next(int.MinValue, int.MaxValue);
         IValueSet <int> values = ForInt.Related(GreaterThan, i1);
         Assert.Equal($"[{i1 + 1}..{int.MaxValue}]", values.ToString());
     }
 }
예제 #2
0
 public void TestLE_02()
 {
     for (int i = 0; i < 100; i++)
     {
         int             i1     = Random.Next(int.MinValue, int.MaxValue) + 1;
         IValueSet <int> values = ForInt.Related(LessThanOrEqual, i1);
         Assert.Equal($"[{int.MinValue}..{i1}]", values.ToString());
     }
 }
예제 #3
0
        public void TestGT_01(int i1)
        {
            IValueSet <int> values = ForInt.Related(GreaterThan, i1);

            Assert.Equal(
                (i1 == int.MaxValue) ? "" : $"[{i1 + 1}..{int.MaxValue}]",
                values.ToString()
                );
        }
예제 #4
0
        public void TestLT_01(int i1)
        {
            IValueSet <int> values = ForInt.Related(LessThan, i1);

            Assert.Equal(
                (i1 == int.MinValue) ? "" : $"[{int.MinValue}..{i1 - 1}]",
                values.ToString()
                );
        }
예제 #5
0
 public void TestIsEmpty_01()
 {
     for (int i = 0; i < 100; i++)
     {
         int             i1     = Random.Next(int.MinValue, int.MaxValue);
         int             i2     = Random.Next(int.MinValue, int.MaxValue);
         IValueSet <int> values = ForInt.Related(GreaterThanOrEqual, i1).Intersect(ForInt.Related(LessThanOrEqual, i2));
         Assert.Equal(values.ToString().Length == 0, values.IsEmpty);
     }
 }
예제 #6
0
 public void TestDouble_01()
 {
     for (int i = 0; i < 100; i++)
     {
         double d1 = Random.NextDouble() * 100 - 50;
         double d2 = Random.NextDouble() * 100 - 50;
         if (d1 > d2)
         {
             (d1, d2) = (d2, d1);
         }
         IValueSet <double> values = ForDouble.Related(GreaterThanOrEqual, d1).Intersect(ForDouble.Related(LessThanOrEqual, d2));
         Assert.Equal(FormattableString.Invariant($"[{d1:G17}..{d2:G17}]"), values.ToString());
     }
 }
예제 #7
0
 public void TestUnion_02()
 {
     for (int i = 0; i < 100; i++)
     {
         int i1 = Random.Next(int.MinValue + 1, int.MaxValue);
         int i2 = Random.Next(int.MinValue, int.MaxValue);
         if (i1 < i2)
         {
             (i1, i2) = (i2, i1);
         }
         IValueSet <int> values1 = ForInt.Related(LessThanOrEqual, i1).Union(ForInt.Related(GreaterThanOrEqual, i2));
         Assert.Equal($"[{int.MinValue}..{int.MaxValue}]", values1.ToString());
         IValueSet <int> values2 = ForInt.Related(GreaterThanOrEqual, i2).Union(ForInt.Related(LessThanOrEqual, i1));
         Assert.Equal(values1, values2);
     }
 }
예제 #8
0
 public void TestIntersect_02()
 {
     for (int i = 0; i < 100; i++)
     {
         int i1 = Random.Next(int.MinValue + 1, int.MaxValue);
         int i2 = Random.Next(int.MinValue, int.MaxValue);
         if (i1 < i2)
         {
             (i1, i2) = (i2, i1);
         }
         if (i1 == i2)
         {
             continue;
         }
         IValueSet <int> values1 = ForInt.Related(GreaterThanOrEqual, i1).Intersect(ForInt.Related(LessThanOrEqual, i2));
         Assert.Equal($"", values1.ToString());
         IValueSet <int> values2 = ForInt.Related(LessThanOrEqual, i2).Intersect(ForInt.Related(GreaterThanOrEqual, i1));
         Assert.Equal(values1, values2);
     }
 }
예제 #9
0
 public void TestComplement_01()
 {
     for (int i = 0; i < 100; i++)
     {
         int i1 = Random.Next(int.MinValue + 1, int.MaxValue);
         int i2 = Random.Next(int.MinValue, int.MaxValue);
         if (i1 > i2)
         {
             (i1, i2) = (i2, i1);
         }
         if ((i1 + 1) >= i2)
         {
             continue;
         }
         IValueSet <int> values1 = ForInt.Related(LessThanOrEqual, i1).Union(ForInt.Related(GreaterThanOrEqual, i2));
         Assert.Equal($"[{int.MinValue}..{i1}],[{i2}..{int.MaxValue}]", values1.ToString());
         IValueSet <int> values2 = values1.Complement();
         Assert.Equal(values1, values2.Complement());
         Assert.Equal($"[{i1 + 1}..{i2 - 1}]", values2.ToString());
     }
 }
예제 #10
0
 public void TestAny_01()
 {
     for (int i = 0; i < 100; i++)
     {
         int i1 = Random.Next(int.MinValue, int.MaxValue);
         int i2 = Random.Next(int.MinValue, int.MaxValue);
         if (i1 > i2)
         {
             (i1, i2) = (i2, i1);
         }
         IValueSet <int> values = ForInt
                                  .Related(GreaterThanOrEqual, i1)
                                  .Intersect(ForInt.Related(LessThanOrEqual, i2));
         Assert.Equal($"[{i1}..{i2}]", values.ToString());
         test(int.MinValue);
         if (i1 != int.MinValue)
         {
             test(i1 - 1);
         }
         test(i1);
         test(i1 + 1);
         test(int.MaxValue);
         if (i2 != int.MinValue)
         {
             test(i2 - 1);
         }
         test(i2);
         test(i2 + 1);
         void test(int val)
         {
             Assert.Equal(val >= i1 && val <= i2, values.Any(Equal, val));
             Assert.Equal(val >= i1, values.Any(LessThanOrEqual, val));
             Assert.Equal(val > i1, values.Any(LessThan, val));
             Assert.Equal(val <= i2, values.Any(GreaterThanOrEqual, val));
             Assert.Equal(i2 > val, values.Any(GreaterThan, val));
         }
     }
 }
예제 #11
0
        public void TestLE_01(int i1)
        {
            IValueSet <int> values = ForInt.Related(LessThanOrEqual, i1);

            Assert.Equal($"[{int.MinValue}..{i1}]", values.ToString());
        }
예제 #12
0
        public void TestGE_01(int i1)
        {
            IValueSet <int> values = ForInt.Related(GreaterThanOrEqual, i1);

            Assert.Equal($"[{i1}..{int.MaxValue}]", values.ToString());
        }
예제 #13
0
        public void TestEQ_01(int i1)
        {
            IValueSet <int> values = ForInt.Related(Equal, i1);

            Assert.Equal($"[{i1}..{i1}]", values.ToString());
        }