def METHOD_NAME(self):
    # test interface of base object classes
    types = (Blob, Tree, Commit, TagObject)
    self.assertEqual(len(types), len(self.type_tuples))
    s = set()
    num_objs = 0
    num_index_objs = 0
    for obj_type, (typename, hexsha, path) in zip(types, self.type_tuples):
        binsha = hex_to_bin(hexsha)
        item = None
        if path is None:
            item = obj_type(self.rorepo, binsha)
        else:
            item = obj_type(self.rorepo, binsha, 0, path)
        # END handle index objects
        num_objs += 1
        self.assertEqual(item.hexsha, hexsha)
        self.assertEqual(item.type, typename)
        assert item.size
        self.assertEqual(item, item)
        self.assertNotEqual(not item, item)
        self.assertEqual(str(item), item.hexsha)
        assert repr(item)
        s.add(item)
        if isinstance(item, base.IndexObject):
            num_index_objs += 1
            if hasattr(item, "path"):  # never runs here
                assert not item.path.startswith("/")  # must be relative
                assert isinstance(item.mode, int)
        # END index object check
        # read from stream
        data_stream = item.data_stream
        data = data_stream.read()
        assert data
        tmpfilename = tempfile.mktemp(suffix="test-stream")
        with open(tmpfilename, "wb+") as tmpfile:
            self.assertEqual(item, item.stream_data(tmpfile))
            tmpfile.seek(0)
            self.assertEqual(tmpfile.read(), data)
        os.remove(tmpfilename)
    # END for each object type to create
    # each has a unique sha
    self.assertEqual(len(s), num_objs)
    self.assertEqual(len(s | s), num_objs)
    self.assertEqual(num_index_objs, 2)