public OrgStatesWorkflow(String s) { String st = s.trim(); if (st.length() == 0) { todoKeywords = new ArrayListSpaceSeparated(); doneKeywords = new ArrayListSpaceSeparated(); } else { int bar = st.indexOf('|'); if (bar == -1) { // No vertical bar - use last keyword as done state todoKeywords = new ArrayListSpaceSeparated(st); String last = todoKeywords.remove(todoKeywords.size() - 1); doneKeywords = new ArrayListSpaceSeparated(); doneKeywords.add(last); } else { todoKeywords = new ArrayListSpaceSeparated(st.substring(0, bar)); doneKeywords = new ArrayListSpaceSeparated(st.substring(bar+1)); } } }
public ArrayListSpaceSeparated(String str) { for (String s: str.split(DELIMITER)) { String st = s.trim(); if (st.length() > 0) { add(st); } } }
@Test public void testFromTodoToNext() { StateChangeLogic scl = new StateChangeLogic(new HashSet<>(Arrays.asList("DONE"))); scl.setState("NEXT", "TODO", null, null); assertEquals("NEXT", scl.getState()); assertNull(scl.getClosed()); }
@Test public void testWorkflow1() { OrgStatesWorkflow workflow = new OrgStatesWorkflow(" TODO NEXT |DONE "); assertEquals(2, workflow.getTodoKeywords().size()); assertEquals("TODO", workflow.getTodoKeywords().get(0)); assertEquals("NEXT", workflow.getTodoKeywords().get(1)); assertEquals(1, workflow.getDoneKeywords().size()); assertEquals("DONE", workflow.getDoneKeywords().get(0)); }
@Test public void testFromDoneToCncl() { StateChangeLogic scl = new StateChangeLogic(new HashSet<>(Arrays.asList("DONE", "CNCL"))); scl.setState("CNCL", "DONE", null, null); assertEquals("CNCL", scl.getState()); assertNotNull(scl.getClosed()); }
@Test public void testWorkflow2() { OrgStatesWorkflow workflow = new OrgStatesWorkflow("TODO DONE"); assertEquals(1, workflow.getTodoKeywords().size()); assertEquals("TODO", workflow.getTodoKeywords().get(0)); assertEquals(1, workflow.getDoneKeywords().size()); assertEquals("DONE", workflow.getDoneKeywords().get(0)); }
@Test public void testFromTodoToDONE() { StateChangeLogic scl = new StateChangeLogic(new HashSet<>(Arrays.asList("DONE"))); scl.setState("DONE", "TODO", null, null); assertEquals("DONE", scl.getState()); assertNotNull(scl.getClosed()); }
@Test public void testFromNoteToDoneWithRepeater() { StateChangeLogic scl = new StateChangeLogic(new HashSet<>(Arrays.asList("DONE"))); scl.setState("DONE", "NOTE", OrgRange.parse("<2018-02-06 Tue +7d>"), null); assertEquals("NOTE", scl.getState()); assertEquals("<2018-02-13 Tue +7d>", scl.getScheduled().toString()); assertNull(scl.getClosed()); }
@Test public void testFromNoteToTodoWithRepeater() { StateChangeLogic scl = new StateChangeLogic(new HashSet<>(Arrays.asList("DONE"))); scl.setState("NEXT", "NOTE", OrgRange.parse("<2018-02-06 Tue +7d>"), null); assertEquals("NEXT", scl.getState()); assertEquals("<2018-02-06 Tue +7d>", scl.getScheduled().toString()); assertNull(scl.getClosed()); } }