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 }