def test_mod(): d1 = uniform_scalar_distribution(range(1,7)) d2 = uniform_scalar_distribution(range(2)) d3 = uniform_scalar_distribution(range(1,3)) d4 = ScalarDistribution([0,1],[3/4,1/4]) assert_true((d1%2).is_approx_equal(d2)) assert_true((5%d3).is_approx_equal(d2)) assert_true((d1%d3).is_approx_equal(d4))
def test_mod(): d1 = uniform_scalar_distribution(range(1, 7)) d2 = uniform_scalar_distribution(range(2)) d3 = uniform_scalar_distribution(range(1, 3)) d4 = ScalarDistribution([0, 1], [3 / 4, 1 / 4]) assert (d1 % 2).is_approx_equal(d2) assert (5 % d3).is_approx_equal(d2) assert (d1 % d3).is_approx_equal(d4)
def test_floordiv(): d1 = uniform_scalar_distribution(range(1, 7)) d2 = ScalarDistribution([0,1,2,3], [1/6,1/3,1/3,1/6]) d3 = ScalarDistribution([1,2,3,6], [1/2,1/6,1/6,1/6]) d4 = uniform_scalar_distribution(range(1, 3)) d5 = ScalarDistribution([0,1,2,3,4,5,6],[1/12,1/4,1/4,1/6,1/12,1/12,1/12]) assert_true((d1//2).is_approx_equal(d2)) assert_true((6//d1).is_approx_equal(d3)) assert_true((d1//d4).is_approx_equal(d5))
def test_sub(): d1 = uniform_scalar_distribution(range(3)) d2 = uniform_scalar_distribution(range(1, 4)) d3 = ScalarDistribution([-2, -1, 0, 1, 2], [1/9, 2/9, 3/9, 2/9, 1/9]) assert_true((d2-1).is_approx_equal(d1)) assert_true((3-d2).is_approx_equal(d1)) assert_true((d1).is_approx_equal(d2-1)) assert_true((d1).is_approx_equal(3-d2)) assert_true((d1-d1).is_approx_equal(d3))
def test_add(): d1 = uniform_scalar_distribution(range(3)) d2 = uniform_scalar_distribution(range(1, 4)) d3 = ScalarDistribution([0, 1, 2, 3, 4], [1/9, 2/9, 3/9, 2/9, 1/9]) assert_true((d1+1).is_approx_equal(d2)) assert_true((1+d1).is_approx_equal(d2)) assert_true((d2).is_approx_equal(d1+1)) assert_true((d2).is_approx_equal(1+d1)) assert_true((d1+d1).is_approx_equal(d3))
def test_div(): d1 = uniform_scalar_distribution([2,4,6]) d2 = uniform_scalar_distribution([1,2,3,4,6]) d3 = uniform_scalar_distribution([1,2,3]) d4 = uniform_scalar_distribution([12,6,4,3,2]) d5 = uniform_scalar_distribution([1,2]) d6 = ScalarDistribution([1,2,3,4,6], [1/6,1/3,1/6,1/6,1/6]) assert_true((d1/2).is_approx_equal(d3)) assert_true((12/d2).is_approx_equal(d4)) assert_true((d1/d5).is_approx_equal(d6))
def test_add(): d1 = uniform_scalar_distribution(range(3)) d2 = uniform_scalar_distribution(range(1, 4)) d3 = ScalarDistribution([0, 1, 2, 3, 4], [1 / 9, 2 / 9, 3 / 9, 2 / 9, 1 / 9]) assert (d1 + 1).is_approx_equal(d2) assert (1 + d1).is_approx_equal(d2) assert (d2).is_approx_equal(d1 + 1) assert (d2).is_approx_equal(1 + d1) assert (d1 + d1).is_approx_equal(d3)
def test_sub(): d1 = uniform_scalar_distribution(range(3)) d2 = uniform_scalar_distribution(range(1, 4)) d3 = ScalarDistribution([-2, -1, 0, 1, 2], [1 / 9, 2 / 9, 3 / 9, 2 / 9, 1 / 9]) assert (d2 - 1).is_approx_equal(d1) assert (3 - d2).is_approx_equal(d1) assert (d1).is_approx_equal(d2 - 1) assert (d1).is_approx_equal(3 - d2) assert (d1 - d1).is_approx_equal(d3)
def test_floordiv(): d1 = uniform_scalar_distribution(range(1, 7)) d2 = ScalarDistribution([0, 1, 2, 3], [1 / 6, 1 / 3, 1 / 3, 1 / 6]) d3 = ScalarDistribution([1, 2, 3, 6], [1 / 2, 1 / 6, 1 / 6, 1 / 6]) d4 = uniform_scalar_distribution(range(1, 3)) d5 = ScalarDistribution( [0, 1, 2, 3, 4, 5, 6], [1 / 12, 1 / 4, 1 / 4, 1 / 6, 1 / 12, 1 / 12, 1 / 12]) assert (d1 // 2).is_approx_equal(d2) assert (6 // d1).is_approx_equal(d3) assert (d1 // d4).is_approx_equal(d5)
def test_div(): d1 = uniform_scalar_distribution([2, 4, 6]) d2 = uniform_scalar_distribution([1, 2, 3, 4, 6]) d3 = uniform_scalar_distribution([1, 2, 3]) d4 = uniform_scalar_distribution([12, 6, 4, 3, 2]) d5 = uniform_scalar_distribution([1, 2]) d6 = ScalarDistribution([1, 2, 3, 4, 6], [1 / 6, 1 / 3, 1 / 6, 1 / 6, 1 / 6]) assert (d1 / 2).is_approx_equal(d3) assert (12 / d2).is_approx_equal(d4) assert (d1 / d5).is_approx_equal(d6)
def test_mul(): d1 = uniform_scalar_distribution(range(1, 3)) d2 = ScalarDistribution([1, 2, 4], [0.25, 0.5, 0.25]) d3 = ScalarDistribution([2, 4], [0.5, 0.5]) assert_true((d1*d1).is_approx_equal(d2)) assert_true((d1*2).is_approx_equal(d3)) assert_true((2*d1).is_approx_equal(d3))
def test_mul(): d1 = uniform_scalar_distribution(range(1, 3)) d2 = ScalarDistribution([1, 2, 4], [0.25, 0.5, 0.25]) d3 = ScalarDistribution([2, 4], [0.5, 0.5]) assert (d1 * d1).is_approx_equal(d2) assert (d1 * 2).is_approx_equal(d3) assert (2 * d1).is_approx_equal(d3)
def test_matmul(): d1 = uniform_scalar_distribution(range(1, 7)) d2 = Distribution(list(product(d1.outcomes, repeat=2)), [1 / 36] * 36) assert (d1.__matmul__(d1)).is_approx_equal(d2)
def test_ge(): d1 = uniform_scalar_distribution(range(1, 7)) d2 = uniform_scalar_distribution(range(2)) d3 = ScalarDistribution([True], [1]) assert (d1 >= 4).is_approx_equal(d2) assert (d1 >= d2).is_approx_equal(d3)
def test_gt(): d1 = uniform_scalar_distribution(range(1, 7)) d2 = uniform_scalar_distribution(range(2)) d3 = ScalarDistribution([True, False], [11 / 12, 1 / 12]) assert (d1 > 3).is_approx_equal(d2) assert (d1 > d2).is_approx_equal(d3)
def test_ne(): d1 = uniform_scalar_distribution(range(1, 7)) d2 = ScalarDistribution([True, False], [5 / 6, 1 / 6]) assert (d1 != 6).is_approx_equal(d2) assert (d1 != d1).is_approx_equal(d2)
def test_ge(): d1 = uniform_scalar_distribution(range(1,7)) d2 = uniform_scalar_distribution(range(2)) d3 = ScalarDistribution([True], [1]) assert_true((d1 >= 4).is_approx_equal(d2)) assert_true((d1 >= d2).is_approx_equal(d3))
def test_ne(): d1 = uniform_scalar_distribution(range(1,7)) d2 = ScalarDistribution([True, False], [5/6, 1/6]) assert_true((d1 != 6).is_approx_equal(d2)) assert_true((d1 != d1).is_approx_equal(d2))
def test_matmul_fail(): d1 = uniform_scalar_distribution(range(1,7)) assert_raises(NotImplementedError, lambda x: x.__matmul__('0'), d1)
def test_cmp_fail(): d1 = uniform_scalar_distribution(range(1,7)) assert_raises(NotImplementedError, lambda x: x + '0', d1)
def test_matmul(): d1 = uniform_scalar_distribution(range(1,7)) d2 = Distribution(list(product(d1.outcomes, repeat=2)), [1/36]*36) assert_true((d1.__matmul__(d1)).is_approx_equal(d2))
def test_cmp_fail(): d1 = uniform_scalar_distribution(range(1, 7)) with pytest.raises(NotImplementedError): (lambda x: x + '0')(d1)
def test_matmul_fail(): d1 = uniform_scalar_distribution(range(1, 7)) with pytest.raises(NotImplementedError): (lambda x: x.__matmul__('0'))(d1)
def test_gt(): d1 = uniform_scalar_distribution(range(1,7)) d2 = uniform_scalar_distribution(range(2)) d3 = ScalarDistribution([True, False], [11/12, 1/12]) assert_true((d1 > 3).is_approx_equal(d2)) assert_true((d1 > d2).is_approx_equal(d3))