public void TestAddCallsAlgebra() { var algebraMock = new Mock <ICryptoGroupAlgebra <BigInteger, int> >(MockBehavior.Strict); algebraMock.Setup(algebra => algebra.Add(2, 6)).Returns(8); algebraMock.Setup(algebra => algebra.IsPotentialElement(It.IsAny <int>())).Returns(true); var left = new CryptoGroupElement <BigInteger, int>(2, algebraMock.Object); var right = new CryptoGroupElement <BigInteger, int>(6, algebraMock.Object); var expected = new CryptoGroupElement <BigInteger, int>(8, algebraMock.Object); var group = new CryptoGroup <BigInteger, int>(algebraMock.Object); Assert.AreEqual(expected, group.Add(left, right)); algebraMock.Verify(algebra => algebra.Add(2, 6), Times.Once()); }
public void TestAddRejectsDifferentGroupElementRight() { var algebraStub = new Mock <ICryptoGroupAlgebra <BigInteger, int> >(MockBehavior.Strict); algebraStub.Setup(algebra => algebra.IsPotentialElement(It.IsAny <int>())).Returns(true); var group = new CryptoGroup <BigInteger, int>(algebraStub.Object); var otherAlgebraStub = new Mock <ICryptoGroupAlgebra <BigInteger, int> >(MockBehavior.Strict); otherAlgebraStub.Setup(algebra => algebra.IsPotentialElement(It.IsAny <int>())).Returns(true); var element = new CryptoGroupElement <BigInteger, int>(3, algebraStub.Object); var otherElement = new CryptoGroupElement <BigInteger, int>(3, otherAlgebraStub.Object); Assert.Throws <ArgumentException>( () => group.Add(element, otherElement) ); }