def test_save_simpleJointFile_simple(self):
     preparedSequence = self.preparePositionSequence()
     targetFilepath = "data/temp.txt"
     self.manager.save(preparedSequence, targetFilepath)
     
     #load and test
     loadedSequence = PositionSequence([])
     self.manager.load(loadedSequence, targetFilepath)
     
     assert loadedSequence.amount() == 100, "Sequence should consist of 100 positions"
     
     os.remove(targetFilepath)
class TestSequenceFileManager:
    
    def setup_method(self, method):
        self.manager = SequenceFileManager()
        self.sequence = PositionSequence([])
        
    def test_load_simpleJointFile(self):
        self.manager.load(self.sequence, "data/simple.txt")
        
        assert self.sequence.amount() == 3
    
    def test_save_simpleJointFile_fileCreation(self):
        preparedSequence = self.preparePositionSequence()
        targetFilepath = "data/temp.txt"
        self.manager.save(preparedSequence, targetFilepath)
        
        assert os.path.exists(targetFilepath) 
        os.remove(targetFilepath)
        
    def test_save_simpleJointFile_simple(self):
        preparedSequence = self.preparePositionSequence()
        targetFilepath = "data/temp.txt"
        self.manager.save(preparedSequence, targetFilepath)
        
        #load and test
        loadedSequence = PositionSequence([])
        self.manager.load(loadedSequence, targetFilepath)
        
        assert loadedSequence.amount() == 100, "Sequence should consist of 100 positions"
        
        os.remove(targetFilepath)
        
    
    def test_load_fileNotFound(self):
        try:
            self.manager.load(self.sequence, "dummyFileDoesnExists.txt")
        except:
            assert py.test.raises(Exception, "Filename not found")
            return
        
        assert False, "Exception not thrown"
    
    #helpers
    def preparePositionSequence(self):
        sequence = PositionSequence([])
        for i in range(0,100):
            sequence.appendPosition(JointPosition([0*i,1*i,2*i,3*i,4*i,5*i]))
        
        return sequence
    
    def teardown_method(self, method):
        self.manager = 0
        self.sequence = 0
class TestPositionLineIntepreter:
	
	def setup_method(self, method):
		self.interpreter = PositionLineInterpreter()
		self.sequence = PositionSequence([])
		
	def test_simpleJoint(self):
		self.interpreter.interpret(self.sequence, "move(60.0,-30.0,30.0,-20.0,10.0,-40.0)")
		
		assert self.sequence.amount() == 1
		assert self.sequence.getCurrentPosition().getValue()[1] == -30
	
	def test_comments(self):
		self.interpreter.interpret(self.sequence, "#testing line")
		
		assert self.sequence.amount() == 0
		
	def test_newline(self):
		self.interpreter.interpret(self.sequence, " \n")
		
		assert self.sequence.amount() == 0
	
	def test_cartesianLine(self):
		self.interpreter.interpret(self.sequence, "moveCartesian(60.0,-30.0,30.0)")
		
		assert self.sequence.amount() == 1
		assert self.sequence.getCurrentPosition().type == "Cartesian"
		
	def test_deltaJointLine(self):
		self.interpreter.interpret(self.sequence, "moveBy(60.0,-30.0,30.0,3,3,3)")
		
		assert self.sequence.amount() == 1
		assert self.sequence.getCurrentPosition().type == "DeltaJoint"
	
	def test_deltaCartesianLine(self):
		self.interpreter.interpret(self.sequence, "moveCartesianBy(60.0,-30.0,30.0)")
		
		assert self.sequence.amount() == 1
		assert self.sequence.getCurrentPosition().type == "DeltaCartesian"
	
	def teardown_method(self, method):
		self.interpreter = 0
		self.sequence = 0