{
String str = "(true (control xplayer)) (true (cell 2 2 b)) (role xplayer)" +
"(<= (next (control ?x)) (control ?y) (distinct ?x ?y))";
ByteArrayInputStream in = new ByteArrayInputStream( str.getBytes() );
GdlList gdl = parser_.parse( in );
assertEquals(4, gdl.getSize());
for ( GdlExpression elem : gdl )
assertEquals(GdlList.class, elem.getClass());
GdlList elem1 = (GdlList) gdl.getElement(0);
GdlList elem2 = (GdlList) gdl.getElement(1);
GdlList elem3 = (GdlList) gdl.getElement(2);
GdlList elem4 = (GdlList) gdl.getElement(3);
assertEquals(2, elem1.getSize());
assertEquals(2, elem2.getSize());
assertEquals(2, elem3.getSize());
assertEquals(4, elem4.getSize());
GdlList l;
assertEquals( atom( "true" ), elem1.getElement( 0 ) );
l = new GdlList( symbolTable_, new GdlExpression [] { atom( "control" ),
atom( "xplayer" ) } );
assertEquals( l, elem1.getElement( 1 ) );
assertEquals( atom( "true" ), elem2.getElement( 0 ) );
l = new GdlList( symbolTable_, new GdlExpression [] { atom( "cell" ),
atom( "2" ), atom( "2" ), atom( "b" ) } );
assertEquals( l, elem2.getElement( 1 ) );
assertEquals( atom( "role" ), elem3.getElement( 0 ) );
assertEquals( atom( "xplayer" ), elem3.getElement( 1 ) );
assertEquals( atom( "<=" ), elem4.getElement( 0 ) );
l = new GdlList( symbolTable_, new GdlExpression [] {
atom( "next" ),
new GdlList( symbolTable_, new GdlExpression [] { atom( "control" ),
var( "x" ) } ) } );
assertEquals( l, elem4.getElement( 1 ) );
l = new GdlList( symbolTable_, new GdlExpression [] { atom( "control" ),
var( "y" ) } );
assertEquals( l, elem4.getElement( 2 ) );
l = new GdlList( symbolTable_, new GdlExpression [] { atom( "distinct" ),
var( "x" ), var( "y" ) } );
assertEquals( l, elem4.getElement( 3 ) );
}