package fitnesse.wiki; import static fitnesse.wiki.PageType.*; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Collection; import java.util.List; import fitnesse.wiki.fs.InMemoryPage; import org.junit.Test; public class PageTypeTest { @Test public void fromString() { assertEquals(SUITE, PageType.fromString("Suite")); assertEquals(TEST, PageType.fromString(TEST.toString())); assertEquals(STATIC, PageType.fromString("Static")); try { PageType.fromString("unknown"); fail("should have thrown an exception"); } catch (IllegalArgumentException e) { } } @Test public void fromSuiteWikiPage() throws Exception { WikiPage page = createSuitePage(); assertEquals(SUITE, PageType.fromWikiPage(page)); } private WikiPage createSuitePage() throws Exception { WikiPage page = createDefaultPage(); setPageTypeAttribute(page, SUITE); return page; } private void setPageTypeAttribute(WikiPage page, PageType attribute) throws Exception { PageData pageData = page.getData(); pageData.setAttribute(attribute.toString(), "true"); page.commit(pageData); } private WikiPage createDefaultPage() throws Exception { WikiPage page = InMemoryPage.makeRoot("RooT"); return page; } @Test public void fromTestWikiPage() throws Exception { WikiPage page = createTestPage(); assertEquals(PageType.TEST, PageType.fromWikiPage(page)); } private WikiPage createTestPage() throws Exception { WikiPage page = createDefaultPage(); setPageTypeAttribute(page, TEST); return page; } @Test public void fromNormalWikiPage() throws Exception { WikiPage page = createDefaultPage(); assertEquals(STATIC, PageType.fromWikiPage(page)); } private Collection<Object[]> pageTypeFromPageNameData() { List<Object[]> values = new ArrayList<>(); addTestData(values, SUITE, "SuitePage"); addTestData(values, SUITE, "PageSuite"); addTestData(values, SUITE, "PageExamples"); addTestData(values, TEST, "TestPage"); addTestData(values, TEST, "PageTest"); addTestData(values, TEST, "ExamplePage"); addTestData(values, TEST, "PageExample"); addTestData(values, STATIC, "NormalPage"); addTestData(values, STATIC, "SuiteSetUp"); addTestData(values, STATIC, "SetUp"); addTestData(values, STATIC, "SuiteTearDown"); addTestData(values, STATIC, "TearDown"); addTestData(values, STATIC, "ExamplesNormal"); return values; } private static void addTestData(List<Object[]> values, PageType test, String string) { values.add(new Object[] { test, string}); } @Test public void pageTypeFromPageName() { Collection<Object[]> testData = pageTypeFromPageNameData(); for (Object[] testItem: testData) { PageType pageType = (PageType) testItem[0]; String pageName = (String) testItem[1]; assertEquals(pageType, getPageTypeForPageName(pageName)); } } }