package org.jooby.whoops; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.IOException; import org.jooby.whoops.SourceLocator.Source; import org.junit.Test; public class SourceLocatorTest { @Test public void findJava() throws IOException { SourceLocator locator = SourceLocator.local(); Source source = locator.source(WhoopsApp.class.getName()); assertNotNull(source); assertTrue(source.getPath().toFile().exists()); assertTrue(source.getLines().size() > 0); assertEquals("public class WhoopsApp extends Jooby {", source.source(5, 6)); assertEquals(source.getPath().toString(), source.toString()); } @Test public void range() throws IOException { SourceLocator locator = SourceLocator.local(); Source source = locator.source(WhoopsApp.class.getName()); assertNotNull(source); assertArrayEquals(new int[]{0, 20}, source.range(1, 10)); assertArrayEquals(new int[]{5, 25}, source.range(15, 10)); assertArrayEquals(new int[]{15, 35}, source.range(33, 10)); } @Test public void emptyLinesShouldBeOneSpace() throws IOException { SourceLocator locator = SourceLocator.local(); Source source = locator.source(WhoopsApp.class.getName()); assertNotNull(source); assertEquals(" ", source.source(1, 2)); assertEquals("", source.source(-1, 2)); assertEquals("", source.source(10, Integer.MAX_VALUE)); } @Test public void findFile() throws IOException { SourceLocator locator = SourceLocator.local(); SourceLocator.Source source = locator.source("whoops.js"); assertNotNull(source); assertTrue(source.getPath().toFile().exists()); assertTrue(source.getLines().size() > 0); assertEquals(" console.log('hey')", source.source(1, 2)); assertEquals("})(jQuery);", source.source(2, 3)); } @Test public void missingFile() throws IOException { SourceLocator locator = SourceLocator.local(); Source source = locator.source("missing.js"); assertNotNull(source); assertFalse(source.getPath().toFile().exists()); assertTrue(source.getLines().size() == 0); assertEquals("", source.source(2, 1)); } }