def test_read_write_fine_cal(): """Test round trip reading/writing of fine calibration .dat file""" temp_dir = _TempDir() temp_fname = op.join(temp_dir, 'fine_cal_temp.dat') for fname in [fine_cal_fname, fine_cal_fname_3d]: # Load fine calibration file fine_cal_dict = read_fine_calibration(fname) # Save temp version of fine calibration file write_fine_calibration(temp_fname, fine_cal_dict) fine_cal_dict_reload = read_fine_calibration(temp_fname) # Load temp version of fine calibration file and compare hashes assert_equal(object_hash(fine_cal_dict), object_hash(fine_cal_dict_reload))
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)) d0[1] = None d0[2.] = b'123' d1 = deepcopy(d0) print(object_diff(d0, d1)) assert_equal(object_hash(d0), object_hash(d1)) # change values slightly d1['data'] = np.ones(3, int) assert_not_equal(object_hash(d0), object_hash(d1)) d1 = deepcopy(d0) print(object_diff(d0, d1)) assert_equal(object_hash(d0), object_hash(d1)) d1['a']['a'] = 0.11 object_diff(d0, d1) assert_not_equal(object_hash(d0), object_hash(d1)) d1 = deepcopy(d0) print(object_diff(d0, d1)) assert_equal(object_hash(d0), object_hash(d1)) d1[1] = 2 object_diff(d0, d1) assert_not_equal(object_hash(d0), object_hash(d1)) # generators (and other types) not supported d1[1] = (x for x in d0) assert_raises(RuntimeError, object_hash, d1)
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 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 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 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 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 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 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) x = sparse.eye(2, 2, format='csc') y = sparse.eye(2, 2, format='csr') assert_true('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_true('elements' in object_diff(x, y)) y = sparse.eye(3, 3, format='csc') assert_true('shape' in object_diff(x, y)) y = 0 assert_true('type mismatch' in object_diff(x, y))
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.0] = 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) x = sparse.eye(2, 2, format="csc") y = sparse.eye(2, 2, format="csr") assert_true("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_true("elements" in object_diff(x, y)) y = sparse.eye(3, 3, format="csc") assert_true("shape" in object_diff(x, y)) y = 0 assert_true("type mismatch" in object_diff(x, y))
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)