package de.westnordost.streetcomplete.data.osm.tql; import junit.framework.TestCase; public class StringWithCursorTest extends TestCase { public void testAdvance() { StringWithCursor x = new StringWithCursor("ab"); assertEquals(0, x.getCursorPos()); assertEquals('a', x.advance()); assertEquals(1, x.getCursorPos()); assertEquals('b', x.advance()); assertEquals(2, x.getCursorPos()); try { x.advance(); fail(); } catch (IndexOutOfBoundsException e) { } } public void testAdvanceBy() { StringWithCursor x = new StringWithCursor("wundertuete"); assertEquals("wunder",x.advanceBy(6)); assertEquals("", x.advanceBy(0)); try { x.advanceBy(-1); fail(); } catch(IndexOutOfBoundsException e) { } assertEquals("tuete",x.advanceBy(99999)); } public void testNextIsAndAdvance() { StringWithCursor x = new StringWithCursor("test123"); assertTrue(x.nextIsAndAdvance("te")); assertEquals(2, x.getCursorPos()); assertFalse(x.nextIsAndAdvance("te")); x.advanceBy(3); assertTrue(x.nextIsAndAdvance("23")); assertEquals(7, x.getCursorPos()); assertTrue(x.isAtEnd()); } public void testNextIsAndAdvanceChar() { StringWithCursor x = new StringWithCursor("test123"); assertTrue(x.nextIsAndAdvance('t')); assertEquals(1, x.getCursorPos()); assertFalse(x.nextIsAndAdvance('t')); x.advanceBy(3); assertTrue(x.nextIsAndAdvance('1')); assertEquals(5, x.getCursorPos()); } public void testNextIsAndAdvanceIgnoreCase() { StringWithCursor x = new StringWithCursor("test123"); assertTrue(x.nextIsAndAdvanceIgnoreCase("TE")); assertTrue(x.nextIsAndAdvanceIgnoreCase("st")); } public void testFindNext() { StringWithCursor x = new StringWithCursor("abc abc"); assertEquals("abc abc".length(), x.findNext("wurst")); assertEquals(0,x.findNext("abc")); x.advance(); assertEquals(3, x.findNext("abc")); } public void testFindNextChar() { StringWithCursor x = new StringWithCursor("abc abc"); assertEquals("abc abc".length(), x.findNext('x')); assertEquals(0,x.findNext('a')); x.advance(); assertEquals(3,x.findNext('a')); } public void testNextIsChar() { StringWithCursor x = new StringWithCursor("abc"); assertTrue(x.nextIs('a')); assertFalse(x.nextIs('b')); x.advance(); assertTrue(x.nextIs('b')); x.advance(); assertTrue(x.nextIs('c')); x.advance(); assertFalse(x.nextIs('c')); } public void testNextIsString() { StringWithCursor x = new StringWithCursor("abc"); assertTrue(x.nextIs("abc")); assertTrue(x.nextIs("ab")); assertFalse(x.nextIs("bc")); x.advance(); assertTrue(x.nextIs("bc")); x.advance(); x.advance(); assertFalse(x.nextIs("c")); } public void testNextIsStringIgnoreCase() { StringWithCursor x = new StringWithCursor("abc"); assertTrue(x.nextIsIgnoreCase("A")); assertTrue(x.nextIsIgnoreCase("a")); } }