コード例 #1
0
        public void Equality()
        {
            var signer = new PrivateKey();
            AppProtocolVersion claim =
                AppProtocolVersion.Sign(signer, 123, (Bencodex.Types.Text) "foo");

            var claim2 = new AppProtocolVersion(124, claim.Extra, claim.Signature, claim.Signer);

            Assert.False(((IEquatable <AppProtocolVersion>)claim).Equals(claim2));
            Assert.False(((object)claim).Equals(claim2));
            Assert.NotEqual(claim.GetHashCode(), claim2.GetHashCode());
            Assert.False(claim == claim2);
            Assert.True(claim != claim2);

            var claim3 = new AppProtocolVersion(
                claim.Version,
                Bencodex.Types.Null.Value,
                claim.Signature,
                claim.Signer
                );

            Assert.False(((IEquatable <AppProtocolVersion>)claim).Equals(claim3));
            Assert.False(((object)claim).Equals(claim3));
            Assert.NotEqual(claim.GetHashCode(), claim3.GetHashCode());
            Assert.False(claim == claim3);
            Assert.True(claim != claim3);

            var claim4 = new AppProtocolVersion(
                claim.Version,
                claim.Extra,
                ImmutableArray <byte> .Empty,
                claim.Signer
                );

            Assert.False(((IEquatable <AppProtocolVersion>)claim).Equals(claim4));
            Assert.False(((object)claim).Equals(claim4));
            Assert.NotEqual(claim.GetHashCode(), claim4.GetHashCode());
            Assert.False(claim == claim4);
            Assert.True(claim != claim4);

            var claim5 = new AppProtocolVersion(
                claim.Version,
                claim.Extra,
                claim.Signature,
                new PrivateKey().ToAddress()
                );

            Assert.False(((IEquatable <AppProtocolVersion>)claim).Equals(claim5));
            Assert.False(((object)claim).Equals(claim5));
            Assert.NotEqual(claim.GetHashCode(), claim5.GetHashCode());
            Assert.False(claim == claim5);
            Assert.True(claim != claim5);

            var codec     = new Codec();
            var sameClaim = new AppProtocolVersion(
                claim.Version,
                codec.Decode(codec.Encode(claim.Extra)),
                ImmutableArray.Create(claim.Signature, 0, claim.Signature.Length),
                new Address(claim.Signer.ByteArray)
                );

            Assert.True(((IEquatable <AppProtocolVersion>)claim).Equals(sameClaim));
            Assert.True(((object)claim).Equals(sameClaim));
            Assert.Equal(claim.GetHashCode(), sameClaim.GetHashCode());
            Assert.True(claim == sameClaim);
            Assert.False(claim != sameClaim);

            AppProtocolVersion claimWithoutExtra = AppProtocolVersion.Sign(signer, 1);
            var sameClaimWithoutExtra            = new AppProtocolVersion(
                claimWithoutExtra.Version,
                claimWithoutExtra.Extra,
                ImmutableArray.Create(
                    claimWithoutExtra.Signature,
                    0,
                    claimWithoutExtra.Signature.Length
                    ),
                new Address(claimWithoutExtra.Signer.ByteArray)
                );

            Assert.True(
                ((IEquatable <AppProtocolVersion>)claimWithoutExtra).Equals(sameClaimWithoutExtra)
                );
            Assert.True(((object)claimWithoutExtra).Equals(sameClaimWithoutExtra));
            Assert.Equal(claimWithoutExtra.GetHashCode(), sameClaimWithoutExtra.GetHashCode());
            Assert.True(claimWithoutExtra == sameClaimWithoutExtra);
            Assert.False(claimWithoutExtra != sameClaimWithoutExtra);
        }