def test_correct_distance(start, ndigits, dimensions):
eps = 1e-10
window = 10 ** -ndigits
smallest_different = 1.5 * window + eps
largest_same = 0.5 * window - eps
step = 10.09 * window
for i in range(10):
num = start + i * step
pt = (num,) * dimensions
for signs in itertools.product([-1, 0, 1], repeat=dimensions):
if all(s == 0 for s in signs):
continue
# Need a new defuzzer for each attempt, or previous "should be
# different" points will be close to the "should be same" point.
dfz = Defuzzer(ndigits=ndigits)
assert dfz.defuzz(pt) == pt
st = tuple(num + s * largest_same for s in signs)
dfzst = dfz.defuzz(st)
assert dfzst == pt
dt = tuple(num + s * smallest_different for s in signs)
dfzdt = dfz.defuzz(dt)
assert dfzdt != pt
评论列表
文章目录