public void TestGetLogicalOperationFunctionAnd()
        {
            var logicalAnd = WaveMath.GetLogicalOperationFunction(WaveMath.LogicalOperationEnum.And);

            Assert.AreEqual(0, logicalAnd(0, 0));
            Assert.AreEqual(0, logicalAnd(0, 1));
            Assert.AreEqual(0, logicalAnd(1, 0));
            Assert.AreEqual(1, logicalAnd(1, 1));
            Assert.AreEqual(0, logicalAnd(0, -1));
            Assert.AreEqual(0, logicalAnd(-1, 0));
            Assert.AreEqual(1, logicalAnd(-1, -1));
        }
        public void TestGetLogicalOperationFunctionNot()
        {
            var logicalNot = WaveMath.GetLogicalOperationFunction(WaveMath.LogicalOperationEnum.Not);

            Assert.AreEqual(1, logicalNot(0, 0)); //The second parameter is not used...
            Assert.AreEqual(1, logicalNot(0, 1));
            Assert.AreEqual(0, logicalNot(1, 0));
            Assert.AreEqual(0, logicalNot(1, 1));
            Assert.AreEqual(1, logicalNot(0, -1));
            Assert.AreEqual(0, logicalNot(-1, 0));
            Assert.AreEqual(0, logicalNot(-1, -1));
        }
        public void TestGetLogicalOperationFunctionNotXor()
        {
            var logicalNotXor = WaveMath.GetLogicalOperationFunction(WaveMath.LogicalOperationEnum.NotXor);

            Assert.AreEqual(1, logicalNotXor(0, 0));
            Assert.AreEqual(0, logicalNotXor(0, 1));
            Assert.AreEqual(0, logicalNotXor(1, 0));
            Assert.AreEqual(1, logicalNotXor(1, 1));
            Assert.AreEqual(0, logicalNotXor(0, -1));
            Assert.AreEqual(0, logicalNotXor(-1, 0));
            Assert.AreEqual(1, logicalNotXor(-1, -1));
        }