public void testGraphSize1() {
Graph g0 = graphWith( "x p y" );
Graph g1 = graphWith( "x p z; z p zz" ); // disjoint with g0
Graph g2 = graphWith( "x p y; z p a" ); // intersects with g1
Graph m01 = new MultiUnion( new Graph[] {g0, g1} );
Graph m10 = new MultiUnion( new Graph[] {g1, g0} );
Graph m12 = new MultiUnion( new Graph[] {g1, g2} );
Graph m21 = new MultiUnion( new Graph[] {g2, g1} );
Graph m02 = new MultiUnion( new Graph[] {g0, g2} );
Graph m20 = new MultiUnion( new Graph[] {g2, g0} );
Graph m00 = new MultiUnion( new Graph[] {g0, g0} );
int s0 = g0.size();
int s1 = g1.size();
int s2 = g2.size();
assertEquals( "Size of union of g0 and g1 not correct", s0+s1, m01.size() );
assertEquals( "Size of union of g1 and g0 not correct", s0+s1, m10.size() );
assertEquals( "Size of union of g1 and g2 not correct", s1+s2, m12.size() );
assertEquals( "Size of union of g2 and g1 not correct", s1+s2, m21.size() );
assertEquals( "Size of union of g0 and g2 not correct", s0+s2 - 1, m02.size() );
assertEquals( "Size of union of g2 and g0 not correct", s0+s2 - 1, m20.size() );
assertEquals( "Size of union of g0 with itself not correct", s0, m00.size() );
}