public void TestOr()
 {
     TimeIntervalRelation[] localSubjects = new TimeIntervalRelation[NrOfCombinationTestSubjects];
     for (int i = 0; i < (NrOfCombinationTestSubjects - 1); i++)
     {
         localSubjects[i] = Subjects[i];
     }
     double total = Math.Pow(NrOfCombinationTestSubjects, 4);
     Console.WriteLine("Starting test over more than " + total + " cases");
     long count = 0;
     double totalForPercentage = total / 100;
     double percentage = 0.00;
     TimeIntervalRelation result;
     result = TimeIntervalRelation.Or();
     count++;
     foreach (TimeIntervalRelation tir1 in localSubjects)
     {
         result = TimeIntervalRelation.Or(tir1);
         result = TimeIntervalRelation.Or(tir1, tir1);
         result = TimeIntervalRelation.Or(tir1, tir1, tir1);
         result = TimeIntervalRelation.Or(tir1, tir1, tir1, tir1);
         count += 4;
         foreach (TimeIntervalRelation tir2 in localSubjects)
         {
             result = TimeIntervalRelation.Or(tir1, tir2);
             count++;
             foreach (TimeIntervalRelation tir3 in localSubjects)
             {
                 result = TimeIntervalRelation.Or(tir1, tir2, tir3);
                 count++;
                 foreach (TimeIntervalRelation tir4 in localSubjects)
                 {
                     result = TimeIntervalRelation.Or(tir1, tir2, tir3, tir4);
                     count++;
                     percentage = count / totalForPercentage;
                     if (count % 100000 == 0)
                     {
                         Console.WriteLine("  progress: " + count + " / " + total + " done (" + percentage + "%)");
                     }
                 }
             }
         }
     }
 }
 public void TestOrOperator()
 {
     TimeIntervalRelation[] localSubjects = new TimeIntervalRelation[NrOfCombinationTestSubjects];
     for (int i = 0; i < (NrOfCombinationTestSubjects - 1); i++)
     {
         localSubjects[i] = Subjects[i];
     }
     TimeIntervalRelation result;
     foreach (TimeIntervalRelation tir1 in localSubjects)
     {
         foreach (TimeIntervalRelation tir2 in localSubjects)
         {
             result = tir1 | tir2;
             foreach (TimeIntervalRelation tir3 in localSubjects)
             {
                 result = tir1 | tir2 | tir3;
                 foreach (TimeIntervalRelation tir4 in localSubjects)
                 {
                     result = tir1 | tir2 | tir3 | tir4;
                 }
             }
         }
     }
 }
 private static string FullBitPattern(TimeIntervalRelation ar)
 {
     return ((uint)ar.GetHashCode()).FullBitPattern(13);
 }