Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Encodings.RealVector/3.3/Tests/DiscreteCrossoverTest.cs @ 2936

Last change on this file since 2936 was 2936, checked in by svonolfe, 14 years ago

Added heuristic, local, random convex crossover and added some initial unit tests for all RealVector operators (#890)

File size: 4.3 KB
Line 
1using HeuristicLab.Encodings.RealVector;
2using Microsoft.VisualStudio.TestTools.UnitTesting;
3using HeuristicLab.Core;
4using HeuristicLab.Data;
5using HeuristicLab.Parameters;
6
7namespace HeuristicLab.Encodings.RealVector_33.Tests {
8
9
10  /// <summary>
11  ///This is a test class for DiscreteCrossoverTest and is intended
12  ///to contain all DiscreteCrossoverTest Unit Tests
13  ///</summary>
14  [TestClass()]
15  public class DiscreteCrossoverTest {
16
17
18    private TestContext testContextInstance;
19
20    /// <summary>
21    ///Gets or sets the test context which provides
22    ///information about and functionality for the current test run.
23    ///</summary>
24    public TestContext TestContext {
25      get {
26        return testContextInstance;
27      }
28      set {
29        testContextInstance = value;
30      }
31    }
32
33    #region Additional test attributes
34    //
35    //You can use the following additional attributes as you write your tests:
36    //
37    //Use ClassInitialize to run code before running the first test in the class
38    //[ClassInitialize()]
39    //public static void MyClassInitialize(TestContext testContext)
40    //{
41    //}
42    //
43    //Use ClassCleanup to run code after all tests in a class have run
44    //[ClassCleanup()]
45    //public static void MyClassCleanup()
46    //{
47    //}
48    //
49    //Use TestInitialize to run code before running each test
50    //[TestInitialize()]
51    //public void MyTestInitialize()
52    //{
53    //}
54    //
55    //Use TestCleanup to run code after each test has run
56    //[TestCleanup()]
57    //public void MyTestCleanup()
58    //{
59    //}
60    //
61    #endregion
62
63    /// <summary>
64    ///A test for Cross
65    ///</summary>
66    [TestMethod()]
67    [DeploymentItem("HeuristicLab.Encodings.RealVector-3.3.dll")]
68    public void DiscreteCrossoverCrossTest() {
69      DiscreteCrossover_Accessor target = new DiscreteCrossover_Accessor(new PrivateObject(typeof(DiscreteCrossover)));
70      ItemArray<DoubleArrayData> parents;
71      TestRandom random = new TestRandom();
72      bool exceptionFired;
73      // The following test checks if there is an exception when there are less than 2 parents
74      random.Reset();
75      parents = new ItemArray<DoubleArrayData>(new DoubleArrayData[] { new DoubleArrayData(4) });
76      exceptionFired = false;
77      try {
78        DoubleArrayData actual;
79        actual = target.Cross(random, parents);
80      } catch (System.ArgumentException) {
81        exceptionFired = true;
82      }
83      Assert.IsTrue(exceptionFired);
84    }
85
86    /// <summary>
87    ///A test for Apply
88    ///</summary>
89    [TestMethod()]
90    public void DiscreteCrossoverApplyTest() {
91      TestRandom random = new TestRandom();
92      DoubleArrayData parent1, parent2, expected, actual;
93      ItemArray<DoubleArrayData> parents;
94      bool exceptionFired;
95      // The following test is not based on published examples
96      random.Reset();
97      random.IntNumbers = new int[] { 0, 0, 1, 0, 1 };
98      parent1 = new DoubleArrayData(new double[] { 0.2, 0.2, 0.3, 0.5, 0.1 });
99      parent2 = new DoubleArrayData(new double[] { 0.4, 0.1, 0.3, 0.2, 0.8 });
100      parents = new ItemArray<DoubleArrayData>( new DoubleArrayData[] { parent1, parent2 } );
101      expected = new DoubleArrayData(new double[] { 0.2, 0.2, 0.3, 0.5, 0.8 });
102      actual = DiscreteCrossover.Apply(random, parents);
103      Assert.IsTrue(Auxiliary.RealVectorIsAlmostEqualByPosition(actual, expected));
104      // The following test is not based on published examples
105      random.Reset();
106      random.IntNumbers = new int[] { 0, 0, 1, 0, 1, 0 };
107      parent1 = new DoubleArrayData(new double[] { 0.2, 0.2, 0.3, 0.5, 0.1, 0.9 }); // this parent is longer
108      parent2 = new DoubleArrayData(new double[] { 0.4, 0.1, 0.3, 0.2, 0.8 });
109      parents = new ItemArray<DoubleArrayData>(new DoubleArrayData[] { parent1, parent2 });
110      exceptionFired = false;
111      try {
112        actual = DiscreteCrossover.Apply(random, parents);
113      } catch (System.ArgumentException) {
114        exceptionFired = true;
115      }
116      Assert.IsTrue(exceptionFired);
117    }
118
119    /// <summary>
120    ///A test for DiscreteCrossover Constructor
121    ///</summary>
122    [TestMethod()]
123    public void DiscreteCrossoverConstructorTest() {
124      DiscreteCrossover target = new DiscreteCrossover();
125    }
126  }
127}
Note: See TracBrowser for help on using the repository browser.