public void AndSafe_works() { long[][] args = new[] { null, RndLarge(2), RndLarge(3) }; for (var i = 0; i < 3; ++i) { for (var j = 0; j < 3; ++j) { for (var k = 0; k < 3; ++k) { if (i * j * k != 1 && i * j * k != 8) { Assert.False(BitVectorHelpers.AndSafe(args[i], args[j], args[k])); } } } } var x = RndLarge(3); var y = RndLarge(3); var z = _0(3); var ok = x.AndSafe(y, z); Assert.True(ok); for (var n = 0; n < 3; ++n) { z[n] = x[n] & y[n]; } }
public void NotSafe_works() { Assert.False(BitVectorHelpers.NotSafe(null, RndLarge(3))); Assert.False(BitVectorHelpers.NotSafe(RndLarge(3), null)); Assert.False(BitVectorHelpers.NotSafe(RndLarge(2), RndLarge(3))); var vector = RndLarge(3); var result = vector.Select(x => x).ToArray(); var ok = result.NotSafe(result); Assert.True(ok); for (var n = 0; n < 3; ++n) { vector[n] = ~result[n]; } }