TestNetworkLinkIdHashingWindows.cpp (2461B)
1 #include <combaseapi.h> 2 3 #include "gtest/gtest.h" 4 #include "mozilla/SHA1.h" 5 #include "nsNotifyAddrListener.h" 6 7 using namespace mozilla; 8 9 GUID StringToGuid(const std::string& str) { 10 GUID guid; 11 sscanf(str.c_str(), 12 "%8lx-%4hx-%4hx-%2hhx%2hhx-%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx", 13 &guid.Data1, &guid.Data2, &guid.Data3, &guid.Data4[0], &guid.Data4[1], 14 &guid.Data4[2], &guid.Data4[3], &guid.Data4[4], &guid.Data4[5], 15 &guid.Data4[6], &guid.Data4[7]); 16 17 return guid; 18 } 19 20 TEST(TestGuidHashWindows, Single) 21 { 22 // Setup 23 SHA1Sum expected_sha1; 24 SHA1Sum::Hash expected_digest; 25 26 GUID g1 = StringToGuid("264555b1-289c-4494-83d1-e158d1d95115"); 27 28 expected_sha1.update(&g1, sizeof(GUID)); 29 expected_sha1.finish(expected_digest); 30 31 std::vector<GUID> nwGUIDS; 32 nwGUIDS.push_back(g1); 33 SHA1Sum actual_sha1; 34 // Run 35 nsNotifyAddrListener::HashSortedNetworkIds(nwGUIDS, actual_sha1); 36 SHA1Sum::Hash actual_digest; 37 actual_sha1.finish(actual_digest); 38 39 // Assert 40 ASSERT_EQ(0, memcmp(&expected_digest, &actual_digest, sizeof(SHA1Sum::Hash))); 41 } 42 43 TEST(TestNetworkLinkIdHashingWindows, Multiple) 44 { 45 // Setup 46 SHA1Sum expected_sha1; 47 SHA1Sum::Hash expected_digest; 48 49 std::vector<GUID> nwGUIDS; 50 nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000001")); 51 nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000002")); 52 nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000003")); 53 nwGUIDS.push_back(StringToGuid("00000000-0000-0000-0000-000000000004")); 54 55 for (const auto& guid : nwGUIDS) { 56 expected_sha1.update(&guid, sizeof(GUID)); 57 } 58 expected_sha1.finish(expected_digest); 59 60 // Ordered 61 std::vector<GUID> ordered; 62 for (const auto& guid : nwGUIDS) { 63 ordered.push_back(guid); 64 } 65 SHA1Sum ordered_sha1; 66 67 // Unordered 68 std::vector<GUID> reversed; 69 for (auto it = nwGUIDS.rbegin(); it != nwGUIDS.rend(); ++it) { 70 reversed.push_back(*it); 71 } 72 SHA1Sum reversed_sha1; 73 74 // Run 75 nsNotifyAddrListener::HashSortedNetworkIds(ordered, ordered_sha1); 76 SHA1Sum::Hash ordered_digest; 77 ordered_sha1.finish(ordered_digest); 78 79 nsNotifyAddrListener::HashSortedNetworkIds(reversed, reversed_sha1); 80 SHA1Sum::Hash reversed_digest; 81 reversed_sha1.finish(reversed_digest); 82 83 // Assert 84 ASSERT_EQ(0, 85 memcmp(&expected_digest, &ordered_digest, sizeof(SHA1Sum::Hash))); 86 ASSERT_EQ(0, 87 memcmp(&expected_digest, &reversed_digest, sizeof(SHA1Sum::Hash))); 88 }