def test_sys_info(): """Test info-showing utility """ out = StringIO() sys_info(fid=out) out = out.getvalue() assert_true('numpy:' in out)
def test_hash(): """Test dictionary hashing and comparison functions.""" # does hashing all of these types work: # {dict, list, tuple, ndarray, str, float, int, None} d0 = dict(a=dict(a=0.1, b='fo', c=1), b=[1, 'b'], c=(), d=np.ones(3), e=None) d0[1] = None d0[2.] = b'123' d1 = deepcopy(d0) assert (len(object_diff(d0, d1)) == 0) assert (len(object_diff(d1, d0)) == 0) assert_equal(object_hash(d0), object_hash(d1)) # change values slightly d1['data'] = np.ones(3, int) d1['d'][0] = 0 assert object_hash(d0) != object_hash(d1) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['a']['a'] = 0.11 assert (len(object_diff(d0, d1)) > 0) assert (len(object_diff(d1, d0)) > 0) assert object_hash(d0) != object_hash(d1) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['a']['d'] = 0 # non-existent key assert (len(object_diff(d0, d1)) > 0) assert (len(object_diff(d1, d0)) > 0) assert object_hash(d0) != object_hash(d1) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['b'].append(0) # different-length lists assert (len(object_diff(d0, d1)) > 0) assert (len(object_diff(d1, d0)) > 0) assert object_hash(d0) != object_hash(d1) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['e'] = 'foo' # non-None assert (len(object_diff(d0, d1)) > 0) assert (len(object_diff(d1, d0)) > 0) assert object_hash(d0) != object_hash(d1) d1 = deepcopy(d0) d2 = deepcopy(d0) d1['e'] = StringIO() d2['e'] = StringIO() d2['e'].write('foo') assert (len(object_diff(d0, d1)) > 0) assert (len(object_diff(d1, d0)) > 0) d1 = deepcopy(d0) d1[1] = 2 assert (len(object_diff(d0, d1)) > 0) assert (len(object_diff(d1, d0)) > 0) assert object_hash(d0) != object_hash(d1) # generators (and other types) not supported d1 = deepcopy(d0) d2 = deepcopy(d0) d1[1] = (x for x in d0) d2[1] = (x for x in d0) pytest.raises(RuntimeError, object_diff, d1, d2) pytest.raises(RuntimeError, object_hash, d1) x = sparse.eye(2, 2, format='csc') y = sparse.eye(2, 2, format='csr') assert ('type mismatch' in object_diff(x, y)) y = sparse.eye(2, 2, format='csc') assert_equal(len(object_diff(x, y)), 0) y[1, 1] = 2 assert ('elements' in object_diff(x, y)) y = sparse.eye(3, 3, format='csc') assert ('shape' in object_diff(x, y)) y = 0 assert ('type mismatch' in object_diff(x, y)) # smoke test for gh-4796 assert object_hash(np.int64(1)) != 0 assert object_hash(np.bool_(True)) != 0
def test_hash(): """Test dictionary hashing and comparison functions""" # does hashing all of these types work: # {dict, list, tuple, ndarray, str, float, int, None} d0 = dict(a=dict(a=0.1, b='fo', c=1), b=[1, 'b'], c=(), d=np.ones(3), e=None) d0[1] = None d0[2.] = b'123' d1 = deepcopy(d0) assert_true(len(object_diff(d0, d1)) == 0) assert_true(len(object_diff(d1, d0)) == 0) assert_equal(object_hash(d0), object_hash(d1)) # change values slightly d1['data'] = np.ones(3, int) d1['d'][0] = 0 assert_not_equal(object_hash(d0), object_hash(d1)) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['a']['a'] = 0.11 assert_true(len(object_diff(d0, d1)) > 0) assert_true(len(object_diff(d1, d0)) > 0) assert_not_equal(object_hash(d0), object_hash(d1)) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['a']['d'] = 0 # non-existent key assert_true(len(object_diff(d0, d1)) > 0) assert_true(len(object_diff(d1, d0)) > 0) assert_not_equal(object_hash(d0), object_hash(d1)) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['b'].append(0) # different-length lists assert_true(len(object_diff(d0, d1)) > 0) assert_true(len(object_diff(d1, d0)) > 0) assert_not_equal(object_hash(d0), object_hash(d1)) d1 = deepcopy(d0) assert_equal(object_hash(d0), object_hash(d1)) d1['e'] = 'foo' # non-None assert_true(len(object_diff(d0, d1)) > 0) assert_true(len(object_diff(d1, d0)) > 0) assert_not_equal(object_hash(d0), object_hash(d1)) d1 = deepcopy(d0) d2 = deepcopy(d0) d1['e'] = StringIO() d2['e'] = StringIO() d2['e'].write('foo') assert_true(len(object_diff(d0, d1)) > 0) assert_true(len(object_diff(d1, d0)) > 0) d1 = deepcopy(d0) d1[1] = 2 assert_true(len(object_diff(d0, d1)) > 0) assert_true(len(object_diff(d1, d0)) > 0) assert_not_equal(object_hash(d0), object_hash(d1)) # generators (and other types) not supported d1 = deepcopy(d0) d2 = deepcopy(d0) d1[1] = (x for x in d0) d2[1] = (x for x in d0) assert_raises(RuntimeError, object_diff, d1, d2) assert_raises(RuntimeError, object_hash, d1)