Add tests for SkZip first, data, and consting copy ctor

Change-Id: Ibc8a6a856c448f03c9e3860a3fb7391c407289dd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247038
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This commit is contained in:
Herbert Derby 2019-10-08 10:22:33 -04:00 committed by Skia Commit-Bot
parent 7edfb69406
commit 5899485b9a

View File

@ -316,9 +316,27 @@ DEF_TEST(SkZip, reporter) {
REPORTER_ASSERT(reporter, i = 4);
}
// Check copy.
auto zz{z};
{
// Check first(n)
int i = 0;
for (auto t : z.first(2)) {
uint16_t a; float b; int c; int d; int s;
std::tie(a, b, c, d, s) = t;
REPORTER_ASSERT(reporter, a == A[i]);
REPORTER_ASSERT(reporter, b == B[i]);
REPORTER_ASSERT(reporter, c == C[i]);
REPORTER_ASSERT(reporter, d == D[i]);
REPORTER_ASSERT(reporter, s == S[i]);
i++;
}
REPORTER_ASSERT(reporter, i = 2);
}
{
// Check copy.
auto zz{z};
int i = 0;
for (auto t : zz) {
uint16_t a; float b; int c; int d; int s;
@ -334,8 +352,33 @@ DEF_TEST(SkZip, reporter) {
REPORTER_ASSERT(reporter, i = 4);
}
// Check index getter
{
// Check const restricting copy
SkZip<const uint16_t, const float, const int, int, int> cz = z;
int i = 0;
for (auto t : cz) {
uint16_t a; float b; int c; int d; int s;
std::tie(a, b, c, d, s) = t;
REPORTER_ASSERT(reporter, a == A[i]);
REPORTER_ASSERT(reporter, b == B[i]);
REPORTER_ASSERT(reporter, c == C[i]);
REPORTER_ASSERT(reporter, d == D[i]);
REPORTER_ASSERT(reporter, s == S[i]);
i++;
}
REPORTER_ASSERT(reporter, i = 4);
}
{
// Check data() returns all the original pointers
auto ptrs = z.data();
REPORTER_ASSERT(reporter,
ptrs == std::make_tuple(&A[0], &B[0], C.data(), D.data(), S.data()));
}
{
// Check index getter
auto span = z.get<1>();
REPORTER_ASSERT(reporter, span[1] == 20.f);
}