public void SubtractSingleValues() { INode <int> left = new SingleValue <int>(43); INode <int> right = new SingleValue <int>(1); var add = new SubtractIntegerOperation(left, right); Assert.AreEqual(left.Rank, add.Rank); Assert.IsTrue(left.Shape.SequenceEqual(right.Shape)); var result = add.Evaluate(); Assert.IsNotNull(result); Assert.AreEqual(left.Rank, result.Rank); Assert.IsTrue(left.Shape.SequenceEqual(result.Shape)); Assert.AreEqual(42, result.GetValue()); }
public void SubtractVectors() { INode <int> left = new Vector <int>(new int[] { 1, 2, 3 }); INode <int> right = new Vector <int>(new int[] { 4, 5, 6 }); var add = new SubtractIntegerOperation(left, right); Assert.AreEqual(left.Rank, add.Rank); Assert.IsTrue(left.Shape.SequenceEqual(right.Shape)); var result = add.Evaluate(); Assert.IsNotNull(result); Assert.AreEqual(left.Rank, result.Rank); Assert.IsTrue(left.Shape.SequenceEqual(result.Shape)); Assert.AreEqual(-3, result.GetValue(0)); Assert.AreEqual(-3, result.GetValue(1)); Assert.AreEqual(-3, result.GetValue(2)); }
public void SubtractMatrices() { INode <int> left = new Matrix <int>(new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } }); INode <int> right = new Matrix <int>(new int[][] { new int[] { 10, 20, 30 }, new int[] { 40, 50, 60 } }); var add = new SubtractIntegerOperation(left, right); Assert.AreEqual(left.Rank, add.Rank); Assert.IsTrue(left.Shape.SequenceEqual(right.Shape)); var result = add.Evaluate(); Assert.IsNotNull(result); Assert.AreEqual(left.Rank, result.Rank); Assert.IsTrue(left.Shape.SequenceEqual(result.Shape)); Assert.AreEqual(-9, result.GetValue(0, 0)); Assert.AreEqual(-18, result.GetValue(0, 1)); Assert.AreEqual(-27, result.GetValue(0, 2)); Assert.AreEqual(-36, result.GetValue(1, 0)); Assert.AreEqual(-45, result.GetValue(1, 1)); Assert.AreEqual(-54, result.GetValue(1, 2)); }