### Question:
MapTileArea implements MapTileContainer, IterableWithSize<Long> { public MapTileArea set(final int pZoom, final int pLeft, final int pTop, final int pRight, final int pBottom) { mZoom = pZoom; mMapTileUpperBound = 1 << mZoom; mWidth = computeSize(pLeft, pRight); mHeight = computeSize(pTop, pBottom); mLeft = cleanValue(pLeft); mTop = cleanValue(pTop); return this; }  MapTileArea set(final int pZoom, final int pLeft, final int pTop, final int pRight, final int pBottom); MapTileArea set(final int pZoom, final Rect pRect); MapTileArea set(final MapTileArea pArea); MapTileArea reset(); int getZoom(); int getLeft(); int getTop(); int getWidth(); int getHeight(); int getRight(); int getBottom(); @Override int size(); @Override Iterator<Long> iterator(); @Override boolean contains(long pTileIndex); @Override String toString();  }### Answer:
@Test public void testSetAll() { final MapTileArea area = new MapTileArea(); int zoom; zoom = 0; area.set(zoom, -10, -100, 50, 90); checkAll(zoom, area); zoom = 1; area.set(zoom, -10, -100, 50, 90); checkAll(zoom, area); zoom = 2; area.set(zoom, -10, -100, 50, 90); checkAll(zoom, area); }
@Test public void testPerformances() { final MapTileList list = new MapTileList(); final MapTileArea area = new MapTileArea(); final int zoom = 10; final int size = 10; long start, end, duration1, duration2; list.ensureCapacity(size * size); start = System.nanoTime(); list.put(zoom, 0, 0, size-1, size-1); end = System.nanoTime(); duration1 = end - start; start = System.nanoTime(); area.set(zoom, 0, 0, size-1, size-1); end = System.nanoTime(); duration2 = end - start; checkDuration(duration1, duration2); checkContainDuration(zoom, zoom, size - 1, size -1, list, area, true); checkContainDuration(0, zoom - 1, 0, 0, list, area, false); checkContainDuration(zoom + 1, TileSystem.getMaximumZoomLevel(), 0, 0, list, area, false); }