示例#1
0
 def lucky_number(self):
     return C_Repeat.lucky_number(self) + 1.25
示例#2
0
def test_inheriting_repeat():
    from pybind11_tests import A_Repeat, B_Repeat, C_Repeat, D_Repeat, A_Tpl, B_Tpl, C_Tpl, D_Tpl

    class VI_AR(A_Repeat):
        def unlucky_number(self):
            return 99

    class VI_AT(A_Tpl):
        def unlucky_number(self):
            return 999

    obj = VI_AR()
    assert obj.say_something(3) == "hihihi"
    assert obj.unlucky_number() == 99
    assert obj.say_everything() == "hi 99"

    obj = VI_AT()
    assert obj.say_something(3) == "hihihi"
    assert obj.unlucky_number() == 999
    assert obj.say_everything() == "hi 999"

    for obj in [B_Repeat(), B_Tpl()]:
        assert obj.say_something(3) == "B says hi 3 times"
        assert obj.unlucky_number() == 13
        assert obj.lucky_number() == 7.0
        assert obj.say_everything() == "B says hi 1 times 13"

    for obj in [C_Repeat(), C_Tpl()]:
        assert obj.say_something(3) == "B says hi 3 times"
        assert obj.unlucky_number() == 4444
        assert obj.lucky_number() == 888.0
        assert obj.say_everything() == "B says hi 1 times 4444"

    class VI_CR(C_Repeat):
        def lucky_number(self):
            return C_Repeat.lucky_number(self) + 1.25

    obj = VI_CR()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 889.25
    assert obj.say_everything() == "B says hi 1 times 4444"

    class VI_CT(C_Tpl):
        pass

    obj = VI_CT()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 888.0
    assert obj.say_everything() == "B says hi 1 times 4444"

    class VI_CCR(VI_CR):
        def lucky_number(self):
            return VI_CR.lucky_number(self) * 10

    obj = VI_CCR()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 8892.5
    assert obj.say_everything() == "B says hi 1 times 4444"

    class VI_CCT(VI_CT):
        def lucky_number(self):
            return VI_CT.lucky_number(self) * 1000

    obj = VI_CCT()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 888000.0
    assert obj.say_everything() == "B says hi 1 times 4444"

    class VI_DR(D_Repeat):
        def unlucky_number(self):
            return 123

        def lucky_number(self):
            return 42.0

    for obj in [D_Repeat(), D_Tpl()]:
        assert obj.say_something(3) == "B says hi 3 times"
        assert obj.unlucky_number() == 4444
        assert obj.lucky_number() == 888.0
        assert obj.say_everything() == "B says hi 1 times 4444"

    obj = VI_DR()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 123
    assert obj.lucky_number() == 42.0
    assert obj.say_everything() == "B says hi 1 times 123"

    class VI_DT(D_Tpl):
        def say_something(self, times):
            return "VI_DT says:" + (' quack' * times)

        def unlucky_number(self):
            return 1234

        def lucky_number(self):
            return -4.25

    obj = VI_DT()
    assert obj.say_something(3) == "VI_DT says: quack quack quack"
    assert obj.unlucky_number() == 1234
    assert obj.lucky_number() == -4.25
    assert obj.say_everything() == "VI_DT says: quack 1234"

    class VI_DT2(VI_DT):
        def say_something(self, times):
            return "VI_DT2: " + ('QUACK' * times)

        def unlucky_number(self):
            return -3

    class VI_BT(B_Tpl):
        def say_something(self, times):
            return "VI_BT" * times

        def unlucky_number(self):
            return -7

        def lucky_number(self):
            return -1.375

    obj = VI_BT()
    assert obj.say_something(3) == "VI_BTVI_BTVI_BT"
    assert obj.unlucky_number() == -7
    assert obj.lucky_number() == -1.375
    assert obj.say_everything() == "VI_BT -7"
def test_inheriting_repeat():
    from pybind11_tests import A_Repeat, B_Repeat, C_Repeat, D_Repeat, A_Tpl, B_Tpl, C_Tpl, D_Tpl

    class AR(A_Repeat):
        @staticmethod
        def unlucky_number():
            return 99

    class AT(A_Tpl):
        @staticmethod
        def unlucky_number():
            return 999

    obj = AR()
    if obj.say_something(3) != "hihihi":
        raise AssertionError
    if obj.unlucky_number() != 99:
        raise AssertionError
    if obj.say_everything() != "hi 99":
        raise AssertionError

    obj = AT()
    if obj.say_something(3) != "hihihi":
        raise AssertionError
    if obj.unlucky_number() != 999:
        raise AssertionError
    if obj.say_everything() != "hi 999":
        raise AssertionError

    for obj in [B_Repeat(), B_Tpl()]:
        if obj.say_something(3) != "B says hi 3 times":
            raise AssertionError
        if obj.unlucky_number() != 13:
            raise AssertionError
        if obj.lucky_number() != 7.0:
            raise AssertionError
        if obj.say_everything() != "B says hi 1 times 13":
            raise AssertionError

    for obj in [C_Repeat(), C_Tpl()]:
        if obj.say_something(3) != "B says hi 3 times":
            raise AssertionError
        if obj.unlucky_number() != 4444:
            raise AssertionError
        if obj.lucky_number() != 888.0:
            raise AssertionError
        if obj.say_everything() != "B says hi 1 times 4444":
            raise AssertionError

    class CR(C_Repeat):
        def lucky_number(self):
            return C_Repeat.lucky_number(self) + 1.25

    obj = CR()
    if obj.say_something(3) != "B says hi 3 times":
        raise AssertionError
    if obj.unlucky_number() != 4444:
        raise AssertionError
    if obj.lucky_number() != 889.25:
        raise AssertionError
    if obj.say_everything() != "B says hi 1 times 4444":
        raise AssertionError

    class CT(C_Tpl):
        pass

    obj = CT()
    if obj.say_something(3) != "B says hi 3 times":
        raise AssertionError
    if obj.unlucky_number() != 4444:
        raise AssertionError
    if obj.lucky_number() != 888.0:
        raise AssertionError
    if obj.say_everything() != "B says hi 1 times 4444":
        raise AssertionError

    class CCR(CR):
        def lucky_number(self):
            return CR.lucky_number(self) * 10

    obj = CCR()
    if obj.say_something(3) != "B says hi 3 times":
        raise AssertionError
    if obj.unlucky_number() != 4444:
        raise AssertionError
    if obj.lucky_number() != 8892.5:
        raise AssertionError
    if obj.say_everything() != "B says hi 1 times 4444":
        raise AssertionError

    class CCT(CT):
        def lucky_number(self):
            return CT.lucky_number(self) * 1000

    obj = CCT()
    if obj.say_something(3) != "B says hi 3 times":
        raise AssertionError
    if obj.unlucky_number() != 4444:
        raise AssertionError
    if obj.lucky_number() != 888000.0:
        raise AssertionError
    if obj.say_everything() != "B says hi 1 times 4444":
        raise AssertionError

    class DR(D_Repeat):
        @staticmethod
        def unlucky_number():
            return 123

        @staticmethod
        def lucky_number():
            return 42.0

    for obj in [D_Repeat(), D_Tpl()]:
        if obj.say_something(3) != "B says hi 3 times":
            raise AssertionError
        if obj.unlucky_number() != 4444:
            raise AssertionError
        if obj.lucky_number() != 888.0:
            raise AssertionError
        if obj.say_everything() != "B says hi 1 times 4444":
            raise AssertionError

    obj = DR()
    if obj.say_something(3) != "B says hi 3 times":
        raise AssertionError
    if obj.unlucky_number() != 123:
        raise AssertionError
    if obj.lucky_number() != 42.0:
        raise AssertionError
    if obj.say_everything() != "B says hi 1 times 123":
        raise AssertionError

    class DT(D_Tpl):
        @staticmethod
        def say_something(times):
            return "DT says:" + (' quack' * times)

        @staticmethod
        def unlucky_number():
            return 1234

        @staticmethod
        def lucky_number():
            return -4.25

    obj = DT()
    if obj.say_something(3) != "DT says: quack quack quack":
        raise AssertionError
    if obj.unlucky_number() != 1234:
        raise AssertionError
    if obj.lucky_number() != -4.25:
        raise AssertionError
    if obj.say_everything() != "DT says: quack 1234":
        raise AssertionError

    class DT2(DT):
        def say_something(self, times):
            return "DT2: " + ('QUACK' * times)

        def unlucky_number(self):
            return -3

    class BT(B_Tpl):
        @staticmethod
        def say_something(times):
            return "BT" * times

        @staticmethod
        def unlucky_number():
            return -7

        @staticmethod
        def lucky_number():
            return -1.375

    obj = BT()
    if obj.say_something(3) != "BTBTBT":
        raise AssertionError
    if obj.unlucky_number() != -7:
        raise AssertionError
    if obj.lucky_number() != -1.375:
        raise AssertionError
    if obj.say_everything() != "BT -7":
        raise AssertionError
 def lucky_number(self):
     return C_Repeat.lucky_number(self) + 1.25
示例#5
0
def test_inheriting_repeat():
    from pybind11_tests import A_Repeat, B_Repeat, C_Repeat, D_Repeat, A_Tpl, B_Tpl, C_Tpl, D_Tpl

    class VI_AR(A_Repeat):
        def unlucky_number(self):
            return 99

    class VI_AT(A_Tpl):
        def unlucky_number(self):
            return 999

    obj = VI_AR()
    assert obj.say_something(3) == "hihihi"
    assert obj.unlucky_number() == 99

    obj = VI_AT()
    assert obj.say_something(3) == "hihihi"
    assert obj.unlucky_number() == 999

    for obj in [B_Repeat(), B_Tpl()]:
        assert obj.say_something(3) == "B says hi 3 times"
        assert obj.unlucky_number() == 13
        assert obj.lucky_number() == 7.0

    for obj in [C_Repeat(), C_Tpl()]:
        assert obj.say_something(3) == "B says hi 3 times"
        assert obj.unlucky_number() == 4444
        assert obj.lucky_number() == 888.0

    class VI_CR(C_Repeat):
        def lucky_number(self):
            return C_Repeat.lucky_number(self) + 1.25

    obj = VI_CR()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 889.25

    class VI_CT(C_Tpl):
        pass

    obj = VI_CT()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 888.0

    class VI_CCR(VI_CR):
        def lucky_number(self):
            return VI_CR.lucky_number(self) * 10

    obj = VI_CCR()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 8892.5

    class VI_CCT(VI_CT):
        def lucky_number(self):
            return VI_CT.lucky_number(self) * 1000

    obj = VI_CCT()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 4444
    assert obj.lucky_number() == 888000.0

    class VI_DR(D_Repeat):
        def unlucky_number(self):
            return 123

        def lucky_number(self):
            return 42.0

    for obj in [D_Repeat(), D_Tpl()]:
        assert obj.say_something(3) == "B says hi 3 times"
        assert obj.unlucky_number() == 4444
        assert obj.lucky_number() == 888.0

    obj = VI_DR()
    assert obj.say_something(3) == "B says hi 3 times"
    assert obj.unlucky_number() == 123
    assert obj.lucky_number() == 42.0

    class VI_DT(D_Tpl):
        def say_something(self, times):
            return "VI_DT says:" + (' quack' * times)

        def unlucky_number(self):
            return 1234

        def lucky_number(self):
            return -4.25

    obj = VI_DT()
    assert obj.say_something(3) == "VI_DT says: quack quack quack"
    assert obj.unlucky_number() == 1234
    assert obj.lucky_number() == -4.25