CmisSync.Lib.Storage.Database.Entities.FileTransmissionObject.Equals C# (CSharp) Method

Equals() public method

Determines whether the specified System.Object is equal to the current CmisSync.Lib.Storage.Database.Entities.FileTransmissionObject.
public Equals ( object obj ) : bool
obj object The to compare with the current .
return bool
        public override bool Equals(object obj) {
            if (obj == null) {
                return false;
            }

            if (this == obj) {
                return true;
            }

            // If parameter cannot be casted to FileTransmissionObject return false.
            FileTransmissionObject o = obj as FileTransmissionObject;
            if (o == null) {
                return false;
            }

            return this.Type.Equals(o.Type) &&
                object.Equals(this.LocalPath, o.LocalPath) &&
                    ((this.LastChecksum == null && o.LastChecksum == null) || (this.LastChecksum != null && o.LastChecksum != null && this.LastChecksum.SequenceEqual(o.LastChecksum))) &&
                    object.Equals(this.ChecksumAlgorithmName, o.ChecksumAlgorithmName) &&
                    object.Equals(this.LastLocalWriteTimeUtc, o.LastLocalWriteTimeUtc) &&
                    object.Equals(this.RemoteObjectId, o.RemoteObjectId) &&
                    object.Equals(this.LastChangeToken, o.LastChangeToken) &&
                    object.Equals(this.LastRemoteWriteTimeUtc, o.LastRemoteWriteTimeUtc);
        }

Usage Example

        public void ConstructorTakesData() {
            var remoteFile = new Mock<IDocument>();
            remoteFile.Setup(m => m.Paths).Returns(new List<string>() { "/RemoteFile" });
            remoteFile.Setup(m => m.Id).Returns("RemoteId");
            remoteFile.Setup(m => m.ChangeToken).Returns("ChangeToken");
            remoteFile.Setup(m => m.LastModificationDate).Returns(LocalFile.Object.LastWriteTimeUtc);
            remoteFile.Setup(m => m.VersionSeriesCheckedOutId).Returns("RemotePWCId");
            var obj = new FileTransmissionObject(TransmissionType.UPLOAD_NEW_FILE, LocalFile.Object, remoteFile.Object);
            Assert.AreEqual(TransmissionType.UPLOAD_NEW_FILE, obj.Type);
            Assert.AreEqual(LocalFile.Object.FullName, obj.LocalPath);
            Assert.AreEqual(LocalFile.Object.Length, obj.LastContentSize);
            Assert.AreEqual(null, obj.LastChecksum);
            Assert.AreEqual(null, obj.ChecksumAlgorithmName);
            Assert.AreEqual(LocalFile.Object.LastWriteTimeUtc, obj.LastLocalWriteTimeUtc);
            Assert.AreEqual("RemoteId", obj.RemoteObjectId);
            Assert.AreEqual("ChangeToken", obj.LastChangeToken);
            Assert.AreEqual("RemotePWCId", obj.RemoteObjectPWCId);
            Assert.AreEqual(LocalFile.Object.LastWriteTimeUtc, obj.LastRemoteWriteTimeUtc);
            var obj2 = new FileTransmissionObject(TransmissionType.UPLOAD_NEW_FILE, LocalFile.Object, remoteFile.Object);
            Assert.IsTrue(obj.Equals(obj2));

            obj.ChecksumAlgorithmName = "SHA1";
            Assert.AreEqual("SHA1", obj.ChecksumAlgorithmName);
            obj.LastChecksum = new byte[32];
            using (var random = RandomNumberGenerator.Create()) {
                random.GetBytes(obj.LastChecksum);
            }

            Assert.IsFalse(obj.Equals(obj2));

            obj2.ChecksumAlgorithmName = "SHA1";
            obj2.LastChecksum = new byte[32];
            using (var random = RandomNumberGenerator.Create()) {
                random.GetBytes(obj.LastChecksum);
            }

            Assert.IsFalse(obj.Equals(obj2));

            Buffer.BlockCopy(obj2.LastChecksum, 0, obj.LastChecksum, 0, 32);
            Assert.IsTrue(obj.Equals(obj2));
        }