001    package sysModel.env.tests;
002    
003    import controller.IScrollAdapter;
004    import junit.framework.TestCase;
005    import model.ILambda;
006    import sysModel.ICmdFactory;
007    import sysModel.ISecurityAdapter;
008    import sysModel.fish.AFish;
009    import sysModel.env.AEnvFactory;
010    import sysModel.env.AGlobalEnv;
011    import sysModel.env.ASquareEnv;
012    import sysModel.parser.Lexer;
013    
014    import java.awt.*;
015    import java.awt.geom.Point2D;
016    import java.io.PrintWriter;
017    
018    /**
019     * Test cases for ASquareEnv.Location.
020     *
021     * @author Mathias Ricken
022     */
023    public class Test_ASquareEnv_Location extends TestCase {
024        private ICmdFactory _cmdFactory;
025        private ISecurityAdapter _sm;
026        private ASquareEnv _env;
027    
028        private static final ILambda _notify = new ILambda() {
029            public Object apply(Object param) {
030                return "notifyCmd";
031            }
032        };
033        private static final ILambda _delete = new ILambda() {
034            public Object apply(Object param) {
035                return "deleteCmd";
036            }
037        };
038        private static final ILambda _add = new ILambda() {
039            public Object apply(Object param) {
040                return "addCmd";
041            }
042        };
043    
044        public void setUp() throws Exception {
045            super.setUp();
046            _cmdFactory = new ICmdFactory() {
047                public ILambda makeNotifyCmd(ILambda lambda) {
048                    return _notify;
049                }
050    
051                public ILambda makeDeleteCmd(AGlobalEnv.ALocalEnv env) {
052                    return _delete;
053                }
054    
055                public ILambda makeAddCmd(AFish fish) {
056                    return _add;
057                }
058            };
059            _sm = new ISecurityAdapter() {
060                public void setProtected(boolean _protected) {
061                }
062                public ThreadGroup getFishThreadGroup() {
063                    return null;
064                }
065                public ClassLoader getClassLoader() {
066                    return null;
067                }
068                public void handleException(Throwable t) {
069                }
070            };
071    
072            _env = new ASquareEnv(_cmdFactory, _sm) {
073                protected void addFishToInternalData(ALocalEnv localEnv, AFish fish) {
074                }
075    
076                protected ASquareEnv.ASquareLocalEnvironment makeLocalEnv(ASquareEnv.Location loc,
077                                                                          ASquareEnv.Direction dir) {
078                    return null;
079                }
080    
081                protected AGlobalEnv parseEnvironment(Lexer l) {
082                    return null;
083                }
084    
085                public AEnvFactory makeEnvFactory() {
086                    return null;
087                }
088    
089                protected void printHeader(PrintWriter pw) {
090                }
091    
092                public Dimension getDisplaySize() {
093                    return null;
094                }
095    
096                public void returnHome(IScrollAdapter sa) {
097                }
098    
099                public Point2D.Double getViewPosition(Point2D.Double pos) {
100                    return null;
101                }
102    
103                public Point2D.Double getPanDelta(Point2D.Double delta) {
104                    return null;
105                }
106    
107                protected void removeFishFromInternalData(ALocalEnv localEnv) {
108                }
109            };
110        }
111    
112        /**
113         * Test getters, setters, and ctor.
114         */
115        public void testGetSet() {
116            ASquareEnv.Location l = _env.makeLocation(5, 7);
117            assertEquals(5.0, l.getX(), 0.01);
118            assertEquals(7.0, l.getY(), 0.01);
119    
120            l.setX(11);
121            assertEquals(11.0, l.getX(), 0.01);
122            assertEquals(7.0, l.getY(), 0.01);
123    
124            l.setY(13);
125            assertEquals(11.0, l.getX(), 0.01);
126            assertEquals(13.0, l.getY(), 0.01);
127        }
128    
129        /**
130         * Test same.
131         */
132        public void testSame() {
133            ASquareEnv.Location l = _env.makeLocation(17, 23);
134            ASquareEnv.Location l1 = _env.makeLocation(17, 23);
135            ASquareEnv.Location l2 = _env.makeLocation(31, 37);
136            assertEquals(true, l.same(l1));
137            assertEquals(false, l.same(l2));
138            assertEquals(true, l1.same(l));
139            assertEquals(false, l2.same(l));
140            assertEquals(false, l2.same(l1));
141            assertEquals(false, l1.same(l2));
142        }
143    
144        /**
145         * Test inField.
146         */
147        public void testInField() {
148            ASquareEnv.Location l = _env.makeLocation(17, 23);
149            ASquareEnv.Location l1 = _env.makeLocation(17, 23);
150            ASquareEnv.Location l2 = _env.makeLocation(17.13, 23.53);
151            ASquareEnv.Location l3 = _env.makeLocation(17.49, 23.77);
152            ASquareEnv.Location l4 = _env.makeLocation(31, 37);
153            ASquareEnv.Location l5 = _env.makeLocation(31.81, 37.51);
154            assertEquals(true, l.inField(l1));
155            assertEquals(true, l1.inField(l));
156            assertEquals(true, l.inField(l2));
157            assertEquals(true, l2.inField(l));
158            assertEquals(true, l.inField(l3));
159            assertEquals(true, l3.inField(l));
160            assertEquals(false, l.inField(l4));
161            assertEquals(false, l4.inField(l));
162            assertEquals(false, l.inField(l5));
163            assertEquals(false, l5.inField(l));
164        }
165    
166        /**
167         * Test getNeighbor.
168         */
169        public void testNeighbor() {
170            ASquareEnv.Location l = _env.makeLocation(17, 23);
171            ASquareEnv.Location l1 = _env.makeLocation(17, 22);
172            ASquareEnv.Location l2 = _env.makeLocation(18, 22);
173            ASquareEnv.Location l3 = _env.makeLocation(18, 23);
174            ASquareEnv.Location l4 = _env.makeLocation(17, 23);
175            l = l.getNeighbor(_env.makeDirection(0, -1));
176            assertEquals(true, l.same(l1));
177            l = l.getNeighbor(_env.makeDirection(1, 0));
178            assertEquals(true, l.same(l2));
179            l = l.getNeighbor(_env.makeDirection(0, 1));
180            assertEquals(true, l.same(l3));
181            l = l.getNeighbor(_env.makeDirection(-1, 0));
182            assertEquals(true, l.same(l4));
183        }
184    }