| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
| 9 #include "chrome/browser/safe_browsing/protocol_parser.h" | 9 #include "chrome/browser/safe_browsing/protocol_parser.h" |
| 10 #include "chrome/browser/safe_browsing/safe_browsing_util.h" | 10 #include "chrome/browser/safe_browsing/safe_browsing_util.h" |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 EXPECT_TRUE(safe_browsing::ParseChunk(kRawAddChunk, sizeof(kRawAddChunk), | 81 EXPECT_TRUE(safe_browsing::ParseChunk(kRawAddChunk, sizeof(kRawAddChunk), |
| 82 &chunks)); | 82 &chunks)); |
| 83 ASSERT_EQ(1U, chunks.size()); | 83 ASSERT_EQ(1U, chunks.size()); |
| 84 EXPECT_EQ(1, chunks[0]->ChunkNumber()); | 84 EXPECT_EQ(1, chunks[0]->ChunkNumber()); |
| 85 EXPECT_TRUE(chunks[0]->IsAdd()); | 85 EXPECT_TRUE(chunks[0]->IsAdd()); |
| 86 EXPECT_FALSE(chunks[0]->IsSub()); | 86 EXPECT_FALSE(chunks[0]->IsSub()); |
| 87 EXPECT_FALSE(chunks[0]->IsPrefix()); | 87 EXPECT_FALSE(chunks[0]->IsPrefix()); |
| 88 EXPECT_TRUE(chunks[0]->IsFullHash()); | 88 EXPECT_TRUE(chunks[0]->IsFullHash()); |
| 89 | 89 |
| 90 ASSERT_EQ(2U, chunks[0]->FullHashCount()); | 90 ASSERT_EQ(2U, chunks[0]->FullHashCount()); |
| 91 EXPECT_TRUE( | 91 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1)); |
| 92 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1)); | 92 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2)); |
| 93 EXPECT_TRUE( | |
| 94 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2)); | |
| 95 } | 93 } |
| 96 | 94 |
| 97 // Test parsing multiple add chunks. We'll use the same chunk as above, and add | 95 // Test parsing multiple add chunks. We'll use the same chunk as above, and add |
| 98 // one more after it. | 96 // one more after it. |
| 99 TEST(SafeBrowsingProtocolParsingTest, TestAddChunks) { | 97 TEST(SafeBrowsingProtocolParsingTest, TestAddChunks) { |
| 100 const char kRawAddChunk[] = { | 98 const char kRawAddChunk[] = { |
| 101 '\0', '\0', '\0', '\x1C', // 32-bit payload length in network byte order. | 99 '\0', '\0', '\0', '\x1C', // 32-bit payload length in network byte order. |
| 102 '\x08', // field 1, wire format varint | 100 '\x08', // field 1, wire format varint |
| 103 '\x01', // chunk_number varint 1 | 101 '\x01', // chunk_number varint 1 |
| 104 '\x22', // field 4, wire format length-delimited | 102 '\x22', // field 4, wire format length-delimited |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 EXPECT_TRUE(safe_browsing::ParseChunk(kRawSubChunk, sizeof(kRawSubChunk), | 275 EXPECT_TRUE(safe_browsing::ParseChunk(kRawSubChunk, sizeof(kRawSubChunk), |
| 278 &chunks)); | 276 &chunks)); |
| 279 ASSERT_EQ(1U, chunks.size()); | 277 ASSERT_EQ(1U, chunks.size()); |
| 280 EXPECT_EQ(2, chunks[0]->ChunkNumber()); | 278 EXPECT_EQ(2, chunks[0]->ChunkNumber()); |
| 281 EXPECT_FALSE(chunks[0]->IsAdd()); | 279 EXPECT_FALSE(chunks[0]->IsAdd()); |
| 282 EXPECT_TRUE(chunks[0]->IsSub()); | 280 EXPECT_TRUE(chunks[0]->IsSub()); |
| 283 EXPECT_FALSE(chunks[0]->IsPrefix()); | 281 EXPECT_FALSE(chunks[0]->IsPrefix()); |
| 284 EXPECT_TRUE(chunks[0]->IsFullHash()); | 282 EXPECT_TRUE(chunks[0]->IsFullHash()); |
| 285 | 283 |
| 286 ASSERT_EQ(2U, chunks[0]->FullHashCount()); | 284 ASSERT_EQ(2U, chunks[0]->FullHashCount()); |
| 287 EXPECT_TRUE( | 285 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1)); |
| 288 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1)); | |
| 289 EXPECT_EQ(7, chunks[0]->AddChunkNumberAt(0)); | 286 EXPECT_EQ(7, chunks[0]->AddChunkNumberAt(0)); |
| 290 EXPECT_TRUE( | 287 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2)); |
| 291 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2)); | |
| 292 EXPECT_EQ(9, chunks[0]->AddChunkNumberAt(1)); | 288 EXPECT_EQ(9, chunks[0]->AddChunkNumberAt(1)); |
| 293 } | 289 } |
| 294 | 290 |
| 295 // Test parsing the SafeBrowsing update response. | 291 // Test parsing the SafeBrowsing update response. |
| 296 TEST(SafeBrowsingProtocolParsingTest, TestChunkDelete) { | 292 TEST(SafeBrowsingProtocolParsingTest, TestChunkDelete) { |
| 297 std::string add_del("n:1700\ni:phishy\nad:1-7,43-597,44444,99999\n" | 293 std::string add_del("n:1700\ni:phishy\nad:1-7,43-597,44444,99999\n" |
| 298 "i:malware\nsd:21-27,42,171717\n"); | 294 "i:malware\nsd:21-27,42,171717\n"); |
| 299 | 295 |
| 300 size_t next_query_sec = 0; | 296 size_t next_query_sec = 0; |
| 301 bool reset = false; | 297 bool reset = false; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 kDefaultPhishList)); | 389 kDefaultPhishList)); |
| 394 std::vector<SBFullHashResult> full_hashes; | 390 std::vector<SBFullHashResult> full_hashes; |
| 395 base::TimeDelta cache_lifetime; | 391 base::TimeDelta cache_lifetime; |
| 396 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash.data(), get_hash.length(), | 392 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash.data(), get_hash.length(), |
| 397 &cache_lifetime, &full_hashes)); | 393 &cache_lifetime, &full_hashes)); |
| 398 | 394 |
| 399 ASSERT_EQ(3U, full_hashes.size()); | 395 ASSERT_EQ(3U, full_hashes.size()); |
| 400 EXPECT_EQ(memcmp(&full_hashes[0].hash, | 396 EXPECT_EQ(memcmp(&full_hashes[0].hash, |
| 401 "00112233445566778899aabbccddeeff", | 397 "00112233445566778899aabbccddeeff", |
| 402 sizeof(SBFullHash)), 0); | 398 sizeof(SBFullHash)), 0); |
| 403 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id); | 399 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); |
| 404 EXPECT_EQ(memcmp(&full_hashes[1].hash, | 400 EXPECT_EQ(memcmp(&full_hashes[1].hash, |
| 405 "00001111222233334444555566667777", | 401 "00001111222233334444555566667777", |
| 406 sizeof(SBFullHash)), 0); | 402 sizeof(SBFullHash)), 0); |
| 407 EXPECT_EQ(safe_browsing::PHISH, full_hashes[1].list_id); | 403 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[1].list_id); |
| 408 EXPECT_EQ(memcmp(&full_hashes[2].hash, | 404 EXPECT_EQ(memcmp(&full_hashes[2].hash, |
| 409 "ffffeeeeddddccccbbbbaaaa99998888", | 405 "ffffeeeeddddccccbbbbaaaa99998888", |
| 410 sizeof(SBFullHash)), 0); | 406 sizeof(SBFullHash)), 0); |
| 411 EXPECT_EQ(safe_browsing::PHISH, full_hashes[2].list_id); | 407 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id); |
| 412 | 408 |
| 413 // Test multiple lists in the GetHash results. | 409 // Test multiple lists in the GetHash results. |
| 414 const std::string get_hash2(base::StringPrintf( | 410 const std::string get_hash2(base::StringPrintf( |
| 415 "45\n" | 411 "45\n" |
| 416 "%s:32:1\n" | 412 "%s:32:1\n" |
| 417 "00112233445566778899aabbccddeeff" | 413 "00112233445566778899aabbccddeeff" |
| 418 "%s:32:2\n" | 414 "%s:32:2\n" |
| 419 "cafebeefcafebeefdeaddeaddeaddead" | 415 "cafebeefcafebeefdeaddeaddeaddead" |
| 420 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", | 416 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", |
| 421 kDefaultPhishList, | 417 kDefaultPhishList, |
| 422 kDefaultMalwareList)); | 418 kDefaultMalwareList)); |
| 423 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash2.data(), get_hash2.length(), | 419 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash2.data(), get_hash2.length(), |
| 424 &cache_lifetime, &full_hashes)); | 420 &cache_lifetime, &full_hashes)); |
| 425 | 421 |
| 426 ASSERT_EQ(3U, full_hashes.size()); | 422 ASSERT_EQ(3U, full_hashes.size()); |
| 427 EXPECT_EQ(memcmp(&full_hashes[0].hash, | 423 EXPECT_EQ(memcmp(&full_hashes[0].hash, |
| 428 "00112233445566778899aabbccddeeff", | 424 "00112233445566778899aabbccddeeff", |
| 429 sizeof(SBFullHash)), 0); | 425 sizeof(SBFullHash)), 0); |
| 430 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id); | 426 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); |
| 431 EXPECT_EQ(memcmp(&full_hashes[1].hash, | 427 EXPECT_EQ(memcmp(&full_hashes[1].hash, |
| 432 "cafebeefcafebeefdeaddeaddeaddead", | 428 "cafebeefcafebeefdeaddeaddeaddead", |
| 433 sizeof(SBFullHash)), 0); | 429 sizeof(SBFullHash)), 0); |
| 434 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[1].list_id); | 430 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); |
| 435 EXPECT_EQ(memcmp(&full_hashes[2].hash, | 431 EXPECT_EQ(memcmp(&full_hashes[2].hash, |
| 436 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", | 432 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", |
| 437 sizeof(SBFullHash)), 0); | 433 sizeof(SBFullHash)), 0); |
| 438 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[2].list_id); | 434 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[2].list_id); |
| 439 | 435 |
| 440 // Test metadata parsing. | 436 // Test metadata parsing. |
| 441 const std::string get_hash3(base::StringPrintf( | 437 const std::string get_hash3(base::StringPrintf( |
| 442 "45\n" | 438 "45\n" |
| 443 "%s:32:2:m\n" | 439 "%s:32:2:m\n" |
| 444 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss" | 440 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss" |
| 445 "00112233445566778899aabbccddeeff" | 441 "00112233445566778899aabbccddeeff" |
| 446 "2\nab2\nxy" | 442 "2\nab2\nxy" |
| 447 "%s:32:1\n" | 443 "%s:32:1\n" |
| 448 "cafebeefcafebeefdeaddeaddeaddead", | 444 "cafebeefcafebeefdeaddeaddeaddead", |
| 449 kDefaultMalwareList, | 445 kDefaultMalwareList, |
| 450 kDefaultPhishList)); | 446 kDefaultPhishList)); |
| 451 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(), | 447 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(), |
| 452 &cache_lifetime, &full_hashes)); | 448 &cache_lifetime, &full_hashes)); |
| 453 | 449 |
| 454 ASSERT_EQ(3U, full_hashes.size()); | 450 ASSERT_EQ(3U, full_hashes.size()); |
| 455 EXPECT_EQ(memcmp(&full_hashes[0].hash, | 451 EXPECT_EQ(memcmp(&full_hashes[0].hash, |
| 456 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", | 452 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", |
| 457 sizeof(SBFullHash)), 0); | 453 sizeof(SBFullHash)), 0); |
| 458 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[0].list_id); | 454 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[0].list_id); |
| 459 EXPECT_EQ(std::string("ab"), full_hashes[0].metadata); | 455 EXPECT_EQ(std::string("ab"), full_hashes[0].metadata); |
| 460 EXPECT_EQ(memcmp(&full_hashes[1].hash, | 456 EXPECT_EQ(memcmp(&full_hashes[1].hash, |
| 461 "00112233445566778899aabbccddeeff", | 457 "00112233445566778899aabbccddeeff", |
| 462 sizeof(SBFullHash)), 0); | 458 sizeof(SBFullHash)), 0); |
| 463 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[1].list_id); | 459 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); |
| 464 EXPECT_EQ(std::string("xy"), full_hashes[1].metadata); | 460 EXPECT_EQ(std::string("xy"), full_hashes[1].metadata); |
| 465 EXPECT_EQ(memcmp(&full_hashes[2].hash, | 461 EXPECT_EQ(memcmp(&full_hashes[2].hash, |
| 466 "cafebeefcafebeefdeaddeaddeaddead", | 462 "cafebeefcafebeefdeaddeaddeaddead", |
| 467 sizeof(SBFullHash)), 0); | 463 sizeof(SBFullHash)), 0); |
| 468 EXPECT_EQ(safe_browsing::PHISH, full_hashes[2].list_id); | 464 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id); |
| 469 EXPECT_EQ(std::string(), full_hashes[2].metadata); | 465 EXPECT_EQ(std::string(), full_hashes[2].metadata); |
| 470 } | 466 } |
| 471 | 467 |
| 472 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownList) { | 468 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownList) { |
| 473 std::string hash_response(base::StringPrintf( | 469 std::string hash_response(base::StringPrintf( |
| 474 "45\n" | 470 "45\n" |
| 475 "%s:32:1\n" | 471 "%s:32:1\n" |
| 476 "12345678901234567890123456789012" | 472 "12345678901234567890123456789012" |
| 477 "googpub-phish-shavar:32:1\n" | 473 "googpub-phish-shavar:32:1\n" |
| 478 "09876543210987654321098765432109", | 474 "09876543210987654321098765432109", |
| 479 kDefaultPhishList)); | 475 kDefaultPhishList)); |
| 480 std::vector<SBFullHashResult> full_hashes; | 476 std::vector<SBFullHashResult> full_hashes; |
| 481 base::TimeDelta cache_lifetime; | 477 base::TimeDelta cache_lifetime; |
| 482 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), | 478 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), |
| 483 hash_response.size(), | 479 hash_response.size(), |
| 484 &cache_lifetime, | 480 &cache_lifetime, |
| 485 &full_hashes)); | 481 &full_hashes)); |
| 486 | 482 |
| 487 ASSERT_EQ(1U, full_hashes.size()); | 483 ASSERT_EQ(1U, full_hashes.size()); |
| 488 EXPECT_EQ(memcmp("12345678901234567890123456789012", | 484 EXPECT_EQ(memcmp("12345678901234567890123456789012", |
| 489 &full_hashes[0].hash, sizeof(SBFullHash)), 0); | 485 &full_hashes[0].hash, sizeof(SBFullHash)), 0); |
| 490 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id); | 486 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); |
| 491 | 487 |
| 492 hash_response += base::StringPrintf( | 488 hash_response += base::StringPrintf( |
| 493 "%s:32:1\n" | 489 "%s:32:1\n" |
| 494 "abcdefghijklmnopqrstuvwxyz123457", | 490 "abcdefghijklmnopqrstuvwxyz123457", |
| 495 kDefaultMalwareList); | 491 kDefaultMalwareList); |
| 496 full_hashes.clear(); | 492 full_hashes.clear(); |
| 497 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), | 493 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), |
| 498 hash_response.size(), | 494 hash_response.size(), |
| 499 &cache_lifetime, | 495 &cache_lifetime, |
| 500 &full_hashes)); | 496 &full_hashes)); |
| 501 | 497 |
| 502 EXPECT_EQ(2U, full_hashes.size()); | 498 EXPECT_EQ(2U, full_hashes.size()); |
| 503 EXPECT_EQ(memcmp("12345678901234567890123456789012", | 499 EXPECT_EQ(memcmp("12345678901234567890123456789012", |
| 504 &full_hashes[0].hash, sizeof(SBFullHash)), 0); | 500 &full_hashes[0].hash, sizeof(SBFullHash)), 0); |
| 505 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id); | 501 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); |
| 506 EXPECT_EQ(memcmp("abcdefghijklmnopqrstuvwxyz123457", | 502 EXPECT_EQ(memcmp("abcdefghijklmnopqrstuvwxyz123457", |
| 507 &full_hashes[1].hash, sizeof(SBFullHash)), 0); | 503 &full_hashes[1].hash, sizeof(SBFullHash)), 0); |
| 508 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[1].list_id); | 504 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); |
| 509 } | 505 } |
| 510 | 506 |
| 511 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownListAndMetadata) { | 507 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownListAndMetadata) { |
| 512 std::vector<SBFullHashResult> full_hashes; | 508 std::vector<SBFullHashResult> full_hashes; |
| 513 base::TimeDelta cache_lifetime; | 509 base::TimeDelta cache_lifetime; |
| 514 // Test skipping over a hashentry with an unrecognized listname that also has | 510 // Test skipping over a hashentry with an unrecognized listname that also has |
| 515 // metadata. | 511 // metadata. |
| 516 const std::string get_hash3(base::StringPrintf( | 512 const std::string get_hash3(base::StringPrintf( |
| 517 "600\n" | 513 "600\n" |
| 518 "BADLISTNAME:32:1:m\n" | 514 "BADLISTNAME:32:1:m\n" |
| 519 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | 515 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" |
| 520 "8\nMETADATA" | 516 "8\nMETADATA" |
| 521 "%s:32:1\n" | 517 "%s:32:1\n" |
| 522 "0123456789hashhashhashhashhashha", | 518 "0123456789hashhashhashhashhashha", |
| 523 kDefaultMalwareList)); | 519 kDefaultMalwareList)); |
| 524 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(), | 520 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(), |
| 525 &cache_lifetime, &full_hashes)); | 521 &cache_lifetime, &full_hashes)); |
| 526 ASSERT_EQ(1U, full_hashes.size()); | 522 ASSERT_EQ(1U, full_hashes.size()); |
| 527 EXPECT_EQ(memcmp(&full_hashes[0].hash, | 523 EXPECT_EQ(memcmp(&full_hashes[0].hash, |
| 528 "0123456789hashhashhashhashhashha", | 524 "0123456789hashhashhashhashhashha", |
| 529 sizeof(SBFullHash)), 0); | 525 sizeof(SBFullHash)), 0); |
| 530 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[0].list_id); | 526 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[0].list_id); |
| 531 EXPECT_EQ(std::string(), full_hashes[0].metadata); | 527 EXPECT_EQ(std::string(), full_hashes[0].metadata); |
| 532 } | 528 } |
| 533 | 529 |
| 534 TEST(SafeBrowsingProtocolParsingTest, TestFormatHash) { | 530 TEST(SafeBrowsingProtocolParsingTest, TestFormatHash) { |
| 535 std::vector<SBPrefix> prefixes; | 531 std::vector<SBPrefix> prefixes; |
| 536 prefixes.push_back(0x34333231); | 532 prefixes.push_back(0x34333231); |
| 537 prefixes.push_back(0x64636261); | 533 prefixes.push_back(0x64636261); |
| 538 prefixes.push_back(0x73727170); | 534 prefixes.push_back(0x73727170); |
| 539 | 535 |
| 540 EXPECT_EQ("4:12\n1234abcdpqrs", safe_browsing::FormatGetHash(prefixes)); | 536 EXPECT_EQ("4:12\n1234abcdpqrs", safe_browsing::FormatGetHash(prefixes)); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 708 EXPECT_FALSE(chunks[0]->IsAdd()); | 704 EXPECT_FALSE(chunks[0]->IsAdd()); |
| 709 EXPECT_TRUE(chunks[0]->IsSub()); | 705 EXPECT_TRUE(chunks[0]->IsSub()); |
| 710 EXPECT_TRUE(chunks[2]->IsPrefix()); | 706 EXPECT_TRUE(chunks[2]->IsPrefix()); |
| 711 EXPECT_FALSE(chunks[2]->IsFullHash()); | 707 EXPECT_FALSE(chunks[2]->IsFullHash()); |
| 712 ASSERT_EQ(1U, chunks[2]->PrefixCount()); | 708 ASSERT_EQ(1U, chunks[2]->PrefixCount()); |
| 713 EXPECT_EQ(0x70707070U, chunks[2]->PrefixAt(0)); // pppp | 709 EXPECT_EQ(0x70707070U, chunks[2]->PrefixAt(0)); // pppp |
| 714 EXPECT_EQ(11, chunks[2]->AddChunkNumberAt(0)); | 710 EXPECT_EQ(11, chunks[2]->AddChunkNumberAt(0)); |
| 715 } | 711 } |
| 716 | 712 |
| 717 } // namespace | 713 } // namespace |
| OLD | NEW |