Пример #1
0
 def test_cw_strings(self):
     from ctypes import c_wchar_p
     c_wchar_p.from_param('123')
     self.assertRaises(TypeError, c_wchar_p.from_param, 42)
     self.assertRaises(TypeError, c_wchar_p.from_param, b'123\xff')
     pa = c_wchar_p.from_param(c_wchar_p('123'))
     self.assertEqual(type(pa), c_wchar_p)
Пример #2
0
    def test_cw_strings(self):
        from ctypes import byref, c_wchar_p

        c_wchar_p.from_param("123")

        self.assertRaises(TypeError, c_wchar_p.from_param, 42)
        self.assertRaises(TypeError, c_wchar_p.from_param, b"123\377")

        pa = c_wchar_p.from_param(c_wchar_p("123"))
        self.assertEqual(type(pa), c_wchar_p)
    def test_cw_strings(self):
        from ctypes import byref, c_wchar_p
        s = u"123"
        if sys.platform == "win32":
            self.assertTrue(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            self.assertEqual(c_wchar_p.from_param("123")._obj, u"123")
        self.assertRaises(UnicodeDecodeError, c_wchar_p.from_param, "123\377")

        pa = c_wchar_p.from_param(c_wchar_p(u"123"))
        self.assertEqual(type(pa), c_wchar_p)
Пример #4
0
    def test_cw_strings(self):
        from ctypes import byref, c_wchar_p
        s = u"123"
        if sys.platform == "win32":
            self.assertTrue(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            self.assertEqual(c_wchar_p.from_param("123")._obj, u"123")
        self.assertRaises(UnicodeDecodeError, c_wchar_p.from_param, "123\377")

        pa = c_wchar_p.from_param(c_wchar_p(u"123"))
        self.assertEqual(type(pa), c_wchar_p)
Пример #5
0
    def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
##            print "(No c_wchar_p)"
            return

        c_wchar_p.from_param("123")

        self.assertRaises(TypeError, c_wchar_p.from_param, 42)
        self.assertRaises(TypeError, c_wchar_p.from_param, b"123\377")

        pa = c_wchar_p.from_param(c_wchar_p("123"))
        self.assertEqual(type(pa), c_wchar_p)
Пример #6
0
    def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
##            print "(No c_wchar_p)"
            return

        c_wchar_p.from_param("123")

        self.assertRaises(TypeError, c_wchar_p.from_param, 42)
        self.assertRaises(TypeError, c_wchar_p.from_param, b"123\377")

        pa = c_wchar_p.from_param(c_wchar_p("123"))
        self.assertEqual(type(pa), c_wchar_p)
Пример #7
0
    def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
            return

        s = u'123'
        if sys.platform == 'win32':
            self.assertTrue(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)
            self.assertEqual(c_wchar_p.from_param('123')._obj, u'123')
        self.assertRaises(UnicodeDecodeError, c_wchar_p.from_param, '123\xff')
        pa = c_wchar_p.from_param(c_wchar_p(u'123'))
        self.assertEqual(type(pa), c_wchar_p)
Пример #8
0
    def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
            return

        s = u'123'
        if sys.platform == 'win32':
            self.assertTrue(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)
            self.assertEqual(c_wchar_p.from_param('123')._obj, u'123')
        self.assertRaises(UnicodeDecodeError, c_wchar_p.from_param, '123\xff')
        pa = c_wchar_p.from_param(c_wchar_p(u'123'))
        self.assertEqual(type(pa), c_wchar_p)
Пример #9
0
    def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
            ##            print "(No c_wchar_p)"
            return
        s = "123"
        if sys.platform == "win32":
            self.assertTrue(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            self.assertEqual(c_wchar_p.from_param("123")._obj, "123")
        self.assertRaises(TypeError, c_wchar_p.from_param, b"123\377")

        pa = c_wchar_p.from_param(c_wchar_p("123"))
        self.assertEqual(type(pa), c_wchar_p)
Пример #10
0
    def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
##            print "(No c_wchar_p)"
            return
        s = u"123"
        if sys.platform == "win32":
            self.failUnless(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            self.failUnlessEqual(c_wchar_p.from_param("123")._obj, u"123")
        self.assertRaises(UnicodeDecodeError, c_wchar_p.from_param, "123\377")

        pa = c_wchar_p.from_param(c_wchar_p(u"123"))
        self.failUnlessEqual(type(pa), c_wchar_p)
Пример #11
0
    def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
##            print "(No c_wchar_p)"
            return
        s = u"123"
        if sys.platform == "win32":
            assert c_wchar_p.from_param(s)._obj is s
            raises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            assert c_wchar_p.from_param("123")._obj == u"123"
        raises(UnicodeDecodeError, c_wchar_p.from_param, "123\377")

        pa = c_wchar_p.from_param(c_wchar_p(u"123"))
        assert type(pa) == c_wchar_p
Пример #12
0
 def test_parameter_repr(self):
     from ctypes import (
         c_bool,
         c_char,
         c_wchar,
         c_byte,
         c_ubyte,
         c_short,
         c_ushort,
         c_int,
         c_uint,
         c_long,
         c_ulong,
         c_longlong,
         c_ulonglong,
         c_float,
         c_double,
         c_longdouble,
         c_char_p,
         c_wchar_p,
         c_void_p,
     )
     self.assertRegexpMatches(repr(c_bool.from_param(True)),
                              r"^<cparam '\?' at 0x[A-Fa-f0-9]+>$")
     self.assertEqual(repr(c_char.from_param('a')), "<cparam 'c' ('a')>")
     self.assertRegexpMatches(repr(c_wchar.from_param('a')),
                              r"^<cparam 'u' at 0x[A-Fa-f0-9]+>$")
     self.assertEqual(repr(c_byte.from_param(98)), "<cparam 'b' (98)>")
     self.assertEqual(repr(c_ubyte.from_param(98)), "<cparam 'B' (98)>")
     self.assertEqual(repr(c_short.from_param(511)), "<cparam 'h' (511)>")
     self.assertEqual(repr(c_ushort.from_param(511)), "<cparam 'H' (511)>")
     self.assertRegexpMatches(repr(c_int.from_param(20000)),
                              r"^<cparam '[li]' \(20000\)>$")
     self.assertRegexpMatches(repr(c_uint.from_param(20000)),
                              r"^<cparam '[LI]' \(20000\)>$")
     self.assertRegexpMatches(repr(c_long.from_param(20000)),
                              r"^<cparam '[li]' \(20000\)>$")
     self.assertRegexpMatches(repr(c_ulong.from_param(20000)),
                              r"^<cparam '[LI]' \(20000\)>$")
     self.assertRegexpMatches(repr(c_longlong.from_param(20000)),
                              r"^<cparam '[liq]' \(20000\)>$")
     self.assertRegexpMatches(repr(c_ulonglong.from_param(20000)),
                              r"^<cparam '[LIQ]' \(20000\)>$")
     self.assertEqual(repr(c_float.from_param(1.5)), "<cparam 'f' (1.5)>")
     self.assertEqual(repr(c_double.from_param(1.5)), "<cparam 'd' (1.5)>")
     self.assertEqual(repr(c_double.from_param(1e300)),
                      "<cparam 'd' (1e+300)>")
     self.assertRegexpMatches(
         repr(c_longdouble.from_param(1.5)),
         r"^<cparam ('d' \(1.5\)|'g' at 0x[A-Fa-f0-9]+)>$")
     self.assertRegexpMatches(repr(c_char_p.from_param(b'hihi')),
                              "^<cparam 'z' \(0x[A-Fa-f0-9]+\)>$")
     self.assertRegexpMatches(repr(c_wchar_p.from_param('hihi')),
                              "^<cparam 'Z' \(0x[A-Fa-f0-9]+\)>$")
     self.assertRegexpMatches(repr(c_void_p.from_param(0x12)),
                              r"^<cparam 'P' \(0x0*12\)>$")
Пример #13
0
    def test_cw_strings(self):
        py.test.skip("testing implementation internals")
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
##            print "(No c_wchar_p)"
            return
        s = "123"
        if sys.platform == "win32":
            assert c_wchar_p.from_param(s)._obj is s
            raises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            assert c_wchar_p.from_param(b"123")._obj == "123"
        raises(UnicodeDecodeError, c_wchar_p.from_param, b"123\377")

        pa = c_wchar_p.from_param(c_wchar_p("123"))
        assert type(pa) == c_wchar_p