Exemplo n.º 1
0
    def testResolveWhenSupported(self):
        r = registry.MultiImplRegister("test")
        r.add_implementation(TestImpl(lambda x: x == 1, lambda _: 100))
        r.add_implementation(TestImpl(lambda x: x == 2, lambda _: 200))
        r.add_implementation(TestImpl(lambda _: False, fail_fn))

        self.assertEqual(r(1), 100)
        self.assertEqual(r(2), 200)
Exemplo n.º 2
0
    def testResolveThrowsNoSupportedImplementation(self):
        r = registry.MultiImplRegister("test")
        r.add_implementation(TestImpl(lambda _: False, lambda _: 100))

        self.assertRaisesRegex(
            RuntimeError,
            "Missing implementation that supports: test\(\*\(1,\), \*\*{}\)",
            r, 1)
Exemplo n.º 3
0
    def testResolveThrowsNoSupportedImplementationAndLogTriedOnes(self):
        r = registry.MultiImplRegister("test")
        r.add_implementation(TestImpl(lambda _: False, lambda _: 100))

        self.assertRaisesRegex(
            RuntimeError,
            # pylint: disable=line-too-long
            r"Missing implementation that supports: test\(\*\(1,\), \*\*{}\). Tried \['TestImpl'\]",
            r,
            1)
Exemplo n.º 4
0
    def testLogWhenContainsNotSupported(self):
        with self.assertLogs(level="INFO") as logs:
            r = registry.MultiImplRegister("test")
            r.add_implementation(TestImpl(lambda x: x == 1, lambda _: 100))
            r.add_implementation(TestImpl(lambda x: x == 2, lambda _: 200))
            r.add_implementation(TestImpl(lambda _: False, fail_fn))

            r(2)

        self.assertEqual(
            logs.output,
            ["INFO:absl:test TestImpl does not support the provided handle."])
Exemplo n.º 5
0
    def testResolveInReverseOrder(self):
        def fail(_):
            raise AssertionError("should not be called")

        r = registry.MultiImplRegister("test")
        r.add_implementation(TestImpl(lambda _: True, lambda _: 0))
        r.add_implementation(TestImpl(lambda x: x == 1, lambda _: 100))
        r.add_implementation(TestImpl(lambda x: x == 2, fail))
        r.add_implementation(TestImpl(lambda x: x == 2, lambda _: 200))

        self.assertEqual(r(0), 0)
        self.assertEqual(r(1), 100)
        self.assertEqual(r(2), 200)
Exemplo n.º 6
0
    def testResolveInReverseOrder(self):
        r = registry.MultiImplRegister("test")
        r.add_implementation(TestImpl(lambda _: True, fail_fn))
        r.add_implementation(TestImpl(lambda _: True, lambda _: 100))

        self.assertEqual(r(1), 100)
Exemplo n.º 7
0
    def testResolveAlwaysSupported(self):
        r = registry.MultiImplRegister("test")
        r.add_implementation(TestImpl(lambda _: True, lambda _: 100))
        r.add_implementation(TestImpl(lambda _: False, fail_fn))

        self.assertEqual(r(1), 100)