package org.kefirsf.bb.proc; import org.junit.Test; import java.util.HashSet; import java.util.Set; import static org.junit.Assert.*; /** * @author Vitaliy Samolovskih aka Kefir */ public class SourceTest { // Any string for tests private static final String EXAMPLE = "abcdefghijklmnopqrstuvwxyz"; private static final int EXAMPLE_LENGTH = EXAMPLE.length(); private static final String LEFT = "abc"; private static final String CENTER = "defh"; private static final String RIGHT = "ijklm"; private static final StringBuilder STR_FOR_SUB; static { STR_FOR_SUB = new StringBuilder(); STR_FOR_SUB.append(LEFT); STR_FOR_SUB.append(CENTER); STR_FOR_SUB.append(RIGHT); } @Test public void testFind(){ Source source = new Source(STR_FOR_SUB); Set<PatternConstant> constants = new HashSet<PatternConstant>(); PatternConstant left = new PatternConstant(LEFT, false); PatternConstant center = new PatternConstant(CENTER, false); PatternConstant right = new PatternConstant(RIGHT, false); constants.add(left); constants.add(center); constants.add(right); source.setConstantSet(constants); assertEquals(0, source.find(left)); assertEquals(LEFT.length(), source.find(center)); assertEquals(LEFT.length()+CENTER.length(), source.find(right)); } @Test public void testNextIs(){ Source source = new Source(STR_FOR_SUB); Set<PatternConstant> constants = new HashSet<PatternConstant>(); PatternConstant left = new PatternConstant(LEFT, false); PatternConstant center = new PatternConstant(CENTER, false); PatternConstant right = new PatternConstant(RIGHT, false); constants.add(left); constants.add(center); constants.add(right); source.setConstantSet(constants); assertTrue(source.nextIs(left)); source.setOffset(LEFT.length()); assertTrue(source.nextIs(center)); source.setOffset(LEFT.length()+CENTER.length()); assertTrue(source.nextIs(right)); } @Test public void testNext() { Source source = new Source(EXAMPLE); source.setConstantSet(new HashSet<PatternConstant>()); for (int i = 0; i < EXAMPLE_LENGTH; i++) { assertEquals(EXAMPLE.charAt(i), source.next()); } } @Test public void testGetOffset() { Source source = new Source(EXAMPLE); source.setConstantSet(new HashSet<PatternConstant>()); for (int i = 0; i < source.length(); ) { assertEquals(source.getOffset(), i); i++; source.incOffset(); } } @Test public void testIncOffset() { Source source = new Source(EXAMPLE); source.setConstantSet(new HashSet<PatternConstant>()); int inc = 3; for (int i = 0; i < source.length(); ) { assertEquals(source.getOffset(), i); i += 3; source.incOffset(inc); } } @Test public void testHasNext() { Source source = new Source(EXAMPLE); source.setConstantSet(new HashSet<PatternConstant>()); for (int i = 0; i < EXAMPLE_LENGTH; i++) { assertTrue(source.hasNext()); source.incOffset(); } assertFalse(source.hasNext()); } @Test public void testGetLength() { assertEquals(new Source(EXAMPLE).length(), EXAMPLE_LENGTH); } @Test public void testSub() { Source source = new Source(STR_FOR_SUB); source.setConstantSet(new HashSet<PatternConstant>()); source.incOffset(LEFT.length()); assertEquals(CENTER, source.sub(LEFT.length() + CENTER.length()).toString()); } @Test public void testSubToEnd() { Source source = new Source(STR_FOR_SUB); source.setConstantSet(new HashSet<PatternConstant>()); source.incOffset(LEFT.length()); assertEquals(CENTER + RIGHT, source.subToEnd().toString()); } }