package glug.parser; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import java.text.ParseException; import org.junit.Test; public class BracketCounterTest { @Test public void shouldTrackBracketCountInACharSequence() throws Exception { assertThat(new BracketCounter().count("[Fish]"), equalTo(0)); assertThat(new BracketCounter().count("[Fish"), equalTo(1)); assertThat(new BracketCounter().count("[Fish[Dog]]"), equalTo(0)); assertThat(new BracketCounter().count("[Fish[Dog]"), equalTo(1)); assertThat(new BracketCounter().count("[Fish[Dog] [Cat]"), equalTo(1)); assertThat(new BracketCounter().count("[[[Fish"), equalTo(3)); } @Test(expected=ParseException.class) public void shouldThrowParseExceptionIfCountGoesBelowZero() throws Exception { new BracketCounter().count("[Fish]]"); } @Test public void shouldReportALineAsClosed() throws Exception { String foo = "72097.436: [GC 72097.436: [ParNew: 327075K->32265K(345600K), 0.0599930 secs] 1423750K->1128941K(1534464K), 0.0602150 secs]"; assertThat(new BracketCounter().bracketsAreClosedWith(foo),is(true)); } }