TEST(Buckets, RasterBucketMaskEmpty) { RasterBucket bucket{ nullptr }; bucket.setMask({}); EXPECT_EQ((std::vector<RasterLayoutVertex>{}), bucket.vertices.vector()); EXPECT_EQ((std::vector<uint16_t>{}), bucket.indices.vector()); SegmentVector<RasterAttributes> expectedSegments; expectedSegments.emplace_back(0, 0, 0, 0); EXPECT_EQ(expectedSegments, bucket.segments); }
TEST(Buckets, RasterBucketMaskTwoChildren) { RasterBucket bucket{ nullptr }; bucket.setMask( { CanonicalTileID{ 1, 0, 0 }, CanonicalTileID{ 1, 1, 1 } }); EXPECT_EQ( (std::vector<RasterLayoutVertex>{ // 1/0/1 RasterProgram::layoutVertex({ 0, 0 }, { 0, 0 }), RasterProgram::layoutVertex({ 4096, 0 }, { 4096, 0 }), RasterProgram::layoutVertex({ 0, 4096 }, { 0, 4096 }), RasterProgram::layoutVertex({ 4096, 4096 }, { 4096, 4096 }), // 1/1/1 RasterProgram::layoutVertex({ 4096, 4096 }, { 4096, 4096 }), RasterProgram::layoutVertex({ 8192, 4096 }, { 8192, 4096 }), RasterProgram::layoutVertex({ 4096, 8192 }, { 4096, 8192 }), RasterProgram::layoutVertex({ 8192, 8192 }, { 8192, 8192 }), }), bucket.vertices.vector()); EXPECT_EQ( (std::vector<uint16_t>{ // 1/0/1 0, 1, 2, 1, 2, 3, // 1/1/1 4, 5, 6, 5, 6, 7, }), bucket.indices.vector()); SegmentVector<RasterAttributes> expectedSegments; expectedSegments.emplace_back(0, 0, 8, 12); EXPECT_EQ(expectedSegments, bucket.segments); }
TEST(Buckets, RasterBucketMaskComplex) { RasterBucket bucket{ nullptr }; bucket.setMask( { CanonicalTileID{ 1, 0, 1 }, CanonicalTileID{ 1, 1, 0 }, CanonicalTileID{ 2, 2, 3 }, CanonicalTileID{ 2, 3, 2 }, CanonicalTileID{ 3, 6, 7 }, CanonicalTileID{ 3, 7, 6 } }); EXPECT_EQ( (std::vector<RasterLayoutVertex>{ // 1/0/1 RasterProgram::layoutVertex({ 0, 4096 }, { 0, 4096 }), RasterProgram::layoutVertex({ 4096, 4096 }, { 4096, 4096 }), RasterProgram::layoutVertex({ 0, 8192 }, { 0, 8192 }), RasterProgram::layoutVertex({ 4096, 8192 }, { 4096, 8192 }), // 1/1/0 RasterProgram::layoutVertex({ 4096, 0 }, { 4096, 0 }), RasterProgram::layoutVertex({ 8192, 0 }, { 8192, 0 }), RasterProgram::layoutVertex({ 4096, 4096 }, { 4096, 4096 }), RasterProgram::layoutVertex({ 8192, 4096 }, { 8192, 4096 }), // 2/2/3 RasterProgram::layoutVertex({ 4096, 6144 }, { 4096, 6144 }), RasterProgram::layoutVertex({ 6144, 6144 }, { 6144, 6144 }), RasterProgram::layoutVertex({ 4096, 8192 }, { 4096, 8192 }), RasterProgram::layoutVertex({ 6144, 8192 }, { 6144, 8192 }), // 2/3/2 RasterProgram::layoutVertex({ 6144, 4096 }, { 6144, 4096 }), RasterProgram::layoutVertex({ 8192, 4096 }, { 8192, 4096 }), RasterProgram::layoutVertex({ 6144, 6144 }, { 6144, 6144 }), RasterProgram::layoutVertex({ 8192, 6144 }, { 8192, 6144 }), // 3/6/7 RasterProgram::layoutVertex({ 6144, 7168 }, { 6144, 7168 }), RasterProgram::layoutVertex({ 7168, 7168 }, { 7168, 7168 }), RasterProgram::layoutVertex({ 6144, 8192 }, { 6144, 8192 }), RasterProgram::layoutVertex({ 7168, 8192 }, { 7168, 8192 }), // 3/7/6 RasterProgram::layoutVertex({ 7168, 6144 }, { 7168, 6144 }), RasterProgram::layoutVertex({ 8192, 6144 }, { 8192, 6144 }), RasterProgram::layoutVertex({ 7168, 7168 }, { 7168, 7168 }), RasterProgram::layoutVertex({ 8192, 7168 }, { 8192, 7168 }), }), bucket.vertices.vector()); EXPECT_EQ( (std::vector<uint16_t>{ // 1/0/1 0, 1, 2, 1, 2, 3, // 1/1/0 4, 5, 6, 5, 6, 7, // 2/2/3 8, 9, 10, 9, 10, 11, // 2/3/2 12, 13, 14, 13, 14, 15, // 3/6/7 16, 17, 18, 17, 18, 19, // 3/7/6 20, 21, 22, 21, 22, 23, }), bucket.indices.vector()); SegmentVector<RasterAttributes> expectedSegments; expectedSegments.emplace_back(0, 0, 24, 36); EXPECT_EQ(expectedSegments, bucket.segments); }