1from PyObjCTools.TestSupport import * 2from SystemConfiguration import * 3import socket 4 5class TestSCNetworkReachability (TestCase): 6 def testTypes(self): 7 self.failUnlessIsInstance(SCNetworkReachabilityRef, objc.objc_class) 8 9 def testFunctions(self): 10 self.failUnlessResultIsCFRetained(SCNetworkReachabilityCreateWithAddressPair) 11 v = SCNetworkReachabilityCreateWithAddressPair(None, 12 ('0.0.0.0', 20990), 13 ('www.python.org', 80)) 14 15 16 sd = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 17 sd.listen(5) 18 19 self.failUnlessResultIsCFRetained(SCNetworkReachabilityCreateWithAddress) 20 ref = v = SCNetworkReachabilityCreateWithAddress(None, sd.getsockname()) 21 self.failUnlessIsInstance(v, SCNetworkReachabilityRef) 22 23 self.failUnlessResultIsCFRetained(SCNetworkReachabilityCreateWithName) 24 v = SCNetworkReachabilityCreateWithName(None, 'www.python.org') 25 self.failUnlessIsInstance(v, SCNetworkReachabilityRef) 26 27 v = SCNetworkReachabilityGetTypeID() 28 self.failUnlessIsInstance(v, (int, long)) 29 30 self.failUnlessResultIsBOOL(SCNetworkReachabilityGetFlags) 31 v, fl = SCNetworkReachabilityGetFlags(ref, None) 32 self.failUnless(v) 33 self.failUnlessIsInstance(fl, (int, long)) 34 35 36 l = [] 37 def callout(ref, flags, ctx): 38 l.append([ref, flags, ctx]) 39 print flags 40 ctx = object() 41 v = SCNetworkReachabilitySetCallback(ref, callout, ctx) 42 self.failUnless(v is True) 43 44 45 rl = CFRunLoopGetCurrent() 46 self.failUnlessResultIsBOOL(SCNetworkReachabilityScheduleWithRunLoop) 47 r = SCNetworkReachabilityScheduleWithRunLoop(ref, rl, kCFRunLoopCommonModes) 48 49 sd.close() 50 CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0, False) 51 52 self.failUnlessResultIsBOOL(SCNetworkReachabilityUnscheduleFromRunLoop) 53 r = SCNetworkReachabilityUnscheduleFromRunLoop(ref, rl, kCFRunLoopCommonModes) 54 55 56 57 58 59 60 61 62 63 64if __name__ == "__main__": 65 main() 66