def testReadlineOffset(self):
     self.serialWrapper.close()
     self.serialWrapper= SerialWrapper("/dev/ttyUSB0","115200","\n",2)
     testOffset = "TESTSTRING\nTY"
     self._log.debug( "\nWriting strings so we can test readine" )
     self.serialWrapper.write(testOffset)
     self.serialWrapper.write(testOffset)
     self.serialWrapper.write(testOffset)
     self.serialWrapper.write(testOffset)
     # give the server time to send it
     time.sleep(1)
     self._log.debug( "\nTesting serialWrapper.readline()" )
     
     line1 = self.serialWrapper.readline()
     self._log.debug ("line 1 is %s" %line1)
     assert line1 == testOffset
             
     line2 = self.serialWrapper.readline()
     self._log.debug ("line 2 is %s" %line2)        
     assert line2 == testOffset
     
     line3 = self.serialWrapper.readline()
     self._log.debug ("line 3 is %s" %line3)       
     assert line3 == testOffset
     
     line3 = self.serialWrapper.readline()
     self._log.debug ("line 3 is %s" %line3)
     assert line3 == testOffset
 def setUp(self):
     self.ninebytestring = "helloff\n"
     self.serialWrapper = SerialWrapper("/dev/ttyUSB0","115200","\n")
     self._log = logging.getLogger ( "TestSerialWrapper" )
     self._log.debug("\n\nsetUp")
class TestSerialWrapper(unittest.TestCase):
    
    def setUp(self):
        self.ninebytestring = "helloff\n"
        self.serialWrapper = SerialWrapper("/dev/ttyUSB0","115200","\n")
        self._log = logging.getLogger ( "TestSerialWrapper" )
        self._log.debug("\n\nsetUp")
        
 
    def makelargestring(self,char):
        self.bigstring = ''
        for i in range(1,65):
            self.bigstring +=  char   
        return self.bigstring
            
    def tearDown(self):
        self._log.debug( "\n\ntearDown" )
        self.serialWrapper.close()
           
    def testReadWrite(self):
        #write our test string using the wrapper
        self._log.debug( "\nTesting writing" )
        self.serialWrapper.write(self.ninebytestring)
        #give wait a moment so we are sure anything we send has arrived back
        time.sleep(1)
        self._log.debug( "\nTesting reading" )
        self.temp = self.serialWrapper.read()
        self._log.debug( "\nRead string is " + self.temp )
        assert self.temp == self.ninebytestring
    
    def testReadline(self):
        # tell wrapper to send out a couple of our test strings
        self._log.debug( "\nWriting strings so we can test readine" )
        self.serialWrapper.write(self.ninebytestring)
        self.serialWrapper.write(self.ninebytestring)
        self.serialWrapper.write(self.ninebytestring)
        self.serialWrapper.write(self.ninebytestring)
        # give the server time to send it
        time.sleep(1)
        self._log.debug( "\nTesting serialWrapper.readline()" )
        
        assert self.serialWrapper.readline() == 'helloff'
        assert self.serialWrapper.readline() == 'helloff'
        assert self.serialWrapper.readline() == 'helloff'
        assert self.serialWrapper.readline() == 'helloff'
    def testReadlineOffset(self):
        self.serialWrapper.close()
        self.serialWrapper= SerialWrapper("/dev/ttyUSB0","115200","\n",2)
        testOffset = "TESTSTRING\nTY"
        self._log.debug( "\nWriting strings so we can test readine" )
        self.serialWrapper.write(testOffset)
        self.serialWrapper.write(testOffset)
        self.serialWrapper.write(testOffset)
        self.serialWrapper.write(testOffset)
        # give the server time to send it
        time.sleep(1)
        self._log.debug( "\nTesting serialWrapper.readline()" )
        
        line1 = self.serialWrapper.readline()
        self._log.debug ("line 1 is %s" %line1)
        assert line1 == testOffset
                
        line2 = self.serialWrapper.readline()
        self._log.debug ("line 2 is %s" %line2)        
        assert line2 == testOffset
        
        line3 = self.serialWrapper.readline()
        self._log.debug ("line 3 is %s" %line3)       
        assert line3 == testOffset
        
        line3 = self.serialWrapper.readline()
        self._log.debug ("line 3 is %s" %line3)
        assert line3 == testOffset
        
    def testDoubleWrite(self):
        #set up sync event
        self.event = threading.Event()
        self.aaa = self.makelargestring('a')
        self.bbb = self.makelargestring('b')
        #syncwrite will start itself in a new thread
        self.syncwrite = syncfunctioncall(self.event,self.serialWrapper.write,self.bbb)
        # synchronize with syncwrite
        self.event.wait()
        #write something at the same time as syncwrite
        self.serialWrapper.write(self.aaa)
        # give the server time to fetch the new data
        time.sleep(1) 
        #self.serialWrapper.read() should read everything in the buffer if no number of bytes is specified
        self.tempbuffer = self.serialWrapper.read()
        self._log.debug( "\ntestDoubleWrite - recieved data is + " + self.tempbuffer )
        assert self.aaa in self.tempbuffer
        assert self.bbb in self.tempbuffer
        return    

    def testwriteServerdeath(self):
        self.serialWrapper.serialport.close()
        self.serialWrapper.write(self.ninebytestring)
        return
        
    def testreadServerdeath(self):
        self.serialWrapper.serialport.close()
        self.serialWrapper.read()
        return
        
    def testreadlineServerdeath(self):
        self.serialWrapper.serialport.close()
        self.serialWrapper.readline()
        return
        
    def testDummy(self):
        return