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