1 package com.xtremelabs.robolectric.shadows; 2 3 import com.google.android.maps.GeoPoint; 4 import com.google.android.maps.ItemizedOverlay; 5 import com.google.android.maps.OverlayItem; 6 import com.xtremelabs.robolectric.WithTestDefaultsRunner; 7 import org.junit.Test; 8 import org.junit.runner.RunWith; 9 10 import static org.junit.Assert.assertEquals; 11 import static org.junit.Assert.assertNull; 12 import static org.junit.Assert.assertTrue; 13 14 @RunWith(WithTestDefaultsRunner.class) 15 public class ItemizedOverlayTest { 16 17 class TestItemizedOverlay extends ItemizedOverlay<OverlayItem> { 18 public OverlayItem firstOverlayItem = new OverlayItem(new GeoPoint(0, 0), "title1", "snippet1"); 19 public OverlayItem secondOverlayItem = new OverlayItem(new GeoPoint(5, 5), "title2", "snippet2"); 20 TestItemizedOverlay()21 public TestItemizedOverlay() { 22 super(null); 23 } 24 25 @Override createItem(int index)26 protected OverlayItem createItem(int index) { 27 if (index == 0) { 28 return firstOverlayItem; 29 } else if (index == 1) { 30 return secondOverlayItem; 31 } 32 return null; 33 } 34 35 @Override size()36 public int size() { 37 return 2; 38 } 39 callPopulate()40 public void callPopulate() { 41 populate(); 42 } 43 } 44 45 @Test populateShouldCreateItems()46 public void populateShouldCreateItems() { 47 TestItemizedOverlay itemizedOverlay = new TestItemizedOverlay(); 48 itemizedOverlay.callPopulate(); 49 50 assertEquals(itemizedOverlay.firstOverlayItem, itemizedOverlay.getItem(0)); 51 assertEquals(itemizedOverlay.secondOverlayItem, itemizedOverlay.getItem(1)); 52 } 53 54 @Test callingPopulateTwoTimesShouldNotAddAdditionalItems()55 public void callingPopulateTwoTimesShouldNotAddAdditionalItems() { 56 TestItemizedOverlay itemizedOverlay = new TestItemizedOverlay(); 57 itemizedOverlay.callPopulate(); 58 itemizedOverlay.callPopulate(); 59 60 assertEquals(itemizedOverlay.firstOverlayItem, itemizedOverlay.getItem(0)); 61 assertEquals(itemizedOverlay.secondOverlayItem, itemizedOverlay.getItem(1)); 62 63 boolean indexOutOfBoundsExceptionCatched = false; 64 try { 65 itemizedOverlay.getItem(2); 66 } catch (IndexOutOfBoundsException e) { 67 indexOutOfBoundsExceptionCatched = true; 68 } 69 assertTrue(indexOutOfBoundsExceptionCatched); 70 } 71 72 @Test(expected = IndexOutOfBoundsException.class) getItemWithoutPopulateShouldThrowIndexOutOfBoundException()73 public void getItemWithoutPopulateShouldThrowIndexOutOfBoundException() { 74 TestItemizedOverlay itemizedOverlay = new TestItemizedOverlay(); 75 76 assertNull(itemizedOverlay.getItem(0)); 77 } 78 } 79