def test_summarize(self): """Test summarize method. """ objects = [1, 'a', 'b', 'a', 5, [], {}] expected = [[summary._repr(''), 3, 3*_getsizeof('a')],\ [summary._repr(1), 2, 2*_getsizeof(1)],\ [summary._repr([]), 1, _getsizeof([])],\ [summary._repr({}), 1, _getsizeof({})]] res = summary.summarize(objects) for row_e in res: self.assert_(row_e in expected)
def test_sweep(self): """Test that all and only empty entries are removed from a summary.""" objects = ['the', 'quick', 'brown', 'fox', 1298, 123, 234, [], {}] summ = summary.summarize(objects) # correct removal of rows when sizes are empty summary._subtract(summ, {}) summary._subtract(summ, []) summ = summary._sweep(summ) found_dict = found_tuple = False for row in summ: if row[0] == "<type 'dict'>": found_dict = True if row[0] == "<type 'tuple'>": found_tuple = True self.assert_(found_dict == False) self.assert_(found_tuple == False) # do not remove row if one of the sizes is not empty # e.g. if the number of objects of a type did not change, but the # total size did summ = summary._subtract(summ, 'the') summ = summary._subtract(summ, 'quick') summ = summary._subtract(summ, 'brown') summ = summary._subtract(summ, '42') summ = summary._sweep(summ) found_string = False for row in summ: if row[0] == summary._repr(''): found_string = True self.assert_(row[1] == 0) totalsize = _getsizeof('fox') - _getsizeof('42') self.assert_(row[2] == totalsize) self.assert_(found_string == True)
def test_subtract(self): """Test that a single object's data is correctly subtracted from a summary. - result in correct total size and total number of objects - if object was not listed before, it should be listed negative afterwards """ objects = ['the', 'quick', 'brown', 'fox', 1298, 123, 234, [], {}] summ = summary.summarize(objects) summary._subtract(summ, 'the') summary._subtract(summ, {}) summary._subtract(summ, (1,)) # to verify that these rows where actually included afterwards checked_str = checked_dict = checked_tuple = False for row in summ: if row[0] == summary._repr(''): totalsize = _getsizeof('quick') + _getsizeof('brown') +\ _getsizeof('fox') self.assert_(row[1] == 3, "%s != %s" % (row[1], 3)) self.assert_(row[2] == totalsize, totalsize) checked_str = True if row[0] == summary._repr({}): self.assert_(row[1] == 0) self.assert_(row[2] == 0) checked_dict = True if row[0] == summary._repr((1,)): self.assert_(row[1] == -1) self.assert_(row[2] == -_getsizeof((1,))) checked_tuple = True self.assert_(checked_str, "no str found in summary") self.assert_(checked_dict, "no dict found in summary") self.assert_(checked_tuple, "no tuple found in summary") summary._subtract(summ, 'quick') summary._subtract(summ, 'brown') checked_str = False for row in summ: if row[0] == summary._repr(''): self.assert_(row[1] == 1) self.assert_(row[2] == _getsizeof('fox')) checked_str = True self.assert_(checked_str, "no str found in summ")
def test_repr(self): """Test that the right representation is returned. """ self.assert_(summary._repr(''), "<type 'str'>") self.assert_(summary._repr('', 1), "<type 'str'>") self.assert_(summary._repr('', verbosity=1), "<type 'str'>") self.assert_(summary._repr('', verbosity=100), "<type 'str'>")
def gui_default_str_function(o): """Default str function for InteractiveBrowser.""" return summary._repr(o) + '(id=%s)' % id(o)