# HG changeset patch # User Nicolas Saunier # Date 1343099239 14400 # Node ID 13ec22bec5d4e2cce90fad06aef49005350bd5e9 # Parent 4b71e81e33837eb40a667f8bb787b29cb18f2a20 corrected typos and bugs and added a test diff -r 4b71e81e3383 -r 13ec22bec5d4 python/extrapolation.py --- a/python/extrapolation.py Mon Jul 23 12:35:45 2012 -0400 +++ b/python/extrapolation.py Mon Jul 23 23:07:19 2012 -0400 @@ -26,7 +26,8 @@ def predictPosition(self, nTimeSteps): if nTimeSteps > 0 and not nTimeSteps in self.predictedPositions.keys(): - self.predictedPositions[nTimeSteps], self.predictedspeedOrientations[nTimeSteps] = predictPosition(self.predictedPositions[nTimeSteps-1], self.predictedspeedOrientations[nTimeSteps-1], self.control, maxSpeed) + self.predictPosition(nTimeSteps-1) + self.predictedPositions[nTimeSteps], self.predictedSpeedOrientations[nTimeSteps] = moving.predictPosition(self.predictedPositions[nTimeSteps-1], self.predictedSpeedOrientations[nTimeSteps-1], self.control, self.maxSpeed) return self.predictedPositions[nTimeSteps] class ExtrapolatedTrajectoryAdaptation(ExtrapolatedTrajectoryConstant): @@ -204,3 +205,12 @@ return POC +if __name__ == "__main__": + import doctest + import unittest + suite = doctest.DocFileSuite('tests/extrapolation.txt') + #suite = doctest.DocTestSuite() + unittest.TextTestRunner().run(suite) + #doctest.testmod() + #doctest.testfile("example.txt") + diff -r 4b71e81e3383 -r 13ec22bec5d4 python/moving.py --- a/python/moving.py Mon Jul 23 12:35:45 2012 -0400 +++ b/python/moving.py Mon Jul 23 23:07:19 2012 -0400 @@ -245,11 +245,11 @@ def __add__(self, other): 'a norm cannot become negative' - return NormAngle(max(self.norm+other.norm, 0), self.orientation+other.orientation) + return NormAngle(max(self.norm+other.norm, 0), self.angle+other.angle) def getPoint(self): from math import cos, sin - return Point(self.norm*cos(self.orientation), self.norm*sin(self.orientation)) + return Point(self.norm*cos(self.angle), self.norm*sin(self.angle)) def predictPositionNoLimit(nTimeSteps, initialPosition, initialVelocity, initialAcceleration = Point(0,0)): @@ -571,7 +571,7 @@ def predictPosition(self, instant, nTimeSteps, externalAcceleration = Point(0,0)): '''Predicts the position of object at instant+deltaT, at constant speed''' - return predictPosition(nTimeSteps, self.getPositionAtInstant(instant), self.getVelocityAtInstant(instant), externalAcceleration) + return predictPositionNoLimit(nTimeSteps, self.getPositionAtInstant(instant), self.getVelocityAtInstant(instant), externalAcceleration) @staticmethod def collisionCourseDotProduct(movingObject1, movingObject2, instant): diff -r 4b71e81e3383 -r 13ec22bec5d4 python/run-tests.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/run-tests.sh Mon Jul 23 23:07:19 2012 -0400 @@ -0,0 +1,7 @@ +#!/bin/sh +# for file in tests/*... basename +python moving.py +python storage.py +python indicators.py +python utils.py +python extrapolation.py \ No newline at end of file diff -r 4b71e81e3383 -r 13ec22bec5d4 python/tests/extrapolation.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/tests/extrapolation.txt Mon Jul 23 23:07:19 2012 -0400 @@ -0,0 +1,8 @@ +>>> import extrapolation +>>> import moving + +>>> et = extrapolation.ExtrapolatedTrajectoryConstant(moving.Point(0,0), moving.Point(1,0)) +>>> et.predictPosition(4) # doctest:+ELLIPSIS +(0.0...,4.0...) +>>> et.predictPosition(1) # doctest:+ELLIPSIS +(0.0...,1.0...) diff -r 4b71e81e3383 -r 13ec22bec5d4 python/tests/moving.txt --- a/python/tests/moving.txt Mon Jul 23 12:35:45 2012 -0400 +++ b/python/tests/moving.txt Mon Jul 23 23:07:19 2012 -0400 @@ -54,8 +54,8 @@ >>> Point(3,2).inPolygon([Point(0,0),Point(4,0),Point(4,3),Point(0,3)]) True ->>> predictPosition(10, Point(0,0), Point(1,1)) # doctest:+ELLIPSIS -(10...,10...) +>>> predictPositionNoLimit(10, Point(0,0), Point(1,1)) # doctest:+ELLIPSIS +((1.0...,1.0...), (10.0...,10.0...)) >>> segmentIntersection(Point(0,0),Point(1,1), Point(0,1), Point(1,2)) >>> segmentIntersection(Point(0,1),Point(1,0), Point(0,2), Point(2,1))