diff options
Diffstat (limited to 'llvm/unittests')
| -rw-r--r-- | llvm/unittests/ADT/IteratorTest.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/IteratorTest.cpp b/llvm/unittests/ADT/IteratorTest.cpp index de0a6710789..902ddfb49f2 100644 --- a/llvm/unittests/ADT/IteratorTest.cpp +++ b/llvm/unittests/ADT/IteratorTest.cpp @@ -328,6 +328,40 @@ TEST(ZipIteratorTest, ZipFirstBasic) { EXPECT_EQ(iters, 4u); } +TEST(ZipIteratorTest, ZipLongestBasic) { + using namespace std; + const vector<unsigned> pi{3, 1, 4, 1, 5, 9}; + const vector<StringRef> e{"2", "7", "1", "8"}; + + { + // Check left range longer than right. + const vector<tuple<Optional<unsigned>, Optional<StringRef>>> expected{ + make_tuple(3, StringRef("2")), make_tuple(1, StringRef("7")), + make_tuple(4, StringRef("1")), make_tuple(1, StringRef("8")), + make_tuple(5, None), make_tuple(9, None)}; + size_t iters = 0; + for (auto tup : zip_longest(pi, e)) { + EXPECT_EQ(tup, expected[iters]); + iters += 1; + } + EXPECT_EQ(iters, expected.size()); + } + + { + // Check right range longer than left. + const vector<tuple<Optional<StringRef>, Optional<unsigned>>> expected{ + make_tuple(StringRef("2"), 3), make_tuple(StringRef("7"), 1), + make_tuple(StringRef("1"), 4), make_tuple(StringRef("8"), 1), + make_tuple(None, 5), make_tuple(None, 9)}; + size_t iters = 0; + for (auto tup : zip_longest(e, pi)) { + EXPECT_EQ(tup, expected[iters]); + iters += 1; + } + EXPECT_EQ(iters, expected.size()); + } +} + TEST(ZipIteratorTest, Mutability) { using namespace std; const SmallVector<unsigned, 4> pi{3, 1, 4, 1, 5, 9}; |

