Exemplo n.º 1
0
 def test_init_from_Reader(self):
     msg = 'a Reader object should not be wrapped directly, but ' \
           'its __wrapped__ property should be used as-is'
     reader_obj = Reader([])
     reader = Reader(reader_obj)
     self.assertIsNot(reader.__wrapped__, reader_obj, msg=msg)
     self.assertIs(reader.__wrapped__, reader_obj.__wrapped__, msg=msg)
Exemplo n.º 2
0
    def test_init_handling_of_closefunc(self):
        reader = Reader([])
        self.assertIsNone(reader._closefunc)

        # Dummy closefunc callables for testing.
        dummyfunc1 = lambda: True
        dummyfunc2 = lambda: True

        reader = Reader([], dummyfunc1)
        self.assertIs(reader._closefunc, dummyfunc1)

        reader = Reader(reader)  # <- Make using existing reader.
        self.assertIs(reader._closefunc,
                      dummyfunc1,
                      msg='inherit closefunc from existing Reader')

        reader = Reader(reader,
                        dummyfunc2)  # <- Override inheritance with new func.
        self.assertIs(reader._closefunc,
                      dummyfunc2,
                      msg='specified closefunc overrides inherited value')

        reader = Reader(reader, None)  # <- Override inheritance with None.
        self.assertIsNone(reader._closefunc,
                          msg='remove inherited closefunc with None')
Exemplo n.º 3
0
    def test_init_from_iterator(self):
        msg = 'already-existing iterators should be used as-is'
        iterator = iter([])
        reader = Reader(iterator)
        self.assertIs(reader.__wrapped__, iterator, msg=msg)

        msg = 'csv.reader() objects should be treated the same as other iterators'
        csvreader_obj = csv.reader([])
        reader = Reader(csvreader_obj)
        self.assertIs(reader.__wrapped__, csvreader_obj, msg=msg)
Exemplo n.º 4
0
    def test_type_checking(self):
        reader = Reader([])
        self.assertTrue(isinstance(reader, Reader))

        msg = 'not a Reader (though it is ReaderLike)'

        csv_reader = csv.reader([])
        self.assertFalse(isinstance(csv_reader, Reader), msg=msg)

        list_of_strings = [['a', 'x'], ['b', 'y']]
        self.assertFalse(isinstance(list_of_strings, Reader), msg=msg)
Exemplo n.º 5
0
    def test_readerlike_objects(self):
        """The following items should test as instances of ReaderLike:

            * Reader instances.
            * csv.reader() type instances.
            * Non-consumable iterables containing non-string sequences.
        """
        reader = Reader([])
        self.assertTrue(isinstance(reader, ReaderLike))

        csv_reader = csv.reader([])
        self.assertTrue(isinstance(csv_reader, ReaderLike))

        list_of_lists = [['a', 'b'], ['c', 'd']]
        self.assertTrue(isinstance(list_of_lists, ReaderLike))

        tuple_of_tuples = (('a', 'b'), ('c', 'd'))
        self.assertTrue(isinstance(tuple_of_tuples, ReaderLike))
Exemplo n.º 6
0
 def test_close_on_stopiteration(self):
     reader = Reader([['a', 'x'], ['b', 'y']], self.closefunc)
     for row in reader:
         pass
     msg = 'should auto-close when iterator is exhausted'
     self.assertTrue(self.log['is_closed'], msg=msg)
Exemplo n.º 7
0
 def test_close_repeated(self):
     reader = Reader([['a', 'x'], ['b', 'y']], self.closefunc)
     reader.close()
     reader.close()  # <- Already closed, should pass without error.
     self.assertTrue(self.log['is_closed'])
Exemplo n.º 8
0
 def test_close_explicitly(self):
     reader = Reader([['a', 'x'], ['b', 'y']], self.closefunc)
     reader.close()
     self.assertTrue(self.log['is_closed'])
Exemplo n.º 9
0
 def test_iterator(self):
     reader = Reader([['a', 'x'], ['b', 'y']])
     self.assertEqual(next(reader), ['a', 'x'])
     self.assertEqual(next(reader), ['b', 'y'])
Exemplo n.º 10
0
 def test_init_from_list(self):
     msg = '__wrapped__ should be get an iterator'
     list_obj = []
     reader = Reader(list_obj)
     self.assertIsNot(reader.__wrapped__, list_obj, msg=msg)
Exemplo n.º 11
0
 def test_close_on_del(self):
     reader = Reader([['a', 'x'], ['b', 'y']], self.closefunc)
     reader.__del__()
     msg = 'should auto-close when reader is deleted'
     self.assertTrue(self.log['is_closed'], msg=msg)
Exemplo n.º 12
0
 def test_close_on_context_exit(self):
     with Reader([['a', 'x'], ['b', 'y']], self.closefunc) as reader:
         pass
     msg = 'should auto-close when exiting context manager'
     self.assertTrue(self.log['is_closed'], msg=msg)