1 #include <combaseapi.h>
3 #include "gtest/gtest.h"
4 #include "mozilla/SHA1.h"
5 #include "nsNotifyAddrListener.h"
7 using namespace mozilla
;
9 GUID
StringToGuid(const std::string
& 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]);
20 TEST(TestGuidHashWindows
, Single
)
23 SHA1Sum expected_sha1
;
24 SHA1Sum::Hash expected_digest
;
26 GUID g1
= StringToGuid("264555b1-289c-4494-83d1-e158d1d95115");
28 expected_sha1
.update(&g1
, sizeof(GUID
));
29 expected_sha1
.finish(expected_digest
);
31 std::vector
<GUID
> nwGUIDS
;
32 nwGUIDS
.push_back(g1
);
35 nsNotifyAddrListener::HashSortedNetworkIds(nwGUIDS
, actual_sha1
);
36 SHA1Sum::Hash actual_digest
;
37 actual_sha1
.finish(actual_digest
);
40 ASSERT_EQ(0, memcmp(&expected_digest
, &actual_digest
, sizeof(SHA1Sum::Hash
)));
43 TEST(TestNetworkLinkIdHashingWindows
, Multiple
)
46 SHA1Sum expected_sha1
;
47 SHA1Sum::Hash expected_digest
;
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"));
55 for (const auto& guid
: nwGUIDS
) {
56 expected_sha1
.update(&guid
, sizeof(GUID
));
58 expected_sha1
.finish(expected_digest
);
61 std::vector
<GUID
> ordered
;
62 for (const auto& guid
: nwGUIDS
) {
63 ordered
.push_back(guid
);
68 std::vector
<GUID
> reversed
;
69 for (auto it
= nwGUIDS
.rbegin(); it
!= nwGUIDS
.rend(); ++it
) {
70 reversed
.push_back(*it
);
72 SHA1Sum reversed_sha1
;
75 nsNotifyAddrListener::HashSortedNetworkIds(ordered
, ordered_sha1
);
76 SHA1Sum::Hash ordered_digest
;
77 ordered_sha1
.finish(ordered_digest
);
79 nsNotifyAddrListener::HashSortedNetworkIds(reversed
, reversed_sha1
);
80 SHA1Sum::Hash reversed_digest
;
81 reversed_sha1
.finish(reversed_digest
);
85 memcmp(&expected_digest
, &ordered_digest
, sizeof(SHA1Sum::Hash
)));
87 memcmp(&expected_digest
, &reversed_digest
, sizeof(SHA1Sum::Hash
)));