public void MostFrequentFilter_NoDuplicates()
        {
            int[][] arrays     = new int[NUMBER_OF_ARRAYS][];
            int     startValue = 1;

            for (int i = 0; i < arrays.Length; i++)
            {
                arrays[i]   = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
                startValue += arrays[i].Length;
            }
            var startTime = DateTime.UtcNow;
            var filter    = new Controller.MostFrequentFilter(arrays, int.MaxValue);

            Console.WriteLine("Completed filter in '{0}ms'",
                              (DateTime.UtcNow - startTime).TotalMilliseconds);
            Assert.IsTrue(filter.Count ==
                          NUMBER_OF_ELEMENTS * NUMBER_OF_ARRAYS);
            int lastValue = 0;

            for (int i = 0; i < filter.Count; i++)
            {
                Assert.IsTrue(lastValue < filter[i]);
                lastValue = filter[i];
            }
        }
 public void MostFrequentFilter_DifferentLengthDuplicateValue()
 {
     int[][] arrays = new int[NUMBER_OF_ARRAYS][];
     for (int i = 0; i < arrays.Length; i++) {
         arrays[i] = createArray(NUMBER_OF_ELEMENTS * (arrays.Length - i), 0, 1);
     }
     var startTime = DateTime.UtcNow;
     var filter = new Controller.MostFrequentFilter(arrays, int.MaxValue);
     Console.WriteLine("Completed filter in '{0}ms'",
         (DateTime.UtcNow - startTime).TotalMilliseconds);
     Assert.IsTrue(filter.Count == NUMBER_OF_ELEMENTS);
     for (int i = 0; i < arrays[arrays.Length - 1].Length; i++) {
         Assert.IsTrue(filter[i] == arrays[arrays.Length - 1][i]);
     }
 }
        public void MostFrequentFilter_AllDuplicates()
        {
            int[][] arrays = new int[NUMBER_OF_ARRAYS][];
            for (int i = 0; i < arrays.Length; i++)
            {
                arrays[i] = createArray(NUMBER_OF_ELEMENTS, 0, 1);
            }
            var startTime = DateTime.UtcNow;
            var filter    = new Controller.MostFrequentFilter(arrays, int.MaxValue);

            Console.WriteLine("Completed filter in '{0}ms'",
                              (DateTime.UtcNow - startTime).TotalMilliseconds);
            Assert.IsTrue(filter.Count == NUMBER_OF_ELEMENTS);
            for (int i = 0; i < arrays[0].Length; i++)
            {
                Assert.IsTrue(filter[i].Equals(arrays[0][i]));
            }
        }
 public void MostFrequentFilter_MaxResults()
 {
     int[][] arrays = new int[4][];
     int startValue = 1;
     for (int i = 2; i >= 0; i -= 2)
     {
         arrays[i] = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
         arrays[i + 1] = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
         startValue += arrays[i].Length;
     }
     var startTime = DateTime.UtcNow;
     var filter = new Controller.MostFrequentFilter(arrays, NUMBER_OF_ELEMENTS / 10);
     Console.WriteLine("Completed filter in '{0}ms'",
         (DateTime.UtcNow - startTime).TotalMilliseconds);
     Assert.IsTrue(filter.Count == NUMBER_OF_ELEMENTS / 10);
     for (int i = 0; i < filter.Count - 1; i++)
     {
         Assert.IsTrue(filter[i] < filter[i+1]);
     }
 }
        public void MostFrequentFilter_OneDuplicateValue()
        {
            int[][] arrays     = new int[NUMBER_OF_ARRAYS][];
            int     startValue = 1;

            for (int i = 0; i < arrays.Length - 1; i++)
            {
                arrays[i]   = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
                startValue += arrays[i].Length;
            }
            arrays[arrays.Length - 1] = new int[] {
                arrays[0][NUMBER_OF_ELEMENTS / 2]
            };
            var startTime = DateTime.UtcNow;
            var filter    = new Controller.MostFrequentFilter(arrays, int.MaxValue);

            Console.WriteLine("Completed filter in '{0}ms'",
                              (DateTime.UtcNow - startTime).TotalMilliseconds);
            Assert.IsTrue(filter.Count == 1);
            Assert.IsTrue(filter[0] == arrays[arrays.Length - 1][0]);
        }
        public void MostFrequentFilter_MaxResults()
        {
            int[][] arrays     = new int[4][];
            int     startValue = 1;

            for (int i = 2; i >= 0; i -= 2)
            {
                arrays[i]     = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
                arrays[i + 1] = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
                startValue   += arrays[i].Length;
            }
            var startTime = DateTime.UtcNow;
            var filter    = new Controller.MostFrequentFilter(arrays, NUMBER_OF_ELEMENTS / 10);

            Console.WriteLine("Completed filter in '{0}ms'",
                              (DateTime.UtcNow - startTime).TotalMilliseconds);
            Assert.IsTrue(filter.Count == NUMBER_OF_ELEMENTS / 10);
            for (int i = 0; i < filter.Count - 1; i++)
            {
                Assert.IsTrue(filter[i] < filter[i + 1]);
            }
        }
 public void MostFrequentFilter_OneDuplicateValue()
 {
     int[][] arrays = new int[NUMBER_OF_ARRAYS][];
     int startValue = 1;
     for (int i = 0; i < arrays.Length - 1; i++) {
         arrays[i] = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
         startValue += arrays[i].Length;
     }
     arrays[arrays.Length - 1] = new int[] {
         arrays[0][NUMBER_OF_ELEMENTS / 2] };
     var startTime = DateTime.UtcNow;
     var filter = new Controller.MostFrequentFilter(arrays, int.MaxValue);
     Console.WriteLine("Completed filter in '{0}ms'",
         (DateTime.UtcNow - startTime).TotalMilliseconds);
     Assert.IsTrue(filter.Count == 1);
     Assert.IsTrue(filter[0] == arrays[arrays.Length - 1][0]);
 }
 public void MostFrequentFilter_NoDuplicates()
 {
     int[][] arrays = new int[NUMBER_OF_ARRAYS][];
     int startValue = 1;
     for (int i = 0; i < arrays.Length; i++) {
         arrays[i] = createArray(NUMBER_OF_ELEMENTS, startValue, 1);
         startValue += arrays[i].Length;
     }
     var startTime = DateTime.UtcNow;
     var filter = new Controller.MostFrequentFilter(arrays, int.MaxValue);
     Console.WriteLine("Completed filter in '{0}ms'",
         (DateTime.UtcNow - startTime).TotalMilliseconds);
     Assert.IsTrue(filter.Count ==
             NUMBER_OF_ELEMENTS * NUMBER_OF_ARRAYS);
     int lastValue = 0;
     for (int i = 0; i < filter.Count; i++) {
         Assert.IsTrue(lastValue < filter[i]);
         lastValue = filter[i];
     }
 }