コード例 #1
0
ファイル: UuidTests.cs プロジェクト: prosys/Win2D
        public void Version5UuidTest()
        {
            string name1 = "Hello";
            string name2 = "World";

            Guid salt1 = new Guid("A911588C-DB0A-41D2-AF64-EBEC037294D0");
            Guid salt2 = new Guid("88B56025-60BC-4FE9-AA3F-1148BD0C653E");

            Guid result11 = UuidHelper.GetVersion5Uuid(salt1, name1);
            Guid result12 = UuidHelper.GetVersion5Uuid(salt1, name2);
            Guid result21 = UuidHelper.GetVersion5Uuid(salt2, name1);
            Guid result22 = UuidHelper.GetVersion5Uuid(salt2, name2);

            // Validate against a hard-coded expected result.
            Assert.AreEqual(new Guid("C3091B3B-5718-5928-8CBF-41298EF7C614"), result11);

            // All results should be different (changing either name or salt alters the UUID).
            Assert.AreNotEqual(result11, result12);
            Assert.AreNotEqual(result11, result21);
            Assert.AreNotEqual(result11, result22);
            Assert.AreNotEqual(result12, result21);
            Assert.AreNotEqual(result12, result22);
            Assert.AreNotEqual(result21, result22);

            // Hashing the same inputs a second time should give the same results as before.
            Assert.AreEqual(result11, UuidHelper.GetVersion5Uuid(salt1, name1));
            Assert.AreEqual(result12, UuidHelper.GetVersion5Uuid(salt1, name2));
            Assert.AreEqual(result21, UuidHelper.GetVersion5Uuid(salt2, name1));
            Assert.AreEqual(result22, UuidHelper.GetVersion5Uuid(salt2, name2));

            // All should be marked as standard RFC 4122 UUID variant.
            Assert.AreEqual(2, GetUuidVariant(result11));
            Assert.AreEqual(2, GetUuidVariant(result12));
            Assert.AreEqual(2, GetUuidVariant(result21));
            Assert.AreEqual(2, GetUuidVariant(result22));

            // All should be marked as version 5 (SHA-1 name-based) UUID.
            Assert.AreEqual(5, GetUuidVersion(result11));
            Assert.AreEqual(5, GetUuidVersion(result12));
            Assert.AreEqual(5, GetUuidVersion(result21));
            Assert.AreEqual(5, GetUuidVersion(result22));

            // Sanity check our GetUuidVariant and GetUUidVersion methods against standard (version 4) UUIDs.
            Assert.AreEqual(2, GetUuidVariant(salt1));
            Assert.AreEqual(2, GetUuidVariant(salt2));

            Assert.AreEqual(4, GetUuidVersion(salt1));
            Assert.AreEqual(4, GetUuidVersion(salt2));
        }