public static void TestCloneCompare(Assert assert) { assert.Expect(13); var v1 = new Version(1, 2, 3, (4 << 16) + 5); var o = v1.Clone(); assert.Ok(o != null, "v1 Cloned"); var v2 = o as Version; assert.Ok(v2 != null, "v1 Cloned as Version"); assert.Equal(v2.Major, 1, "v2.Major 1"); assert.Equal(v2.Minor, 2, "v2.Minor 2"); assert.Equal(v2.Build, 3, "v2.Build 3"); assert.Equal(v2.Revision, 262149, "v2.Revision (4 << 16) + 5 = 262149"); assert.Equal(v2.MajorRevision, 4, "v2.MajorRevision 4"); assert.Equal(v2.MinorRevision, 5, "v2.MinorRevision 5"); var v3 = new Version(1, 2, 2, (4 << 16) + 5); assert.Equal(v1.CompareTo(v3), 1, "v1.CompareTo(v3)"); var v4 = new Version(1, 3, 3, (4 << 16) + 5); assert.Equal(v1.CompareTo(v4), -1, "v1.CompareTo(v4)"); assert.Equal(v1.CompareTo(o), 0, "v1.CompareTo(o)"); assert.Equal(v1.CompareTo(v2), 0, "v1.CompareTo(v2)"); assert.NotEqual(v1.CompareTo(null), 0, "v1.CompareTo(null)"); }