Browse Source

Reimplemented NDArray == and != operators, handling null values. Added unit tests.

tags/v0.100.4-load-saved-model
Superpiffer Haiping 2 years ago
parent
commit
5821275145
2 changed files with 51 additions and 4 deletions
  1. +18
    -4
      src/TensorFlowNET.Core/NumPy/NDArray.Operators.cs
  2. +33
    -0
      test/TensorFlowNET.UnitTest/NumPy/OperatorsTest.cs

+ 18
- 4
src/TensorFlowNET.Core/NumPy/NDArray.Operators.cs View File

@@ -25,10 +25,24 @@ namespace Tensorflow.NumPy
[AutoNumPy]
public static NDArray operator -(NDArray lhs) => new NDArray(gen_math_ops.neg(lhs));
[AutoNumPy]
public static NDArray operator ==(NDArray lhs, NDArray rhs)
=> rhs is null ? Scalar(false) : new NDArray(math_ops.equal(lhs, rhs));
public static NDArray operator ==(NDArray lhs, NDArray rhs)
{
if(ReferenceEquals(lhs, rhs))
return Scalar(true);
if(lhs is null)
return Scalar(false);
if(rhs is null)
return Scalar(false);
return new NDArray(math_ops.equal(lhs, rhs));
}
[AutoNumPy]
public static NDArray operator !=(NDArray lhs, NDArray rhs)
=> new NDArray(math_ops.not_equal(lhs, rhs));
public static NDArray operator !=(NDArray lhs, NDArray rhs)
{
if(ReferenceEquals(lhs, rhs))
return Scalar(false);
if(lhs is null || rhs is null)
return Scalar(true);
return new NDArray(math_ops.not_equal(lhs, rhs));
}
}
}

+ 33
- 0
test/TensorFlowNET.UnitTest/NumPy/OperatorsTest.cs View File

@@ -0,0 +1,33 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Tensorflow.NumPy;

namespace TensorFlowNET.UnitTest.NumPy
{
[TestClass]
public class OperatorsTest
{
[TestMethod]
public void EqualToOperator()
{
NDArray n1 = null;
NDArray n2 = new NDArray(1);

Assert.IsTrue(n1 == null);
Assert.IsFalse(n2 == null);
Assert.IsFalse(n1 == 1);
Assert.IsTrue(n2 == 1);
}

[TestMethod]
public void NotEqualToOperator()
{
NDArray n1 = null;
NDArray n2 = new NDArray(1);

Assert.IsFalse(n1 != null);
Assert.IsTrue(n2 != null);
Assert.IsTrue(n1 != 1);
Assert.IsFalse(n2 != 1);
}
}
}

Loading…
Cancel
Save