001    package test; 
002    
003    import java.util.HashSet;
004    import java.util.Set;
005    
006    import junit.framework.TestCase;
007    import physics3d.Vect3;
008    
009    import components.Ball;
010    import components.CircleBumper;
011    import components.GameObject;
012    import components.GameSettings;
013    import components.GameSpace;
014    import components.SquareBumper;
015    import components.TriangleBumper;
016    
017    public class TestGameSpace extends TestCase {
018            GameSpace g1, g2, g3;
019            
020            Vect3 v1 = new Vect3(1, 1, 1);
021            Vect3 v2 = new Vect3(10, 2, 2);
022            Vect3 v3 = new Vect3(20, 3, 3);
023            Vect3 v4 = new Vect3(30, 4, 4);
024            Vect3 v5 = new Vect3(40, 5, 5);
025            Vect3 v6 = new Vect3(50, 6, 6);
026            
027            Ball b1, b2, b3;
028            
029            SquareBumper s1, s2;
030            
031            TriangleBumper t1, t2;
032            
033            CircleBumper c1, c2;
034            
035            Set<GameObject> mo1;
036            Set<GameObject> mo2;
037            Set<GameObject> fo1;
038            Set<GameObject> fo2;
039            Set<GameObject> allObj2;
040            
041            public TestGameSpace(String name) {
042                    super(name);
043                    
044                    //g1 has: b1, b3; s1, t1, c1 
045                    g1 = new GameSpace(new GameSettings());
046                    
047                    //g2 has: b2; s2, t1, c1
048                    g2 = new GameSpace(new GameSettings());
049                    
050                    g3 = new GameSpace(new GameSettings());
051                    
052                    b1 = new Ball(v1, "ball1", g1);
053                    b2 = new Ball(v2, "ball2", g2);
054                    b3 = new Ball(v3, "ball3", g1);
055                    
056                    s1 = new SquareBumper(v3, "s1", g1);
057                    s2 = new SquareBumper(v4, "s2", g2);
058                    
059                    t1 = new TriangleBumper(v4, "t1", g1);
060                    t2 = new TriangleBumper(v3, "t2", g2);
061                    
062                    c1 = new CircleBumper(v5, "c1", g1);
063                    c2 = new CircleBumper(v6, "c2", g2);
064                    
065                    g1.add(b1);
066                    g1.add(b3);
067                    g1.add(s1);
068                    g1.add(t1);
069                    g1.add(c1);
070                    
071                    g2.add(b2);
072                    g2.add(s2);
073                    g2.add(t2);
074                    g2.add(c2);
075            
076                    mo1 = new HashSet<GameObject>();
077                    mo1.add(b1);
078                    mo1.add(b3);
079                    
080                    mo2 = new HashSet<GameObject>();
081                    mo2.add(b2);
082                    
083                    fo1 = new HashSet<GameObject>();
084                    fo1.add(s1);
085                    fo1.add(t1);
086                    fo1.add(c1);
087                    
088                    fo2 = new HashSet<GameObject>();
089                    fo2.add(s2);
090                    fo2.add(t2);
091                    fo2.add(c2);
092                    
093                    Set<GameObject> allObj = new HashSet<GameObject>(fo1);
094                    allObj.addAll(mo1);
095                    
096                    allObj2 = new HashSet<GameObject>();
097                    allObj2.add(b2);
098                    allObj2.add(s2);
099                    allObj2.add(t2);
100                    allObj2.add(c2);
101                    
102            }
103            
104            protected void setUp() {}
105            
106            /////Test Legal GameSpace creation
107            protected void testCreation(GameSettings settings) {
108                    GameSpace g = null;
109                    try {
110                            g = new GameSpace(settings);
111                    } catch (Exception e) {
112                            fail("couldn't create GameSpace with legal values");
113                    }
114            }
115            
116            /////Test getObjects()
117            public void testGetObjects1() {
118                    checkGetObjects(g1, allObj2);
119            }
120            
121            public void testGetObject2() {
122                    checkGetObjects(g2, allObj2);
123            }
124            
125            protected void checkGetObjects(GameSpace g, Set<GameObject> set) {
126                    assertEquals(g.getObjects(), set);
127            }
128            
129            
130            //No longer valid after changes
131    //      /////Test getFixedObjects()
132    //      public void testGetFixed() {
133    //              checkGetFixedObjects(g1, fo1);
134    //      }
135    //      
136    //      public void testGetFixed2() {
137    //              checkGetFixedObjects(g2, fo2);
138    //      }
139    //      
140    
141            
142            
143            /////Test add()
144            public void testAddFixed() {
145                    checkAdd(g1, new CircleBumper(v2, "circle", g1));
146            }
147            
148            public void testAddMobile() {
149                    checkAdd(g1, new Ball(v6, "ball", g1));
150            }
151            
152            protected void checkAdd(GameSpace g, GameObject o) {
153                    try {
154                            g.add(o);
155                    } catch (Exception e) {
156                            fail("could not add legal GameObject");
157                    }
158                    assertTrue(g.getObjects().contains(o));
159            }
160    
161            
162    }