View Javadoc

1   package io.github.reggert.reb4j;
2   
3   import static org.hamcrest.CoreMatchers.is;
4   import static org.junit.Assert.assertThat;
5   
6   import io.github.reggert.reb4j.CharLiteral;
7   import io.github.reggert.reb4j.Expression;
8   import io.github.reggert.reb4j.Literal;
9   import io.github.reggert.reb4j.Sequence;
10  
11  import java.util.HashSet;
12  
13  import org.junit.Test;
14  
15  
16  
17  public class SequenceTest
18  {
19  
20  	@Test
21  	public void testSequence()
22  	{
23  		final CharLiteral a = Literal.literal('a');
24  		final CharLiteral b = Literal.literal('b');
25  		final CharLiteral c = Literal.literal('c');
26  		final CharLiteral d = Literal.literal('d');
27  		final CharLiteral e = Literal.literal('e');
28  		final CharLiteral f = Literal.literal('f');
29  		final Sequence ab = a.andThen(b);
30  		final Sequence abc = ab.andThen(c);
31  		final Sequence ef = e.andThen(f);
32  		final Sequence def = d.andThen(ef);
33  		final Sequence abcdef = abc.andThen(def);
34  		
35  		assertThat(ab.toPattern().pattern(), is("ab"));
36  		assertThat(abc.toPattern().pattern(), is("abc"));
37  		assertThat(ef.toPattern().pattern(), is("ef"));
38  		assertThat(def.toPattern().pattern(), is("def"));
39  		assertThat(abcdef.toPattern().pattern(), is("abcdef"));
40  	}
41  
42  	@Test
43  	public void testSequenceHashcodeEquals()
44  	{
45  		final CharLiteral a = Literal.literal('a');
46  		final CharLiteral b = Literal.literal('b');
47  		final CharLiteral c = Literal.literal('c');
48  		
49  		final Sequence ab = a.andThen(b);
50  		final Sequence abc1 = ab.andThen(c);
51  		final Sequence abc2 = Sequence.sequence(a, b, c);
52  		final HashSet<Expression> expressions = new HashSet<Expression>();
53  		expressions.add(a);
54  		expressions.add(b);
55  		expressions.add(c);
56  		expressions.add(abc1);
57  		assertThat(expressions.size(), is(4));
58  		assertThat(expressions.contains(abc1), is(true));
59  		assertThat(expressions.contains(abc2), is(true));
60  		assertThat(expressions.contains(ab), is(false));
61  		assertThat(abc1.equals(abc1), is(true));
62  		assertThat(abc1.equals(abc2), is(true));
63  		assertThat(abc1.equals(a), is(false));
64  		assertThat(abc1.equals(null), is(false));
65  	}
66  	
67  }