public void TestEquivalence() { Fingerprint fp1 = new Fingerprint(65); Fingerprint fp2 = new Fingerprint(65); Fingerprint fp3 = new Fingerprint(64); Fingerprint fp4 = new Fingerprint(66); // Reference first Assert.True(fp1.IsEquivalent(fp1)); Assert.True(fp2.IsEquivalent(fp2)); Assert.True(fp3.IsEquivalent(fp3)); Assert.True(fp4.IsEquivalent(fp4)); // Length second Assert.True(fp3.IsEquivalent(fp1)); Assert.False(fp1.IsEquivalent(fp3)); Assert.False(fp4.IsEquivalent(fp2)); Assert.True(fp2.IsEquivalent(fp4)); // Bits third Assert.True(fp1.IsEquivalent(fp2)); Assert.True(fp2.IsEquivalent(fp1)); fp1.Touch(32); Assert.False(fp1.IsEquivalent(fp2)); Assert.True(fp2.IsEquivalent(fp1)); fp2.Touch(32); Assert.True(fp1.IsEquivalent(fp2)); Assert.True(fp2.IsEquivalent(fp1)); fp2.Touch(31); Assert.True(fp1.IsEquivalent(fp2)); Assert.False(fp2.IsEquivalent(fp1)); fp4.Touch(31); fp4.Touch(32); fp4.Touch(33); Assert.True(fp2.IsEquivalent(fp4)); Assert.False(fp4.IsEquivalent(fp2)); }