Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(770)

Side by Side Diff: base/md5_unittest.cc

Issue 1099453002: base: Simplify the construction of MD5Digest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: REBASE Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string.h> 5 #include <string.h>
6 #include <string> 6 #include <string>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/md5.h" 10 #include "base/md5.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace base { 13 namespace base {
14 14
15 TEST(MD5, DigestToBase16) { 15 TEST(MD5, DigestToBase16) {
16 MD5Digest digest; 16 MD5Digest digest;
17 17
18 int data[] = { 18 int data[] = {
19 0xd4, 0x1d, 0x8c, 0xd9, 19 0xd4, 0x1d, 0x8c, 0xd9,
20 0x8f, 0x00, 0xb2, 0x04, 20 0x8f, 0x00, 0xb2, 0x04,
21 0xe9, 0x80, 0x09, 0x98, 21 0xe9, 0x80, 0x09, 0x98,
22 0xec, 0xf8, 0x42, 0x7e 22 0xec, 0xf8, 0x42, 0x7e
23 }; 23 };
24 24
25 for (int i = 0; i < 16; ++i) 25 for (int i = 0; i < 16; ++i)
26 digest.a[i] = data[i] & 0xff; 26 digest[i] = data[i] & 0xff;
27 27
28 std::string actual = MD5DigestToBase16(digest); 28 std::string actual = MD5DigestToBase16(digest);
29 std::string expected = "d41d8cd98f00b204e9800998ecf8427e"; 29 std::string expected = "d41d8cd98f00b204e9800998ecf8427e";
30 30
31 EXPECT_EQ(expected, actual); 31 EXPECT_EQ(expected, actual);
32 } 32 }
33 33
34 TEST(MD5, MD5SumEmtpyData) { 34 TEST(MD5, MD5SumEmtpyData) {
35 MD5Digest digest; 35 MD5Digest digest;
36 const char data[] = ""; 36 const char data[] = "";
37 37
38 MD5Sum(data, strlen(data), &digest); 38 MD5Sum(data, strlen(data), &digest);
39 39
40 int expected[] = { 40 int expected[] = {
41 0xd4, 0x1d, 0x8c, 0xd9, 41 0xd4, 0x1d, 0x8c, 0xd9,
42 0x8f, 0x00, 0xb2, 0x04, 42 0x8f, 0x00, 0xb2, 0x04,
43 0xe9, 0x80, 0x09, 0x98, 43 0xe9, 0x80, 0x09, 0x98,
44 0xec, 0xf8, 0x42, 0x7e 44 0xec, 0xf8, 0x42, 0x7e
45 }; 45 };
46 46
47 for (int i = 0; i < 16; ++i) 47 for (int i = 0; i < 16; ++i)
48 EXPECT_EQ(expected[i], digest.a[i] & 0xFF); 48 EXPECT_EQ(expected[i], digest[i] & 0xFF);
49 } 49 }
50 50
51 TEST(MD5, MD5SumOneByteData) { 51 TEST(MD5, MD5SumOneByteData) {
52 MD5Digest digest; 52 MD5Digest digest;
53 const char data[] = "a"; 53 const char data[] = "a";
54 54
55 MD5Sum(data, strlen(data), &digest); 55 MD5Sum(data, strlen(data), &digest);
56 56
57 int expected[] = { 57 int expected[] = {
58 0x0c, 0xc1, 0x75, 0xb9, 58 0x0c, 0xc1, 0x75, 0xb9,
59 0xc0, 0xf1, 0xb6, 0xa8, 59 0xc0, 0xf1, 0xb6, 0xa8,
60 0x31, 0xc3, 0x99, 0xe2, 60 0x31, 0xc3, 0x99, 0xe2,
61 0x69, 0x77, 0x26, 0x61 61 0x69, 0x77, 0x26, 0x61
62 }; 62 };
63 63
64 for (int i = 0; i < 16; ++i) 64 for (int i = 0; i < 16; ++i)
65 EXPECT_EQ(expected[i], digest.a[i] & 0xFF); 65 EXPECT_EQ(expected[i], digest[i] & 0xFF);
66 } 66 }
67 67
68 TEST(MD5, MD5SumLongData) { 68 TEST(MD5, MD5SumLongData) {
69 const int length = 10 * 1024 * 1024 + 1; 69 const int length = 10 * 1024 * 1024 + 1;
70 scoped_ptr<char[]> data(new char[length]); 70 scoped_ptr<char[]> data(new char[length]);
71 71
72 for (int i = 0; i < length; ++i) 72 for (int i = 0; i < length; ++i)
73 data[i] = i & 0xFF; 73 data[i] = i & 0xFF;
74 74
75 MD5Digest digest; 75 MD5Digest digest;
76 MD5Sum(data.get(), length, &digest); 76 MD5Sum(data.get(), length, &digest);
77 77
78 int expected[] = { 78 int expected[] = {
79 0x90, 0xbd, 0x6a, 0xd9, 79 0x90, 0xbd, 0x6a, 0xd9,
80 0x0a, 0xce, 0xf5, 0xad, 80 0x0a, 0xce, 0xf5, 0xad,
81 0xaa, 0x92, 0x20, 0x3e, 81 0xaa, 0x92, 0x20, 0x3e,
82 0x21, 0xc7, 0xa1, 0x3e 82 0x21, 0xc7, 0xa1, 0x3e
83 }; 83 };
84 84
85 for (int i = 0; i < 16; ++i) 85 for (int i = 0; i < 16; ++i)
86 EXPECT_EQ(expected[i], digest.a[i] & 0xFF); 86 EXPECT_EQ(expected[i], digest[i] & 0xFF);
87 } 87 }
88 88
89 TEST(MD5, ContextWithEmptyData) { 89 TEST(MD5, ContextWithEmptyData) {
90 MD5Context ctx; 90 MD5Context ctx;
91 MD5Init(&ctx); 91 MD5Init(&ctx);
92 92
93 MD5Digest digest; 93 MD5Digest digest;
94 MD5Final(&digest, &ctx); 94 MD5Final(&digest, &ctx);
95 95
96 int expected[] = { 96 int expected[] = {
97 0xd4, 0x1d, 0x8c, 0xd9, 97 0xd4, 0x1d, 0x8c, 0xd9,
98 0x8f, 0x00, 0xb2, 0x04, 98 0x8f, 0x00, 0xb2, 0x04,
99 0xe9, 0x80, 0x09, 0x98, 99 0xe9, 0x80, 0x09, 0x98,
100 0xec, 0xf8, 0x42, 0x7e 100 0xec, 0xf8, 0x42, 0x7e
101 }; 101 };
102 102
103 for (int i = 0; i < 16; ++i) 103 for (int i = 0; i < 16; ++i)
104 EXPECT_EQ(expected[i], digest.a[i] & 0xFF); 104 EXPECT_EQ(expected[i], digest[i] & 0xFF);
105 } 105 }
106 106
107 TEST(MD5, ContextWithLongData) { 107 TEST(MD5, ContextWithLongData) {
108 MD5Context ctx; 108 MD5Context ctx;
109 MD5Init(&ctx); 109 MD5Init(&ctx);
110 110
111 const int length = 10 * 1024 * 1024 + 1; 111 const int length = 10 * 1024 * 1024 + 1;
112 scoped_ptr<char[]> data(new char[length]); 112 scoped_ptr<char[]> data(new char[length]);
113 113
114 for (int i = 0; i < length; ++i) 114 for (int i = 0; i < length; ++i)
(...skipping 16 matching lines...) Expand all
131 MD5Final(&digest, &ctx); 131 MD5Final(&digest, &ctx);
132 132
133 int expected[] = { 133 int expected[] = {
134 0x90, 0xbd, 0x6a, 0xd9, 134 0x90, 0xbd, 0x6a, 0xd9,
135 0x0a, 0xce, 0xf5, 0xad, 135 0x0a, 0xce, 0xf5, 0xad,
136 0xaa, 0x92, 0x20, 0x3e, 136 0xaa, 0x92, 0x20, 0x3e,
137 0x21, 0xc7, 0xa1, 0x3e 137 0x21, 0xc7, 0xa1, 0x3e
138 }; 138 };
139 139
140 for (int i = 0; i < 16; ++i) 140 for (int i = 0; i < 16; ++i)
141 EXPECT_EQ(expected[i], digest.a[i] & 0xFF); 141 EXPECT_EQ(expected[i], digest[i] & 0xFF);
142 } 142 }
143 143
144 // Example data from http://www.ietf.org/rfc/rfc1321.txt A.5 Test Suite 144 // Example data from http://www.ietf.org/rfc/rfc1321.txt A.5 Test Suite
145 TEST(MD5, MD5StringTestSuite1) { 145 TEST(MD5, MD5StringTestSuite1) {
146 std::string actual = MD5String(""); 146 std::string actual = MD5String("");
147 std::string expected = "d41d8cd98f00b204e9800998ecf8427e"; 147 std::string expected = "d41d8cd98f00b204e9800998ecf8427e";
148 EXPECT_EQ(expected, actual); 148 EXPECT_EQ(expected, actual);
149 } 149 }
150 150
151 TEST(MD5, MD5StringTestSuite2) { 151 TEST(MD5, MD5StringTestSuite2) {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 243
244 // The header and full digest pairs are the same, and they aren't the same as 244 // The header and full digest pairs are the same, and they aren't the same as
245 // each other. 245 // each other.
246 EXPECT_TRUE(!memcmp(&header_digest, &check_header_digest, 246 EXPECT_TRUE(!memcmp(&header_digest, &check_header_digest,
247 sizeof(header_digest))); 247 sizeof(header_digest)));
248 EXPECT_TRUE(!memcmp(&digest, &check_full_digest, sizeof(digest))); 248 EXPECT_TRUE(!memcmp(&digest, &check_full_digest, sizeof(digest)));
249 EXPECT_FALSE(!memcmp(&digest, &header_digest, sizeof(digest))); 249 EXPECT_FALSE(!memcmp(&digest, &header_digest, sizeof(digest)));
250 } 250 }
251 251
252 } // namespace base 252 } // namespace base
OLDNEW
« no previous file with comments | « base/md5.cc ('k') | components/data_reduction_proxy/core/browser/data_reduction_proxy_tamper_detection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698