예제 #1
0
    def test_adapt_subtype(self):
        from psycopg2ct.extensions import adapt

        class Sub(str):
            pass

        s1 = "hel'lo"
        s2 = Sub(s1)

        assert adapt(s1).getquoted() == adapt(s2).getquoted()
예제 #2
0
    def test_mro_required(self):
        import psycopg2ct
        from psycopg2ct.extensions import adapt, register_adapter, AsIs

        # Intentionally old-style, they don't expose their MRO.
        class A:
            pass
        class B(A):
            pass

        register_adapter(A, lambda a: AsIs("a"))
        with self.assertRaises(psycopg2ct.ProgrammingError):
            adapt(B())
예제 #3
0
    def test_adapt_most_specific(self):
        from psycopg2ct.extensions import adapt, register_adapter, AsIs

        class A(object):
            pass
        class B(A):
            pass
        class C(B):
            pass

        register_adapter(A, lambda a: AsIs("a"))
        register_adapter(B, lambda b: AsIs("b"))
        assert adapt(C()).getquoted() == "b"