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.Direction. 020 * 021 * @author Mathias Ricken 022 */ 023 public class Test_ASquareEnv_Direction 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 and ctors. 114 */ 115 public void testGetSet() { 116 ASquareEnv.Direction d = _env.makeDirection(); 117 assertEquals(0.0, d.getDeltaX(), 0.01); 118 assertEquals(-1.0, d.getDeltaY(), 0.01); 119 120 d = _env.makeDirection(-0.5, 0.5); 121 assertEquals(-0.5, d.getDeltaX(), 0.01); 122 assertEquals(0.5, d.getDeltaY(), 0.01); 123 124 ASquareEnv.Direction d2 = _env.makeDirection(d); 125 assertEquals(-0.5, d2.getDeltaX(), 0.01); 126 assertEquals(0.5, d2.getDeltaY(), 0.01); 127 } 128 129 /** 130 * Test turning. 131 */ 132 public void testTurn() { 133 ASquareEnv.Direction d = _env.makeDirection(); 134 d.turnRight(); 135 assertEquals(1.0, d.getDeltaX(), 0.01); 136 assertEquals(0.0, d.getDeltaY(), 0.01); 137 138 d.turnRight(Math.PI / 2); 139 assertEquals(0.0, d.getDeltaX(), 0.01); 140 assertEquals(1.0, d.getDeltaY(), 0.01); 141 142 d.turnLeft(-Math.PI); 143 assertEquals(0.0, d.getDeltaX(), 0.01); 144 assertEquals(-1.0, d.getDeltaY(), 0.01); 145 146 d.turnLeft(); 147 assertEquals(-1.0, d.getDeltaX(), 0.01); 148 assertEquals(0.0, d.getDeltaY(), 0.01); 149 } 150 151 /** 152 * Test reverse. 153 */ 154 public void testReverse() { 155 ASquareEnv.Direction d = _env.makeDirection(1, -1); 156 d.reverseDirection(); 157 assertEquals(-1.0, d.getDeltaX(), 0.01); 158 assertEquals(1.0, d.getDeltaY(), 0.01); 159 d.reverseDirection(); 160 assertEquals(1.0, d.getDeltaX(), 0.01); 161 assertEquals(-1.0, d.getDeltaY(), 0.01); 162 } 163 164 /** 165 * Test same. 166 */ 167 public void testSame() { 168 ASquareEnv.Direction d = _env.makeDirection(1, -1); 169 ASquareEnv.Direction d1 = _env.makeDirection(1, -1); 170 ASquareEnv.Direction d2 = _env.makeDirection(1, 2); 171 assertEquals(true, d.same(d1)); 172 assertEquals(false, d.same(d2)); 173 assertEquals(true, d1.same(d)); 174 assertEquals(false, d2.same(d)); 175 assertEquals(false, d2.same(d1)); 176 assertEquals(false, d1.same(d2)); 177 } 178 179 /** 180 * Test angle. 181 */ 182 public void testAngle() { 183 ASquareEnv.Direction d = _env.makeDirection(); 184 assertEquals(0.0 / 180 * Math.PI, d.getAngle(), 0.01); 185 d.turnRight(); 186 assertEquals(90.0 / 180 * Math.PI, d.getAngle(), 0.01); 187 188 d.turnRight(Math.PI / 2); 189 assertEquals(180.0 / 180 * Math.PI, d.getAngle(), 0.01); 190 191 d.turnLeft(-Math.PI); 192 assertEquals(0.0 / 180 * Math.PI, d.getAngle(), 0.01); 193 194 d.turnLeft(); 195 assertEquals(270.0 / 180 * Math.PI, d.getAngle(), 0.01); 196 } 197 198 }