using System.Collections; using System.Collections.Generic; using System.Linq; using HeuristicLab.Algorithms.DataAnalysis.Symbolic; using HeuristicLab.Data; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace HeuristicLab.Tests { [TestClass] public class ConsecutiveSamplesEvaluatorTest { [TestMethod] public void GenerateRowsTest() { IntRange samples = new IntRange(0, 50); IntRange fixedSamples = new IntRange(0, 30); IEnumerable rows = null; //test simple case rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 0); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 1); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 2); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10))); for (int i = 0; i < 10; i++) { rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: i); var match = Enumerable.Range(30 + i % 2 * 10, 10); Assert.IsTrue(rows.SequenceEqual(match)); } //test with overlap rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 0); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 1); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(35, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 2); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 3); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 5).Concat(Enumerable.Range(30, 5)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 4); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10))); //test with overlap rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 0); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 1); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(33, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 2); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(36, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 3); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(39, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 4); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(42, 8).Concat(Enumerable.Range(30, 2)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 5); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 5).Concat(Enumerable.Range(30, 5)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 6); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(48, 2).Concat(Enumerable.Range(30, 8)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 7); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(31, 10))); samples = new IntRange(0, 60); fixedSamples = new IntRange(20, 40); //test simple case rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 0); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 1); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 2); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(0, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 3); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(10, 10))); //test with overlap rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 0); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 20).Concat(Enumerable.Range(0, 10)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 1); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 15).Concat(Enumerable.Range(0, 15)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 2); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10).Concat(Enumerable.Range(0, 20)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 3); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(55, 5).Concat(Enumerable.Range(0, 20).Concat(Enumerable.Range(40, 5))))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 4); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(0, 20).Concat(Enumerable.Range(40, 10)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 5); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(5, 15).Concat(Enumerable.Range(40, 15)))); samples = new IntRange(10, 60); fixedSamples = new IntRange(20, 40); //test simple case rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 0); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 1); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 2); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(10, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 3); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 0); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 20))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 1); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 15).Concat(Enumerable.Range(10, 5)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 2); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10).Concat(Enumerable.Range(10, 10)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 3); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(55, 5).Concat(Enumerable.Range(10, 10).Concat(Enumerable.Range(40, 5))))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 4); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(10, 10).Concat(Enumerable.Range(40, 10)))); rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 5); Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(15, 5).Concat(Enumerable.Range(40, 15)))); //error cases //consecutive samples larger than remaining samples //fixed samples partition invalid } } }