From 5ee5e3526746bc365bed4dee63dceff1055600f3 Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Thu, 13 Oct 2011 01:06:58 +0200 Subject: [PATCH] Unit Tests: more compact yet also more thorough. note on gh-21. --- .../VectorArithmeticTheory.cs | 113 ++++++++---------- 1 file changed, 50 insertions(+), 63 deletions(-) diff --git a/src/UnitTests/LinearAlgebraTests/VectorArithmeticTheory.cs b/src/UnitTests/LinearAlgebraTests/VectorArithmeticTheory.cs index 4b5338ea..efc8c648 100644 --- a/src/UnitTests/LinearAlgebraTests/VectorArithmeticTheory.cs +++ b/src/UnitTests/LinearAlgebraTests/VectorArithmeticTheory.cs @@ -43,117 +43,104 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests private T Subtract(T first, T second) { return Add(first, Minus(second)); } [Theory, Timeout(100)] - public void CanCloneVectorUsingUnaryPlusOperator(Vector vector) + public void CanPlusVector(Vector vector) { var hash = vector.GetHashCode(); - var result = +vector; + var result1 = +vector; + var result2 = vector.Plus(); Assert.That(vector.GetHashCode(), Is.EqualTo(hash)); - Assert.That(result, Is.Not.SameAs(vector)); - Assert.That(result.Equals(vector)); + Assert.That(result1, Is.Not.SameAs(vector)); + Assert.That(result1.Equals(vector)); + Assert.That(result2, Is.Not.SameAs(vector)); + Assert.That(result2.Equals(vector)); + Assert.That(result1.Equals(result2)); } [Theory, Timeout(100)] - public void CanNegateVectorUsingUnaryMinusOperator(Vector vector) + public void CanNegateVector(Vector vector) { var hash = vector.GetHashCode(); - var result = -vector; + var result1 = -vector; + var result2 = vector.Negate(); Assert.That(vector.GetHashCode(), Is.EqualTo(hash)); - Assert.That(result, Is.Not.SameAs(vector)); - Assert.That((-result).Equals(vector)); + Assert.That(result1, Is.Not.SameAs(vector)); + Assert.That((-result1).Equals(vector)); + Assert.That(result2, Is.Not.SameAs(vector)); + Assert.That((-result2).Equals(vector)); + Assert.That(result1.Equals(result2)); for (var i = 0; i < Math.Min(vector.Count, 20); i++) { - Assert.That(result[i], Is.EqualTo(Minus(vector[i])), i.ToString()); + Assert.That(result1[i], Is.EqualTo(Minus(vector[i])), i.ToString()); + Assert.That(result2[i], Is.EqualTo(Minus(vector[i])), i.ToString()); } } [Theory, Timeout(100)] - public void CanAddTwoVectorsUsingOperator(Vector a, Vector b) + public void CanAddTwoVectors(Vector a, Vector b) { Assume.That(a.Count, Is.EqualTo(b.Count)); var hasha = a.GetHashCode(); var hashb = b.GetHashCode(); - var result = a + b; + var result1 = a + b; + var result2 = a.Add(b); + var result3 = a.Clone(); + result3.Add(b, result3); Assert.That(a.GetHashCode(), Is.EqualTo(hasha)); Assert.That(b.GetHashCode(), Is.EqualTo(hashb)); - Assert.That(result, Is.Not.SameAs(a)); - Assert.That(result, Is.Not.SameAs(b)); + Assert.That(result1, Is.Not.SameAs(a)); + Assert.That(result1, Is.Not.SameAs(b)); + Assert.That(result2, Is.Not.SameAs(a)); + Assert.That(result2, Is.Not.SameAs(b)); + Assert.That(result3, Is.Not.SameAs(a)); + Assert.That(result3, Is.Not.SameAs(b)); + Assert.That(result1.Equals(result2)); + Assert.That(result1.Equals(result3)); for (var i = 0; i < Math.Min(a.Count, 20); i++) { - Assert.That(result[i], Is.EqualTo(Add(a[i], b[i])), i.ToString()); + Assert.That(result1[i], Is.EqualTo(Add(a[i], b[i])), i.ToString()); + Assert.That(result2[i], Is.EqualTo(Add(a[i], b[i])), i.ToString()); + Assert.That(result3[i], Is.EqualTo(Add(a[i], b[i])), i.ToString()); } } [Theory, Timeout(100)] - public void CanAddTwoVectorsInplace(Vector a, Vector b) + public void CanSubtractTwoVectors(Vector a, Vector b) { Assume.That(a.Count, Is.EqualTo(b.Count)); var hasha = a.GetHashCode(); var hashb = b.GetHashCode(); - var result = a.Clone(); - result.Add(b, result); + var result1 = a - b; + var result2 = a.Subtract(b); + var result3 = a.Clone(); + result3.Subtract(b, result3); Assert.That(a.GetHashCode(), Is.EqualTo(hasha)); Assert.That(b.GetHashCode(), Is.EqualTo(hashb)); - Assert.That(result, Is.Not.SameAs(a)); - Assert.That(result, Is.Not.SameAs(b)); + Assert.That(result1, Is.Not.SameAs(a)); + Assert.That(result1, Is.Not.SameAs(b)); + Assert.That(result2, Is.Not.SameAs(a)); + Assert.That(result2, Is.Not.SameAs(b)); + Assert.That(result3, Is.Not.SameAs(a)); + Assert.That(result3, Is.Not.SameAs(b)); + Assert.That(result1.Equals(result2)); + // Assert.That(result1.Equals(result3)); BUG GH-21 for (var i = 0; i < Math.Min(a.Count, 20); i++) { - Assert.That(result[i], Is.EqualTo(Add(a[i], b[i])), i.ToString()); - } - } - - [Theory, Timeout(100)] - public void CanSubtractTwoVectorsUsingOperator(Vector a, Vector b) - { - Assume.That(a.Count, Is.EqualTo(b.Count)); - - var hasha = a.GetHashCode(); - var hashb = b.GetHashCode(); - - var result = a - b; - - Assert.That(a.GetHashCode(), Is.EqualTo(hasha)); - Assert.That(b.GetHashCode(), Is.EqualTo(hashb)); - Assert.That(result, Is.Not.SameAs(a)); - Assert.That(result, Is.Not.SameAs(b)); - - for (var i = 0; i < Math.Min(a.Count, 20); i++) - { - Assert.That(result[i], Is.EqualTo(Subtract(a[i], b[i])), i.ToString()); - } - } - - [Theory, Timeout(100)] - public void CanSubtractTwoVectorsInplace(Vector a, Vector b) - { - Assume.That(a.Count, Is.EqualTo(b.Count)); - - var hasha = a.GetHashCode(); - var hashb = b.GetHashCode(); - - var result = a.Clone(); - result.Subtract(b, result); - - Assert.That(a.GetHashCode(), Is.EqualTo(hasha)); - Assert.That(b.GetHashCode(), Is.EqualTo(hashb)); - Assert.That(result, Is.Not.SameAs(a)); - Assert.That(result, Is.Not.SameAs(b)); - - for (var i = 0; i < Math.Min(a.Count, 20); i++) - { - Assert.That(result[i], Is.EqualTo(Subtract(a[i], b[i])), i.ToString()); + Assert.That(result1[i], Is.EqualTo(Subtract(a[i], b[i])), i.ToString()); + Assert.That(result2[i], Is.EqualTo(Subtract(a[i], b[i])), i.ToString()); + Assert.That(result3[i], Is.EqualTo(Subtract(a[i], b[i])), i.ToString()); } } }