1from PyObjCTools.TestSupport import *
2import objc
3from PyObjCTest.sockaddr import PyObjCTestSockAddr
4
5objc.registerMetaDataForSelector("PyObjCTestSockAddr", "sockAddrToValue:",
6           dict(
7               arguments={
8                   2+0: dict(type_modifier=objc._C_IN),
9               }
10))
11objc.registerMetaDataForSelector("PyObjCTestSockAddr", "getIPv4Addr:",
12           dict(
13               arguments={
14                   2+0: dict(type_modifier=objc._C_OUT),
15               }
16))
17objc.registerMetaDataForSelector("PyObjCTestSockAddr", "getIPv6Addr:",
18           dict(
19               arguments={
20                   2+0: dict(type_modifier=objc._C_OUT),
21               }
22))
23
24
25
26class TestSockAddrSupport (TestCase):
27    def testToObjC(self):
28        o = PyObjCTestSockAddr
29
30        v = o.sockAddrToValue_(('1.2.3.4', 45))
31        self.assertEquals(v, ('IPv4', '1.2.3.4', 45))
32
33        v = o.sockAddrToValue_(('::1', 90, 4, 5))
34        self.assertEquals(v, ('IPv6', '::1', 90, 4, 5))
35
36    def testIPv4FromC(self):
37        o = PyObjCTestSockAddr
38
39        v = o.getIPv4Addr_(None)
40        self.assertEquals(v, ('127.0.0.1', 80))
41
42    def testIPv6FromC(self):
43        o = PyObjCTestSockAddr
44
45        v = o.getIPv6Addr_(None)
46        self.assertEquals(v, ('::1', 443, 2, 3))
47
48if __name__ == "__main__":
49	main()
50