1from PyObjCTools.TestSupport import * 2 3from SystemConfiguration import * 4import socket, sys 5 6def resolver_available(): 7 try: 8 socket.gethostbyname('www.python.org') 9 return True 10 except socket.error: 11 return False 12 13class TestSCNetwork (TestCase): 14 def testConstants(self): 15 self.assertEquals(kSCNetworkFlagsTransientConnection, 1 << 0) 16 self.assertEquals(kSCNetworkFlagsReachable, 1<<1) 17 self.assertEquals(kSCNetworkFlagsConnectionRequired, 1<<2) 18 self.assertEquals(kSCNetworkFlagsConnectionAutomatic, 1<<3) 19 self.assertEquals(kSCNetworkFlagsInterventionRequired, 1<<4) 20 self.assertEquals(kSCNetworkFlagsIsLocalAddress, 1<<16) 21 self.assertEquals(kSCNetworkFlagsIsDirect, 1<<17) 22 23 def testHardFunctionsNoHost(self): 24 self.assertRaises(socket.gaierror, SCNetworkCheckReachabilityByAddress, 25 ('no-such-host.objective-python.org', 80), objc._size_sockaddr_ip4, None) 26 27 @onlyIf(resolver_available(), "No DNS resolver available") 28 def testHardFunctions(self): 29 b, flags = SCNetworkCheckReachabilityByAddress( 30 ('www.python.org', 80), objc._size_sockaddr_ip4, None) 31 self.assertIsInstance(b, bool) 32 self.assertIsInstance(flags, (int, long)) 33 self.assertEqual(b, True) 34 self.assertEqual(flags, kSCNetworkFlagsReachable) 35 36 37 @onlyIf(resolver_available(), "No DNS resolver available") 38 def testFunctions(self): 39 r, flags = SCNetworkCheckReachabilityByName(b"www.python.org", None) 40 self.assertTrue(r is True or r is False) 41 self.assertTrue(isinstance(flags, (int, long))) 42 43 r = SCNetworkInterfaceRefreshConfiguration("en0") 44 self.assertTrue(r is True or r is False) 45 46 47if __name__ == "__main__": 48 main() 49