| Index: courgette/third_party/bsdiff/bsdiff_search_unittest.cc
|
| diff --git a/courgette/third_party/bsdiff/bsdiff_search_unittest.cc b/courgette/third_party/bsdiff/bsdiff_search_unittest.cc
|
| index dff7172dc5ce31351525295cb2e7a2198f2c81e6..bcc5b2517179a24b1f81d18e13e66928017c0d8b 100644
|
| --- a/courgette/third_party/bsdiff/bsdiff_search_unittest.cc
|
| +++ b/courgette/third_party/bsdiff/bsdiff_search_unittest.cc
|
| @@ -20,11 +20,11 @@ TEST(BSDiffSearchTest, Search) {
|
| const unsigned char* buf = reinterpret_cast<const unsigned char*>(str);
|
| std::vector<int> I(size + 1);
|
| std::vector<int> V(size + 1);
|
| - courgette::qsuf::qsufsort<int*>(&I[0], &V[0], buf, size);
|
| + qsuf::qsufsort<int*>(&I[0], &V[0], buf, size);
|
|
|
| // Specific queries.
|
| const struct {
|
| - int exp_pos; // -1 means "don't care".
|
| + int exp_match_pos; // -1 means "don't care".
|
| int exp_match_size;
|
| const char* query_str;
|
| } test_cases[] = {
|
| @@ -44,7 +44,7 @@ TEST(BSDiffSearchTest, Search) {
|
| // Exact and non-unique match: take lexicographical first.
|
| {-1, 3, "the"}, // Non-unique prefix.
|
| {-1, 1, " "},
|
| - // Partial and non-unique match: no guarantees on |pos|!
|
| + // Partial and non-unique match: no guarantees on |match.pos|!
|
| {-1, 4, "the apple"}, // query < "the l"... < "the q"...
|
| {-1, 4, "the opera"}, // "the l"... < query < "the q"...
|
| {-1, 4, "the zebra"}, // "the l"... < "the q"... < query
|
| @@ -64,22 +64,21 @@ TEST(BSDiffSearchTest, Search) {
|
| reinterpret_cast<const unsigned char*>(test_case.query_str);
|
|
|
| // Perform the search.
|
| - int pos = 0;
|
| - int match_size =
|
| - courgette::search(&I[0], buf, size, query_buf, query_size, &pos);
|
| + bsdiff::SearchResult match =
|
| + bsdiff::search(&I[0], buf, size, query_buf, query_size);
|
|
|
| // Check basic properties and match with expected values.
|
| - EXPECT_GE(match_size, 0);
|
| - EXPECT_LE(match_size, query_size);
|
| - if (match_size > 0) {
|
| - EXPECT_GE(pos, 0);
|
| - EXPECT_LE(pos, size - match_size);
|
| - EXPECT_EQ(0, ::memcmp(buf + pos, query_buf, match_size));
|
| + EXPECT_GE(match.size, 0);
|
| + EXPECT_LE(match.size, query_size);
|
| + if (match.size > 0) {
|
| + EXPECT_GE(match.pos, 0);
|
| + EXPECT_LE(match.pos, size - match.size);
|
| + EXPECT_EQ(0, ::memcmp(buf + match.pos, query_buf, match.size));
|
| }
|
| - if (test_case.exp_pos >= 0) {
|
| - EXPECT_EQ(test_case.exp_pos, pos);
|
| + if (test_case.exp_match_pos >= 0) {
|
| + EXPECT_EQ(test_case.exp_match_pos, match.pos);
|
| }
|
| - EXPECT_EQ(test_case.exp_match_size, match_size);
|
| + EXPECT_EQ(test_case.exp_match_size, match.size);
|
| }
|
| }
|
|
|
| @@ -103,7 +102,7 @@ TEST(BSDiffSearchTest, SearchExact) {
|
| reinterpret_cast<const unsigned char*>(test_cases[idx]);
|
| std::vector<int> I(size + 1);
|
| std::vector<int> V(size + 1);
|
| - courgette::qsuf::qsufsort<int*>(&I[0], &V[0], buf, size);
|
| + qsuf::qsufsort<int*>(&I[0], &V[0], buf, size);
|
|
|
| // Test exact matches for every non-empty substring.
|
| for (int lo = 0; lo < size; ++lo) {
|
| @@ -113,14 +112,13 @@ TEST(BSDiffSearchTest, SearchExact) {
|
| ASSERT_EQ(query_size, hi - lo);
|
| const unsigned char* query_buf =
|
| reinterpret_cast<const unsigned char*>(query.c_str());
|
| - int pos = 0;
|
| - int match_size =
|
| - courgette::search(&I[0], buf, size, query_buf, query_size, &pos);
|
| + bsdiff::SearchResult match =
|
| + bsdiff::search(&I[0], buf, size, query_buf, query_size);
|
|
|
| - EXPECT_EQ(query_size, match_size);
|
| - EXPECT_GE(pos, 0);
|
| - EXPECT_LE(pos, size - match_size);
|
| - std::string suffix(buf + pos, buf + size);
|
| + EXPECT_EQ(query_size, match.size);
|
| + EXPECT_GE(match.pos, 0);
|
| + EXPECT_LE(match.pos, size - match.size);
|
| + std::string suffix(buf + match.pos, buf + size);
|
| EXPECT_EQ(suffix.substr(0, query_size), query);
|
| }
|
| }
|
|
|