public void testLM() throws Exception { IM im = new IM(); assertEquals(9, im.POINTS_PER_SECOND); assertEquals(im.maxDistance, im.position); im.maxDistance = 10.1; im.minDistance = 9.1; im.errorVariance = 0.0; im.errorMean = 0.0; im.position = im.maxDistance; im.speed = 1.0; im.moving = true; assertEquals("00010.10m\n", im.genDistance()); int i = 0; while (true) { im.doStep(); i++; if (im.position <= im.minDistance) break; assertEquals(im.maxDistance - i * im.speed / im.POINTS_PER_SECOND, im.position, 0.00000001); } assertEquals(false, im.moving); assertEquals(im.minDistance, im.position); // --- check maxDistance --- im.position = im.maxDistance - 0.0001; im.speed = -1.0; im.moving = true; im.doStep(); assertEquals(false, im.moving); assertEquals(im.maxDistance, im.position); im.unbind(); im = new IM(); im.unbind(); }
public void testSLM() throws Exception { IM im = new IM(); SLM slm = new SLM(); assertEquals(100, slm.prepareRange(1.0)); assertEquals(slm.MAX_RANGE, slm.prepareRange(Double.POSITIVE_INFINITY)); boolean save = slm.binaryMode; slm.binaryMode = true; slm.createPointsBuf(); assertEquals(-1, slm.lastBufPos); for (int range = 0; range <= slm.MAX_RANGE; range++) { slm.lastBufPos = -1; slm.putPointToBuf(range, 0, 0); slm.pointsBuf[2] = (byte) (range % 256); assertEquals(range / 256, toInt(slm.pointsBuf[1])); assertEquals(range % 256, toInt(slm.pointsBuf[2])); int rr = toInt(slm.pointsBuf[1]) * 256 + toInt(slm.pointsBuf[2]); assertEquals(range, rr); } slm.binaryMode = save; slm.lastBufPos = -1; assertEquals(0.0, slm.errorMean); assertEquals(0.0, slm.errorVariance); assertEquals(0.0, slm.zeroPerCircle); assertEquals(false, slm.hundr); im.moving = true; for (int i = 0; i < 10; i++) { im.doStep(); String distance = im.genDistance(); im.sendDistanceToAll(distance); Thread.sleep(10); assertEquals(distance, IM.FormatDistance(slm.distance)); } VolumeMock volume = new VolumeMock("127.0.0.1", slm.slmport); String cmd[][] = { {"H", "REPLIES ON"}, {"X", "*BINARY"}, {"?", "*MDA072"}, {"J", "v3.1d - Oct 12 2007"}, {"C", "*A00000"}, {"I00010", "*D00010"}, {"FE1543", "*F01543"}, {"FT", "*Tenth"}, {"S", "*STARTD"}, {"A", "*Lasron"} }; for (int i = 0; i < cmd.length; i++) { volume.Send(cmd[i][0] + "\n"); // slm.readProcessPacket(); assertEquals(cmd[i][1], volume.Recieve()); } }