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))); } }