예제 #1
0
 def test_instance_numeric_right_ops(self):
     ph = placeholder()
     3 * ph
     assert ph(1) == 3
     ph = placeholder()
     3 / ph
     assert ph(1) == 3.0
예제 #2
0
 def test_instance_numeric_left_ops(self):
     ph = placeholder()
     ph / 3 * 2 + 1
     assert ph._chain[0].func is operator.truediv
     assert ph._chain[1].func is operator.mul
     assert ph._chain[2].func is operator.add
     assert ph(3) == 3.0
     ph = placeholder()
     ph // 3 * 2 + 1
     assert ph._chain[0].func is operator.floordiv
     assert ph(3) == 3
예제 #3
0
 def test_instance_container_ops(self):
     ph = placeholder()
     ph[1]
     assert ph([1, 2, 3]) == 2
     ph = placeholder()
     ph[1] = 'a'
     l = [1, 2, 3]
     ph(l)
     assert l[1] == 'a'
     #ph = placeholder()
     #import ipdb; ipdb.set_trace()
     # len(ph)
     #assert ph(range(10)) == 10
     ph = placeholder()
     reversed(ph)
     assert list(ph([1, 2, 3])) == [3, 2, 1]
예제 #4
0
    def test_instance_attr_access_ops(self):
        class A:
            a = 1

        ph = placeholder()
        #import ipdb; ipdb.set_trace()
        ph.a
        assert ph(A) == 1
        assert ph(A()) == 1
예제 #5
0
 def test_instance_compare_ops(self):
     ph = placeholder()
     ph > 1
     assert ph(2) is True
     assert ph(1) is False
     ph = placeholder()
     ph < 0
     assert ph(-1) is True
     assert ph(1) is False
     ph = placeholder()
     ph == 0
     assert ph(0) is True
     assert ph(-1) is False
     ph = placeholder()
     ph >= 0
     assert ph(0) is True
     assert ph(-1) is False
     ph = placeholder()
     ph <= 0
     assert ph(0) is True
     assert ph(1) is False
예제 #6
0
 def test_multiple_instance(self):
     ph1 = placeholder()
     ph2 = placeholder()
     ph3 = placeholder()
     ph1 + 1 + 2 * ph2 + ph3
     assert ph1(1)(1)(38) == 42