Example #1
0
        public void Test_S2CellId_MaximumTile()
        {
            // This method is tested more thoroughly in s2cell_union_test.cc.
            for (int iter = 0; iter < 1000; ++iter)
            {
                S2CellId id = S2Testing.GetRandomCellId(10);

                // Check that "limit" is returned for tiles at or beyond "limit".
                Assert.Equal(id, id.MaximumTile(id));
                Assert.Equal(id, id.Child(0).MaximumTile(id));
                Assert.Equal(id, id.Child(1).MaximumTile(id));
                Assert.Equal(id, id.Next().MaximumTile(id));
                Assert.Equal(id.Child(0), id.MaximumTile(id.Child(0)));

                // Check that the tile size is increased when possible.
                Assert.Equal(id, id.Child(0).MaximumTile(id.Next()));
                Assert.Equal(id, id.Child(0).MaximumTile(id.Next().Child(0)));
                Assert.Equal(id, id.Child(0).MaximumTile(id.Next().Child(1).Child(0)));
                Assert.Equal(id, id.Child(0).Child(0).MaximumTile(id.Next()));
                Assert.Equal(id, id.Child(0).Child(0).Child(0).MaximumTile(id.Next()));

                // Check that the tile size is decreased when necessary.
                Assert.Equal(id.Child(0), id.MaximumTile(id.Child(0).Next()));
                Assert.Equal(id.Child(0), id.MaximumTile(id.Child(0).Next().Child(0)));
                Assert.Equal(id.Child(0), id.MaximumTile(id.Child(0).Next().Child(1)));
                Assert.Equal(id.Child(0).Child(0),
                             id.MaximumTile(id.Child(0).Child(0).Next()));
                Assert.Equal(id.Child(0).Child(0).Child(0),
                             id.MaximumTile(id.Child(0).Child(0).Child(0).Next()));

                // Check that the tile size is otherwise unchanged.
                Assert.Equal(id, id.MaximumTile(id.Next()));
                Assert.Equal(id, id.MaximumTile(id.Next().Child(0)));
                Assert.Equal(id, id.MaximumTile(id.Next().Child(1).Child(0)));
            }
        }