TestUtil.java revision 4ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29
14ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williamspackage com.xtremelabs.robolectric.util; 24ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 34ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williamsimport java.io.File; 44ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williamsimport java.util.Collection; 54ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 64ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williamsimport static org.junit.Assert.assertTrue; 74ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 84ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williamspublic abstract class TestUtil { 94ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static File testDirLocation; 104ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 114ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static void assertEquals(Collection<?> expected, Collection<?> actual) { 124ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams org.junit.Assert.assertEquals(stringify(expected), stringify(actual)); 134ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 144ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 154ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static String stringify(Collection<?> collection) { 164ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams StringBuilder buf = new StringBuilder(); 174ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams for (Object o : collection) { 184ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams if (buf.length() > 0) buf.append("\n"); 194ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams buf.append(o); 204ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 214ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams return buf.toString(); 224ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 234ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 244ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static <T> void assertInstanceOf(Class<? extends T> expectedClass, T object) { 254ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams Class actualClass = object.getClass(); 264ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams assertTrue(expectedClass + " should be assignable from " + actualClass, 274ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams expectedClass.isAssignableFrom(actualClass)); 284ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 294ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 304ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static File file(String... pathParts) { 314ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams return file(new File("."), pathParts); 324ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 334ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 344ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static File file(File f, String... pathParts) { 354ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams for (String pathPart : pathParts) { 364ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams f = new File(f, pathPart); 374ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 384ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams return f; 394ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 404ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 414ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static File resourcesBaseDir() { 424ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams if (testDirLocation == null) { 434ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams File testDir = file("src", "test", "resources"); 444ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams if (testDir.isDirectory()) return testDirLocation = testDir; 454ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 464ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams File roboTestDir = file("robolectric", "src", "test", "resources"); 474ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams if (roboTestDir.isDirectory()) return testDirLocation = roboTestDir; 484ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 494ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams throw new RuntimeException("can't find your TestAndroidManifest.xml in " 504ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams + testDir.getAbsolutePath() + " or " + roboTestDir.getAbsolutePath()); 514ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } else { 524ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams return testDirLocation; 534ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 544ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 554ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams 564ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams public static File resourceFile(String... pathParts) { 574ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams return file(resourcesBaseDir(), pathParts); 584ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams } 594ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williams} 60