1 2from filelike.wrappers import Head 3 4import unittest 5from StringIO import StringIO 6 7class Test_Head(unittest.TestCase): 8 """Testcases for the Head wrapper class.""" 9 10 def setUp(self): 11 self.intext = "Guido van Rossum\n is a space\n alien." 12 self.infile = StringIO(self.intext) 13 self.outfile = StringIO() 14 15 def tearDown(self): 16 pass 17 18 def test_ReadHeadBytes(self): 19 """Test reading bytes from head of a file.""" 20 hf = Head(self.infile,"r",bytes=10) 21 txt = hf.read() 22 self.assertEquals(len(txt),10) 23 self.assertEquals(txt,self.intext[:10]) 24 25 def test_ReadHeadLongBytes(self): 26 """Test reading entirety of head of file.""" 27 hf = Head(self.infile,"r",bytes=1000) 28 txt = hf.read() 29 self.assertEquals(txt,self.intext) 30 31 def test_ReadHeadLines(self): 32 """Test reading lines from head of file.""" 33 hf = Head(self.infile,"r",lines=2) 34 txt = hf.read() 35 self.assertEquals(txt.count("\n"),2) 36 self.assertEquals(txt,"\n".join(self.intext.split("\n")[:2])+"\n") 37 38 def test_ReadHeadLinesExact(self): 39 """Test reading exact number of lines from head of file.""" 40 hf = Head(self.infile,"r",lines=3) 41 txt = hf.read() 42 self.assertEquals(txt.count("\n"),2) 43 self.assertEquals(txt,self.intext) 44 45 def test_ReadHeadLongLines(self): 46 """Test reading all lines from head of file.""" 47 hf = Head(self.infile,"r",lines=200) 48 txt = hf.read() 49 self.assertEquals(txt,self.intext) 50 51 def test_ReadBytesOverLines(self): 52 """Test reading limited by bytes, not lines""" 53 hf = Head(self.infile,"r",bytes=5,lines=2) 54 txt = hf.read() 55 self.assertEquals(len(txt),5) 56 self.assertEquals(txt,self.intext[:5]) 57 58 def test_ReadLinesOverBytes(self): 59 """Test reading limited by lines, not bytes""" 60 hf = Head(self.infile,"r",bytes=500,lines=1) 61 txt = hf.read() 62 self.assertEquals(txt.count("\n"),1) 63 self.assertEquals(txt,self.intext.split("\n")[0]+"\n") 64 65 def test_WriteHeadBytes(self): 66 """Test writing bytes to head of a file.""" 67 hf = Head(self.outfile,"w",bytes=10) 68 hf.write(self.intext) 69 self.assertEquals(len(self.outfile.getvalue()),10) 70 self.assertEquals(self.outfile.getvalue(),self.intext[:10]) 71 72 def test_WriteHeadLongBytes(self): 73 """Test writing entirety of head of file.""" 74 hf = Head(self.outfile,"w",bytes=1000) 75 hf.write(self.intext) 76 self.assertEquals(self.outfile.getvalue(),self.intext) 77 78 def test_WriteHeadLines(self): 79 """Test writing lines to head of file.""" 80 hf = Head(self.outfile,"w",lines=2) 81 hf.write(self.intext) 82 self.assertEquals(self.outfile.getvalue().count("\n"),2) 83 self.assertEquals(self.outfile.getvalue(),"\n".join(self.intext.split("\n")[:2])+"\n") 84 85 def test_WriteHeadLongLines(self): 86 """Test writing all lines to head of file.""" 87 hf = Head(self.outfile,"w",lines=200) 88 hf.write(self.intext) 89 self.assertEquals(self.outfile.getvalue(),self.intext) 90 91 def test_WriteBytesOverLines(self): 92 """Test writing limited by bytes, not lines""" 93 hf = Head(self.outfile,"w",bytes=5,lines=2) 94 hf.write(self.intext) 95 txt = self.outfile.getvalue() 96 self.assertEquals(len(txt),5) 97 self.assertEquals(txt,self.intext[:5]) 98 99 def test_writeLinesOverBytes(self): 100 """Test writing limited by lines, not bytes""" 101 hf = Head(self.outfile,"w",bytes=500,lines=1) 102 hf.write(self.intext) 103 txt = self.outfile.getvalue() 104 self.assertEquals(txt.count("\n"),1) 105 self.assertEquals(txt,self.intext.split("\n")[0]+"\n") 106 107 108def testsuite(): 109 suite = unittest.TestSuite() 110 from filelike.wrappers import unix 111 suite.addTest(unittest.makeSuite(Test_Head)) 112 return suite 113 114