Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/12/17 21:04:37 (7 years ago)
Author:
abeham
Message:

#2803: merged revisions 15191, 15192 to stable

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Tests

  • stable/HeuristicLab.Tests/HeuristicLab.IGraph/IGraphWrappersVectorTest.cs

    r15130 r15218  
    2020#endregion
    2121
     22using System;
     23using System.Collections.Generic;
    2224using System.Linq;
     25using HeuristicLab.Encodings.RealVectorEncoding;
    2326using HeuristicLab.IGraph.Wrappers;
    2427using Microsoft.VisualStudio.TestTools.UnitTesting;
     
    3235    [TestProperty("Time", "short")]
    3336    public void IGraphWrappersVectorConstructionAndFinalizationTest() {
    34       var vector = new Vector(7);
    35       Assert.AreEqual(7, vector.Length);
    36       Assert.AreEqual(0, vector[0]);
    37       vector[0] = 4;
    38       var other = new Vector(vector);
    39       Assert.AreEqual(7, other.Length);
    40       Assert.AreEqual(4, other[0]);
    41 
     37      using (var vector = new Vector(7)) {
     38        Assert.AreEqual(7, vector.Length);
     39        Assert.AreEqual(0, vector[0]);
     40        vector[0] = 4;
     41        using (var other = new Vector(vector)) {
     42          Assert.AreEqual(7, other.Length);
     43          Assert.AreEqual(4, other[0]);
     44        }
     45      }
    4246      var myvec = new double[] { 1, 2, 3 };
    43       vector = new Vector(myvec);
    44       Assert.AreEqual(3, vector.Length);
    45       Assert.AreEqual(myvec[0], vector[0]);
    46       Assert.AreEqual(myvec[1], vector[1]);
    47       Assert.AreEqual(myvec[2], vector[2]);
     47      using (var vector = new Vector(myvec)) {
     48        Assert.AreEqual(3, vector.Length);
     49        Assert.AreEqual(myvec[0], vector[0]);
     50        Assert.AreEqual(myvec[1], vector[1]);
     51        Assert.AreEqual(myvec[2], vector[2]);
     52      }
    4853    }
    4954
     
    5358    [TestProperty("Time", "short")]
    5459    public void IGraphWrappersVectorGetSetTest() {
    55       var vector = new Vector(5);
    56       vector[0] = vector[1] = 4;
    57       vector[2] = 3;
    58       vector[3] = 1.5;
    59       vector[4] = -0.5;
    60       Assert.AreEqual(4, vector[0]);
    61       Assert.AreEqual(4, vector[1]);
    62       Assert.AreEqual(3, vector[2]);
    63       Assert.AreEqual(1.5, vector[3]);
    64       Assert.AreEqual(-0.5, vector[4]);
     60      using (var vector = new Vector(5)) {
     61        vector[0] = vector[1] = 4;
     62        vector[2] = 3;
     63        vector[3] = 1.5;
     64        vector[4] = -0.5;
     65        Assert.AreEqual(4, vector[0]);
     66        Assert.AreEqual(4, vector[1]);
     67        Assert.AreEqual(3, vector[2]);
     68        Assert.AreEqual(1.5, vector[3]);
     69        Assert.AreEqual(-0.5, vector[4]);
    6570
    66       var netmat = vector.ToArray();
    67       Assert.AreEqual(5, netmat.Length);
    68       for (var i = 0; i < netmat.Length; i++)
    69         Assert.AreEqual(vector[i], netmat[i]);
     71        var netmat = vector.ToArray();
     72        Assert.AreEqual(5, netmat.Length);
     73        for (var i = 0; i < netmat.Length; i++)
     74          Assert.AreEqual(vector[i], netmat[i]);
     75      }
    7076    }
    7177
     
    7581    [TestProperty("Time", "short")]
    7682    public void IGraphWrappersVectorFillTest() {
    77       var vector = new Vector(5);
    78       vector.Fill(2.3);
    79       Assert.IsTrue(new[] { 2.3, 2.3, 2.3, 2.3, 2.3 }.SequenceEqual(vector.ToArray()));
     83      using (var vector = new Vector(5)) {
     84        vector.Fill(2.3);
     85        Assert.IsTrue(new[] { 2.3, 2.3, 2.3, 2.3, 2.3 }.SequenceEqual(vector.ToArray()));
     86      }
    8087    }
    8188
     
    8592    [TestProperty("Time", "short")]
    8693    public void IGraphWrappersVectorReverseTest() {
    87       var vector = new Vector(5);
    88       vector[0] = vector[1] = 4;
    89       vector[2] = 3;
    90       vector[3] = 1.5;
    91       vector[4] = -0.5;
    92       vector.Reverse();
    93       Assert.IsTrue(new[] { -0.5, 1.5, 3, 4, 4 }.SequenceEqual(vector.ToArray()));
     94      using (var vector = new Vector(5)) {
     95        vector[0] = vector[1] = 4;
     96        vector[2] = 3;
     97        vector[3] = 1.5;
     98        vector[4] = -0.5;
     99        vector.Reverse();
     100        Assert.IsTrue(new[] { -0.5, 1.5, 3, 4, 4 }.SequenceEqual(vector.ToArray()));
     101      }
    94102    }
    95103
     
    99107    [TestProperty("Time", "short")]
    100108    public void IGraphWrappersVectorShuffleTest() {
    101       var vector = new Vector(5);
    102       vector[0] = vector[1] = 4;
    103       vector[2] = 3;
    104       vector[3] = 1.5;
    105       vector[4] = -0.5;
    106       vector.Shuffle();
    107       Assert.IsFalse(new[] { -0.5, 1.5, 3, 4, 4 }.SequenceEqual(vector.ToArray()));
    108       Assert.IsFalse(new[] { 4, 4, 3, 1.5, -0.5 }.SequenceEqual(vector.ToArray()));
     109      var different = new HashSet<RealVector>(new RealVectorEqualityComparer());
     110      for (var i = 0; i < 100; i++) {
     111        using (var vector = new Vector(5)) {
     112          vector[0] = vector[1] = 4;
     113          vector[2] = 3;
     114          vector[3] = 1.5;
     115          vector[4] = -0.5;
     116          vector.Shuffle();
     117          var result = vector.ToArray();
     118          different.Add(new RealVector(result));
     119          Assert.AreEqual(2, result.Count(x => x == 4));
     120          Assert.AreEqual(1, result.Count(x => x == 3));
     121          Assert.AreEqual(1, result.Count(x => x == 1.5));
     122          Assert.AreEqual(1, result.Count(x => x == -0.5));
     123        }
     124      }
     125      // There should be reasonable low probability that all 100 shuffles result in exactly the same vector
     126      Assert.IsTrue(different.Count > 1);
     127      Assert.IsTrue(different.Count <= 60); // there are a total of 60 different shuffles 5! / 2!
     128      Console.WriteLine("Shuffle produced " + different.Count + " unique vectors");
    109129    }
    110130
     
    114134    [TestProperty("Time", "short")]
    115135    public void IGraphWrappersVectorScaleTest() {
    116       var vector = new Vector(5);
    117       vector[0] = vector[1] = 4;
    118       vector[2] = 3;
    119       vector[3] = 1.5;
    120       vector[4] = -0.5;
    121       vector.Scale(2);
    122       Assert.IsTrue(new double[] { 8, 8, 6, 3, -1 }.SequenceEqual(vector.ToArray()));
     136      using (var vector = new Vector(5)) {
     137        vector[0] = vector[1] = 4;
     138        vector[2] = 3;
     139        vector[3] = 1.5;
     140        vector[4] = -0.5;
     141        vector.Scale(2);
     142        Assert.IsTrue(new double[] { 8, 8, 6, 3, -1 }.SequenceEqual(vector.ToArray()));
     143      }
    123144    }
    124145  }
Note: See TracChangeset for help on using the changeset viewer.