/src/mozilla-central/toolkit/components/url-classifier/tests/gtest/TestSafebrowsingHash.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | #include "Entries.h" |
2 | | #include "mozilla/EndianUtils.h" |
3 | | |
4 | | TEST(UrlClassifierHash, ToFromUint32) |
5 | 0 | { |
6 | 0 | using namespace mozilla::safebrowsing; |
7 | 0 |
|
8 | 0 | // typedef SafebrowsingHash<PREFIX_SIZE, PrefixComparator> Prefix; |
9 | 0 | // typedef nsTArray<Prefix> PrefixArray; |
10 | 0 |
|
11 | 0 | const char PREFIX_RAW[4] = { 0x1, 0x2, 0x3, 0x4 }; |
12 | 0 | uint32_t PREFIX_UINT32; |
13 | 0 | memcpy(&PREFIX_UINT32, PREFIX_RAW, 4); |
14 | 0 |
|
15 | 0 | Prefix p; |
16 | 0 | p.Assign(nsCString(PREFIX_RAW, 4)); |
17 | 0 | ASSERT_EQ(p.ToUint32(), PREFIX_UINT32); |
18 | 0 |
|
19 | 0 | p.FromUint32(PREFIX_UINT32); |
20 | 0 | ASSERT_EQ(memcmp(PREFIX_RAW, p.buf, 4), 0); |
21 | 0 | } |
22 | | |
23 | | TEST(UrlClassifierHash, Compare) |
24 | 0 | { |
25 | 0 | using namespace mozilla; |
26 | 0 | using namespace mozilla::safebrowsing; |
27 | 0 |
|
28 | 0 | Prefix p1, p2, p3; |
29 | 0 |
|
30 | 0 | // The order of p1,p2,p3 is "p1 == p3 < p2" |
31 | 0 | #if MOZ_LITTLE_ENDIAN |
32 | 0 | p1.Assign(nsCString("\x01\x00\x00\x00", 4)); |
33 | 0 | p2.Assign(nsCString("\x00\x00\x00\x01", 4)); |
34 | 0 | p3.Assign(nsCString("\x01\x00\x00\x00", 4)); |
35 | | #else |
36 | | p1.Assign(nsCString("\x00\x00\x00\x01", 4)); |
37 | | p2.Assign(nsCString("\x01\x00\x00\x00", 4)); |
38 | | p3.Assign(nsCString("\x00\x00\x00\x01", 4)); |
39 | | #endif |
40 | |
|
41 | 0 | // Make sure "p1 == p3 < p2" is true |
42 | 0 | // on both little and big endian machine. |
43 | 0 |
|
44 | 0 | ASSERT_EQ(p1.Compare(p2), -1); |
45 | 0 | ASSERT_EQ(p1.Compare(p1), 0); |
46 | 0 | ASSERT_EQ(p2.Compare(p1), 1); |
47 | 0 | ASSERT_EQ(p1.Compare(p3), 0); |
48 | 0 |
|
49 | 0 | ASSERT_TRUE(p1 < p2); |
50 | 0 | ASSERT_TRUE(p1 == p1); |
51 | 0 | ASSERT_TRUE(p1 == p3); |
52 | 0 | } |