[PyObjC-svn] r2126 - in trunk/pyobjc/pyobjc-framework-Cocoa: Doc Examples/AppKit/ClassBrowser/ClassBrowser.nib Examples/AppKit/CocoaBindings/ToDos Lib/AppKit Lib/Foundation Modules PyObjCTest

[email protected]
Newsgroups gmane.comp.python.pyobjc.cvs
Message-ID <[email protected]>
Author: ronaldoussoren
Date: Mon Mar 30 15:31:19 2009
New Revision: 2126

Log:
Improve test coverage for Foundation. 

TODO:
* Do the same for CoreFoundation
* Make sure all tests pass, which will require fixes in pyobjc-core as well.


Added:
   trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-Foudation.txt
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscredentialstorage.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdate.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdistributedlock.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsgarbagecollector.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnotification.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsportcoder.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsportmessage.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsportnameserver.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspropertylist.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsproxy.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsrange.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsrunloop.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscriptclassdescription.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscriptcoercionhandler.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscriptcommand.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscriptkeyvaluecoding.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscriptobjectspecifier.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscriptstandardsuitecommands.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscriptwhosetests.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nssortdescriptor.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsspellserver.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstask.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsthread.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstimezone.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlcache.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlconnection.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlcredential.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurldownload.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlerror.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlhandle.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlprotectionspace.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlprotocol.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsurlresponse.py   (contents, props changed)
Modified:
   trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt
   trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/classes.nib
   trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/info.nib
   trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/CocoaBindings/ToDos/ToDosDocument.py
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/PyObjC.bridgesupport
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/PyObjC.bridgesupport
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventdescriptor.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventmanager.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsapplescript.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarchiver.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarray.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsattributedstring.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbitmapimagerep.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbundle.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscalendar.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscharacterset.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsclassdescription.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscomparisonpredicate.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsconnection.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdateformatter.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdistributednotificationcenter.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nserror.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsexception.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilehandle.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilemanager.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsformatter.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsgeometry.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshashtable.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshttpcookie.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexpath.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexset.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsinvocation.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyedarchiver.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyvaluecoding.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslayoutmanager.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslock.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmaptable.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmetadata.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmethodsignature.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnetservices.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnumberformatter.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobjcruntime.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobject.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsoperation.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspathutilties.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsport.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspredicate.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscanner.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsset.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstream.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstring.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstimer.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstypesetter.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsundomanager.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsuserdefaults.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvalue.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvaluetransformer.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldocument.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtd.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtdnode.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlelement.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlnode.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlparser.py

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt	Mon Mar 30 15:31:19 2009
@@ -81,3 +81,10 @@
 ------------
 
 Methods ``-initWithWindowRef:`` and ``-windowRef`` are not supported.
+
+``NSInputStream``
+------------------
+
+* ``getBuffer:length:``
+
+   This method is not supported

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/classes.nib
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/classes.nib	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/classes.nib	Mon Mar 30 15:31:19 2009
@@ -1,13 +1,41 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {browserAction = id; }; 
-            CLASS = ClassBrowserDelegate; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {browser = id; pathLabel = id; table = id; }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBClasses</key>
+	<array>
+		<dict>
+			<key>ACTIONS</key>
+			<dict>
+				<key>browserAction</key>
+				<string>id</string>
+			</dict>
+			<key>CLASS</key>
+			<string>ClassBrowserDelegate</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>OUTLETS</key>
+			<dict>
+				<key>browser</key>
+				<string>id</string>
+				<key>pathLabel</key>
+				<string>id</string>
+				<key>table</key>
+				<string>id</string>
+			</dict>
+			<key>SUPERCLASS</key>
+			<string>NSObject</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>FirstResponder</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSObject</string>
+		</dict>
+	</array>
+	<key>IBVersion</key>
+	<string>1</string>
+</dict>
+</plist>

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/info.nib
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/info.nib	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/ClassBrowser/ClassBrowser.nib/info.nib	Mon Mar 30 15:31:19 2009
@@ -1,22 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
-	<key>IBDocumentLocation</key>
-	<string>61 25 356 240 0 0 1152 746 </string>
-	<key>IBEditorPositions</key>
-	<dict>
-		<key>29</key>
-		<string>45 156 318 44 0 0 1152 746 </string>
-	</dict>
 	<key>IBFramework Version</key>
-	<string>291.0</string>
+	<string>677</string>
+	<key>IBOldestOS</key>
+	<integer>5</integer>
 	<key>IBOpenObjects</key>
 	<array>
 		<integer>21</integer>
 		<integer>29</integer>
 	</array>
 	<key>IBSystem Version</key>
-	<string>6L60</string>
+	<string>9G55</string>
+	<key>targetFramework</key>
+	<string>IBCocoaFramework</string>
 </dict>
 </plist>

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/CocoaBindings/ToDos/ToDosDocument.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/CocoaBindings/ToDos/ToDosDocument.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/CocoaBindings/ToDos/ToDosDocument.py	Mon Mar 30 15:31:19 2009
@@ -7,20 +7,15 @@
 #  The original version was written in Objective-C by Malcolm Crawford
 #  at http://homepage.mac.com/mmalc/CocoaExamples/controllers.html
 
-import objc
-from PyObjCTools import NibClassBuilder
-from Foundation import *
+from AppKit import *
 
 from Category import Category
 from PriorityToColourTransformer import PriorityToColourTransformer
 from OverdueTransformer import OverdueTransformer
 
-NibClassBuilder.extractClasses("ToDosDocument")
-
-class ToDosDocument(NibClassBuilder.AutoBaseClass):
-    # the actual base class is NSDocument
-    # The following outlets are added to the class: nix
-    toDos = objc.ivar('toDos')
+class ToDosDocument(NSDocument):
+    nix = objc.IBOutlet()
+    toDos = objc.ivar()
 
     def init(self):
         self = super(ToDosDocument, self).init()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/PyObjC.bridgesupport
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/PyObjC.bridgesupport	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/PyObjC.bridgesupport	Mon Mar 30 15:31:19 2009
@@ -2867,7 +2867,7 @@
       <arg c_array_length_in_arg='0' index='1' type_modifier='o' type='o^S'/>
       <arg c_array_length_in_arg='0' index='2' type_modifier='o' type='o^I' type64='o^Q' />
       <arg c_array_length_in_arg='0' index='3' type_modifier='o' />
-      <arg index='4' type='^B' />
+      <arg index='4' type='^B' c_array_length_in_arg='0' type_modifier='o' />
     </method>
     <method selector='getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:'>
       <retval type='v' />
@@ -4398,7 +4398,7 @@
     </method>
     <method selector='getPixel:atX:y:'>
       <retval type='v' />
-      <arg index='0' type_modifier='o' />
+      <arg index='0' type_modifier='o' c_array_of_variable_length='true' />
       <arg index='1' type='i' type64='q' />
       <arg index='2' type='i' type64='q' />
     </method>
@@ -10529,7 +10529,7 @@
       <arg c_array_length_in_arg='0' index='1' type_modifier='o' />
       <arg c_array_length_in_arg='0' index='2' type_modifier='o' />
       <arg c_array_length_in_arg='0' index='3' type_modifier='o' />
-      <arg index='4' type='^B' />
+      <arg index='4' type='^B' c_array_length_in_arg='0' type_modifier='o' />
     </method>
     <method selector='getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:'>
       <retval type='I' type64='Q' />
@@ -10537,8 +10537,8 @@
       <arg c_array_length_in_arg='0' index='1' type_modifier='o' />
       <arg c_array_length_in_arg='0' index='2' type_modifier='o' />
       <arg c_array_length_in_arg='0' index='3' type_modifier='o' />
-      <arg index='4' type='^B' />
-      <arg c_array_length_in_arg='0' index='5' type='^z' type_modifier='o' />
+      <arg index='4' type='^B' type_modifier='o' c_array_length_in_arg='0' />
+      <arg c_array_length_in_arg='0' index='5' type='^C' type_modifier='o' />
     </method>
     <method selector='getLineFragmentInsertionPointsForCharacterAtIndex:alternatePositions:inDisplayOrder:positions:characterIndexes:'>
       <retval type='I' type64='Q' />
@@ -10555,7 +10555,7 @@
     <method selector='glyphAtIndex:isValidIndex:'>
       <retval type='I' />
       <arg index='0' type='I' type64='Q' />
-      <arg index='1' type='^B' />
+      <arg index='1' type='^B' type_modifier='o' />
     </method>
     <method selector='glyphGenerator'>
       <retval type='@' />
@@ -22149,8 +22149,8 @@
       <arg c_array_length_in_arg='0' index='1' type_modifier='o' />
       <arg c_array_length_in_arg='0' index='2' type_modifier='o' />
       <arg c_array_length_in_arg='0' index='3' type_modifier='o' />
-      <arg index='4' type='^B' />
-      <arg c_array_length_in_arg='0' index='5' type='^z' type_modifier='o' />
+      <arg index='4' type='^B' type_modifier='o' c_array_length_in_arg='0' />
+      <arg c_array_length_in_arg='0' index='5' type='^C' type_modifier='o' />
     </method>
     <method selector='getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:'>
       <retval type='v' />
@@ -22161,9 +22161,9 @@
     </method>
     <method selector='getLineFragmentRect:usedRect:remainingRect:forStartingGlyphAtIndex:proposedRect:lineSpacing:paragraphSpacingBefore:paragraphSpacingAfter:'>
       <retval type='v' />
-      <arg index='0' type_modifier='N' />
-      <arg index='1' type_modifier='N' />
-      <arg index='2' type_modifier='N' />
+      <arg index='0' type_modifier='N' type='^{_NSRect={_NSPoint=ff}{_NSSize=ff}}' type64='^{CGRect={CGPoint=dd}{CGSize=dd}}' />
+      <arg index='1' type_modifier='N' type='^{_NSRect={_NSPoint=ff}{_NSSize=ff}}' type64='^{CGRect={CGPoint=dd}{CGSize=dd}}'/>
+      <arg index='2' type_modifier='N' type='^{_NSRect={_NSPoint=ff}{_NSSize=ff}}' type64='^{CGRect={CGPoint=dd}{CGSize=dd}}'/>
       <arg index='3' type='I' type64='Q' />
       <arg index='4' type='{_NSRect={_NSPoint=ff}{_NSSize=ff}}' type64='{CGRect={CGPoint=dd}{CGSize=dd}}' />
       <arg index='5' type='f' type64='d' />
@@ -22357,10 +22357,10 @@
     </method>
     <method selector='willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset:'>
       <retval type='v' />
-      <arg index='0' type_modifier='N' />
+      <arg index='0' type_modifier='N' type='^{_NSRect={_NSPoint=ff}{_NSSize=ff}}' type64='^{CGRect={CGPoint=dd}{CGSize=dd}}'  />
       <arg index='1' type='{_NSRange=II}' type64='{_NSRange=QQ}' />
-      <arg index='2' type_modifier='N' />
-      <arg index='3' type_modifier='N' />
+      <arg index='2' type_modifier='N' type='^{_NSRect={_NSPoint=ff}{_NSSize=ff}}' type64='^{CGRect={CGPoint=dd}{CGSize=dd}}'  />
+      <arg index='3' type_modifier='N' type='^f' type64='^d'  />
     </method>
   </class>
   <class name='NSURL'>

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/PyObjC.bridgesupport
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/PyObjC.bridgesupport	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/PyObjC.bridgesupport	Mon Mar 30 15:31:19 2009
@@ -301,6 +301,7 @@
   <constant name='NSZeroPoint' type='{_NSPoint=ff}' type64='{CGPoint=dd}' />
   <constant name='NSZeroRect' type='{_NSRect={_NSPoint=ff}{_NSSize=ff}}' type64='{CGRect={CGPoint=dd}{CGSize=dd}}' />
   <constant name='NSZeroSize' type='{_NSSize=ff}' type64='{CGSize=dd}' />
+  <enum name='NSProprietaryStringEncoding' value='65536' />
   <enum name='NSASCIIStringEncoding' value='1' />
   <enum name='NSAdminApplicationDirectory' value='4' />
   <enum name='NSAggregateExpressionType' value='14' />
@@ -5486,7 +5487,9 @@
       <retval type='i' />
       <arg index='0' type='@' />
     </method>
-    <method selector='getIndexes:' suggestion='use -indexAtPosition:' />
+    <method selector='getIndexes:' >
+      <arg index='0' c_array_of_variable_length='true' type_modifier='o'  />
+    </method>
     <method selector='indexAtPosition:'>
       <retval type='I' type64='Q' />
       <arg index='0' type='I' type64='Q' />
@@ -5545,7 +5548,7 @@
     </method>
     <method selector='getIndexes:maxCount:inIndexRange:'>
       <retval type='I' type64='Q' />
-      <arg c_array_length_in_arg='2' index='0' null_accepted='false' type_modifier='o' />
+      <arg c_array_length_in_arg='1' index='0' null_accepted='false' type_modifier='o' c_array_length_in_result='true' />
       <arg index='1' type='I' type64='Q' />
       <arg index='2' null_accepted='false' type_modifier='N' />
     </method>
@@ -7277,6 +7280,15 @@
     <method selector='hasThousandSeparators'>
       <retval type='B' />
     </method>
+    <method selector='isLenient'>
+      <retval type='B' />
+    </method>
+    <method selector='usesSignificantDigits'>
+      <retval type='B' />
+    </method>
+    <method selector='isPartialStringValidationEnabled'>
+      <retval type='B' />
+    </method>
     <method selector='init'>
       <retval type='@' />
     </method>
@@ -7972,6 +7984,7 @@
     </method>
     <method selector='copyWithZone:'>
       <retval type='@' />
+      <arg index='0' type='^{_NSZone=}' />
     </method>
     <method class_method='true' selector='copyWithZone:'>
       <retval type='@' />
@@ -9010,7 +9023,7 @@
     </method>
     <method class_method='true' selector='outputStreamToBuffer:capacity:'>
       <retval type='@' />
-      <arg c_array_length_in_arg='1' index='0' type_modifier='o' />
+      <arg c_array_length_in_arg='1' index='0' type_modifier='o' type='^v'/>
       <arg index='1' type='I' type64='Q' />
     </method>
     <method class_method='true' selector='outputStreamToFileAtPath:append:'>
@@ -10716,7 +10729,7 @@
       <retval type='B' />
     </method>
     <method selector='cStringUsingEncoding:'>
-      <retval c_array_delimited_by_null='true' type='^t' />
+      <retval c_array_delimited_by_null='true' type='^v' />
       <arg index='0' type='I' />
     </method>
     <method selector='canBeConvertedToEncoding:'>
@@ -10809,6 +10822,9 @@
     <method selector='floatValue'>
       <retval type='f' />
     </method>
+    <method selector='availableStringEncodings'>
+	    <retval c_array_delimited_by_null='true' />
+    </method>
     <method selector='getBytes:maxLength:usedLength:encoding:options:range:remainingRange:'>
       <retval type='B' />
       <arg c_array_length_in_arg='1,2' index='0' type_modifier='o' />
@@ -10819,20 +10835,39 @@
       <arg index='5' type='{_NSRange=II}' type64='{_NSRange=QQ}' />
       <arg index='6' type_modifier='o' />
     </method>
+    <method selector='cString'>
+	    <retval type='^t' c_array_delimited_by_null='true' />
+    </method>
+    <method selector='lossyCString'>
+	    <retval type='^t' c_array_delimited_by_null='true' />
+    </method>
     <method selector='getCString:' suggestion='use -cString' />
-    <method selector='getCString:maxLength:' suggestion='use -cString' />
-    <method selector='getCString:maxLength:encoding:' suggestion='use -cStringUsingEncoding:' />
-    <method selector='getCString:maxLength:range:remainingRange:' suggestion='use -cStringUsingEncoding:' />
+    <method selector='getCString:maxLength:' >
+	    <retval type='B' />
+	    <arg index='0' type='^v' type_modifier='o' c_array_length_in_arg='1' />
+    </method>
+    <method selector='getCString:maxLength:encoding:' >
+	    <retval type='B' />
+	    <arg index='0' type='^v' type_modifier='o' c_array_length_in_arg='1' />
+    </method>
+    <method selector='getCString:maxLength:range:remainingRange:' >
+	    <retval type='B' />
+	    <arg index='0' type='^v' type_modifier='o' c_array_length_in_arg='1' />
+	    <arg index='3' type_modifier='o' />
+    </method>
     <method selector='getCharacters:'>
       <retval type='v' />
-      <arg c_array_of_variable_length='true' index='0' type='r^T' />
+      <arg c_array_of_variable_length='true' index='0' type='^T' type_modifier='o' />
     </method>
     <method selector='getCharacters:range:'>
       <retval type='v' />
-      <arg c_array_length_in_arg='1' index='0' type='r^T' />
+      <arg c_array_length_in_arg='1' index='0' type='^T' type_modifier='o' />
       <arg index='1' type='{_NSRange=II}' type64='{_NSRange=QQ}' />
     </method>
-    <method selector='getFileSystemRepresentation:maxLength:' suggestion='use -fileSystemRepresentation' />
+    <method selector='getFileSystemRepresentation:maxLength:' >
+	    <retval type='B' />
+	    <arg index='0' c_array_length_in_arg='1' type_modifier='o' type='^t' />
+    </method>
     <method selector='getLineStart:end:contentsEnd:forRange:'>
       <retval type='v' />
       <arg index='0' type_modifier='o' />
@@ -10876,7 +10911,7 @@
     </method>
     <method selector='initWithCString:'>
       <retval type='@' />
-      <arg c_array_delimited_by_null='true' index='0' type='^t' type_modifier='n' />
+      <arg c_array_delimited_by_null='true' index='0' type='^v' type_modifier='n' />
     </method>
     <method selector='initWithCString:encoding:'>
       <retval type='@' />
@@ -10885,23 +10920,23 @@
     </method>
     <method selector='initWithCString:length:'>
       <retval type='@' />
-      <arg c_array_length_in_arg='1' index='0' type='^t' type_modifier='n' />
+      <arg c_array_length_in_arg='1' index='0' type='^v' type_modifier='n' />
       <arg index='1' type='I' type64='Q' />
     </method>
     <method selector='initWithCStringNoCopy:length:freeWhenDone:'>
       <retval type='@' />
-      <arg c_array_length_in_arg='1' index='0' type='^t' type_modifier='n' />
+      <arg c_array_length_in_arg='1' index='0' type='^v' type_modifier='n' />
       <arg index='1' type='I' type64='Q' />
       <arg index='2' type='B' />
     </method>
     <method selector='initWithCharacters:length:'>
       <retval type='@' />
-      <arg index='0' type='r^T' />
+      <arg index='0' type='^T' type_modifier='n' c_array_length_in_arg='1'  />
       <arg index='1' type='I' type64='Q' />
     </method>
     <method selector='initWithCharactersNoCopy:length:freeWhenDone:'>
       <retval type='@' />
-      <arg c_array_length_in_arg='1' index='0' type='r^T' type_modifier='n' />
+      <arg c_array_length_in_arg='1' index='0' type='^T' type_modifier='n' />
       <arg index='1' type='I' type64='Q' />
       <arg index='2' type='B' />
     </method>
@@ -10959,7 +10994,7 @@
     </method>
     <method selector='initWithUTF8String:'>
       <retval type='@' />
-      <arg c_array_delimited_by_null='true' index='0' type='^t' />
+      <arg c_array_delimited_by_null='true' index='0' type='^t' type_modifier='n' />
     </method>
     <method selector='intValue'>
       <retval type='i' />
@@ -11167,7 +11202,7 @@
     </method>
     <method class_method='true' selector='stringWithCString:'>
       <retval type='@' />
-      <arg c_array_delimited_by_null='true' index='0' type='^t' type_modifier='n' />
+      <arg c_array_delimited_by_null='true' index='0' type='^v' type_modifier='n' />
     </method>
     <method class_method='true' selector='stringWithCString:encoding:'>
       <retval type='@' />
@@ -11176,7 +11211,7 @@
     </method>
     <method class_method='true' selector='stringWithCString:length:'>
       <retval type='@' />
-      <arg c_array_delimited_by_null='true' index='0' type='^t' type_modifier='n' />
+      <arg c_array_length_in_arg='1' index='0' type='^v' type_modifier='n' />
       <arg index='1' type='I' type64='Q' />
     </method>
     <method class_method='true' selector='stringWithCharacters:length:'>
@@ -11218,7 +11253,7 @@
     </method>
     <method class_method='true' selector='stringWithFormat:' variadic='true'>
       <retval type='@' />
-      <arg index='0' type='@' />
+      <arg index='0' type='@' printf_format='true' />
     </method>
     <method class_method='true' selector='stringWithString:'>
       <retval type='@' />
@@ -11226,7 +11261,7 @@
     </method>
     <method class_method='true' selector='stringWithUTF8String:'>
       <retval type='@' />
-      <arg c_array_delimited_by_null='true' index='0' type='^t' type_modifier='o' />
+      <arg c_array_delimited_by_null='true' index='0' type='^t' type_modifier='n' />
     </method>
     <method selector='stringsByAppendingPaths:'>
       <retval type='@' />
@@ -12536,7 +12571,7 @@
     <method selector='getValue:' suggestion='use another method' />
     <method selector='initWithBytes:objCType:'>
       <retval type='@' />
-      <arg c_array_of_variable_length='true' index='0' />
+      <arg c_array_of_variable_length='true' index='0' type_modifier='n' />
       <arg c_array_delimited_by_null='true' index='1' type='^t' type_modifier='n' />
     </method>
     <method selector='isEqualToValue:'>
@@ -12563,12 +12598,12 @@
     </method>
     <method class_method='true' selector='value:withObjCType:'>
       <retval type='@' />
-      <arg index='0' type='^v' />
+      <arg index='0' type='^v' type_modifier='n' c_array_of_variable_length='true' />
       <arg c_array_delimited_by_null='true' index='1' type='^t' type_modifier='n' />
     </method>
     <method class_method='true' selector='valueWithBytes:objCType:'>
       <retval type='@' />
-      <arg index='0' type='^v' />
+      <arg index='0' type='^v' type_modifier='n' c_array_of_variable_length='true' />
       <arg c_array_delimited_by_null='true' index='1' type='^t' type_modifier='n' />
     </method>
     <method class_method='true' selector='valueWithNonretainedObject:'>

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py	Mon Mar 30 15:31:19 2009
@@ -29,6 +29,7 @@
 from Foundation._string import *
 
 import Foundation._nsobject
+import Foundation._nsindexset
 
 YES = objc.YES
 NO = objc.NO
@@ -47,3 +48,6 @@
 
 ABS = abs
 
+import sys
+NSMaximumStringLength = sys.maxint - 1
+del sys

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m	Mon Mar 30 15:31:19 2009
@@ -6,12 +6,23 @@
 call_NSBitmapImageRep_getTIFFCompressionTypes_count_(
 	PyObject* method, PyObject* self, PyObject* arguments)
 {
+	PyObject* a1;
+	PyObject* a2;
 	PyObject* result;
 	struct objc_super super;
 	NSTIFFCompression* list;
 	int numTypes;
 
-	if  (!PyArg_ParseTuple(arguments, "")) {
+	if  (!PyArg_ParseTuple(arguments, "OO", &a1, &a2)) {
+		return NULL;
+	}
+
+	if (a1 != Py_None) {
+		PyErr_SetString(PyExc_ValueError, "buffer must be None");
+		return NULL;
+	}
+	if (a2 != Py_None) {
+		PyErr_SetString(PyExc_ValueError, "length must be None");
 		return NULL;
 	}
 
@@ -60,6 +71,81 @@
 	return result;
 }
 
+#if 0
+static PyObject*
+call_NSBitmapImageRep_initWithBitmapDataPlanes_bitmapFormat(
+		PyObject* method, PyObject* self, PyObject* arguments)
+{
+	PyObject* py_planes;
+	unsigned char** planes;
+	Py_ssize_t  nr_planes;
+	PyObject* py_width;
+	NSInteger width;
+	PyObject* py_height;
+	NSInteger height;
+	long	  bitsPerSample;
+	long	  samplesPerPixel;
+	PyObject* py_hasAlpha;
+	BOOL	  hasAlpha;
+	PyObject* py_isPlanar;
+	BOOL	  isPlanar;
+	PyObject* py_colorSpaceName;
+	NSString* colorSpaceName;
+	long	  bitmapFormat;
+	PyObject* py_bytesPerRow;
+	NSInteger bytesPerRow;
+	PyObject* py_bitsPerPixel;
+	NSInteger bitsPerPixel;
+
+	if (!PyArg_Parse(args, "OOOiiOOOiOO", 
+		&py_planes, &py_width, &py_height, &bitsPerSample,
+		&samplesPerPixel, &py_hasAlpha, &py_isPlanar,
+		&bitmapFormat, &py_bytesPerRow, &py_bitsPerPixel)) {
+
+		return NULL;
+	}
+
+	if (PyObjC_PythonToObjC(@encode(NSInteger), py_width, &width) == -1) {
+		return NULL;
+	}
+	if (PyObjC_PythonToObjC(@encode(NSInteger), py_height, &height) == -1) {
+		return NULL;
+	}
+	hasAlpha = PyObject_IsTrue(py_hasAlpha);
+	isPlanar = PyObject_IsTrue(py_isPlanar);
+	if (PyObjC_PythonToObjC(@encode(NSInteger), py_bytesPerRow, &bytesPerRow) == -1) {
+		return NULL;
+	}
+	if (PyObjC_PythonToObjC(@encode(NSInteger), py_bitsPerPixel, &bitsPerPixel) == -1) {
+		return NULL;
+	}
+
+	if (py_planes == Py_None) {
+		planes = NULL;
+		nr_planes = -1;
+	} else {
+		PyObject* seq = PySequence_Fast(py_planes,
+				"Planes must be sequence");
+		if (seq == NULL) {
+			return NULL;
+		}
+		nr_planes = PySequence_Fast_GET_SIZE(seq);
+
+		planes = malloc(sizeof(unsigned char*) * nr_planes);
+		if (planes == NULL) {
+			PyErr_NoMemory();
+			Py_DECREF(seq);
+			return NULL;
+		}
+
+		Py_ssize_t i;
+		for (i = 0; i < nr_planes; i++) {
+
+		}
+	}
+}
+#endif
+
 
 /* XXX: Needs looking into, argument parsing seems awfully complex */
 static PyObject*

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventdescriptor.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventdescriptor.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventdescriptor.py	Mon Mar 30 15:31:19 2009
@@ -3,16 +3,19 @@
 
 class TestAED (TestCase):
     def testCreateWithBytes(self):
-        self.fail("+ (NSAppleEventDescriptor *)descriptorWithDescriptorType:(DescType)descriptorType bytes:(const void *)bytes length:(NSUInteger)byteCount;")
-        self.fail("- (id)initWithDescriptorType:(DescType)descriptorType bytes:(const void *)bytes length:(NSUInteger)byteCount;")
+        self.failUnlessArgSizeInArg(NSAppleEventDescriptor.descriptorWithDescriptorType_bytes_length_, 1, 2)
+        self.failUnlessArgIsIn(NSAppleEventDescriptor.descriptorWithDescriptorType_bytes_length_, 1)
 
-    def testInitWithAEDescNoCopy(self):
-        # The object will call AEDisposeDesc, meaning MacPython shouldn't
-        self.fail("Test for 'initWithAEDescNoCopy'")
+        self.failUnlessArgSizeInArg(NSAppleEventDescriptor.initWithDescriptorType_bytes_length_, 1, 2)
+        self.failUnlessArgIsIn(NSAppleEventDescriptor.initWithDescriptorType_bytes_length_, 1)
 
-    def testAccess(self):
-        # Ensure Python doesn't call AEDisposeDesc
-        self.fail('-aeDesc')
+#    def testInitWithAEDescNoCopy(self):
+#        # The object will call AEDisposeDesc, meaning MacPython shouldn't
+#        self.fail("Test for 'initWithAEDescNoCopy'")
+#
+#    def testAccess(self):
+#        # Ensure Python doesn't call AEDisposeDesc
+#        self.fail('-aeDesc')
 
 
 if __name__ == "__main__":

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventmanager.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventmanager.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsappleeventmanager.py	Mon Mar 30 15:31:19 2009
@@ -3,13 +3,6 @@
 from PyObjCTools.TestSupport import *
 
 class TestEAManager (TestCase):
-    def _testSuspension(self):
-        self.fail('- (NSAppleEventManagerSuspensionID)suspendCurrentAppleEvent;')
-        self.fail('- (NSAppleEventDescriptor *)appleEventForSuspensionID:(NSAppleEventManagerSuspensionID)suspensionID;')
-        self.fail('- (NSAppleEventDescriptor *)replyAppleEventForSuspensionID:(NSAppleEventManagerSuspensionID)suspensionID;')
-        self.fail('- (void)setCurrentAppleEventAndReplyEventWithSuspensionID:(NSAppleEventManagerSuspensionID)suspensionID;')
-        self.fail('- (void)resumeWithSuspensionID:(NSAppleEventManagerSuspensionID)suspensionID;')
-
     def testContants(self):
         self.failUnless( isinstance(NSAppleEventManagerWillProcessFirstEventNotification, unicode) )
         self.failUnless( isinstance(NSAppleEventTimeOutDefault, float) )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsapplescript.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsapplescript.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsapplescript.py	Mon Mar 30 15:31:19 2009
@@ -16,20 +16,14 @@
         self.failUnless(ok is False)
         self.failUnless(isinstance(error, NSDictionary))
 
-        obj = NSAppleScript.alloc().initWithSource_(
-                'tell application "Terminal" to do script "ls -l"')
-        m = obj.compileAndReturnError_.__metadata__()
-        self.failUnless(m['arguments'][2]['type'].startswith('o^'))
-
-        m = obj.executeAndReturnError_.__metadata__()
-        self.failUnless(m['arguments'][2]['type'].startswith('o^'))
-
-        m = obj.executeAppleEvent_error_.__metadata__()
-        self.failUnless(m['arguments'][3]['type'].startswith('o^'))
-
-        m = obj.initWithContentsOfURL_error_.__metadata__()
-        self.failUnless(m['arguments'][3]['type'].startswith('o^'))
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSAppleScript.isCompiled)
+        self.failUnlessResultIsBOOL(NSAppleScript.compileAndReturnError_)
+        self.failUnlessArgIsOut(NSAppleScript.compileAndReturnError_, 0)
+        self.failUnlessArgIsOut(NSAppleScript.executeAndReturnError_, 0)
+        self.failUnlessArgIsOut(NSAppleScript.executeAppleEvent_error_, 1)
+        self.failUnlessArgIsOut(NSAppleScript.initWithContentsOfURL_error_, 1)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarchiver.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarchiver.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarchiver.py	Mon Mar 30 15:31:19 2009
@@ -5,6 +5,10 @@
     def testConstants(self):
         self.failUnless(isinstance(NSInconsistentArchiveException, unicode))
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSArchiver.archiveRootObject_toFile_)
+        self.failUnlessResultIsBOOL(NSUnarchiver.isAtEnd)
+
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarray.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarray.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsarray.py	Mon Mar 30 15:31:19 2009
@@ -147,8 +147,8 @@
         self.assertRaises( IndexError, x.__getitem__, -100)
 
     def test_varargConstruction(self):
-        w = NSArray.arrayWithObjects_(1,2,3,4, None)
-        x = NSArray.alloc().initWithObjects_(1,2,3,4, None)
+        w = NSArray.arrayWithObjects_(1,2,3,4)
+        x = NSArray.alloc().initWithObjects_(1,2,3,4)
 
         y = NSArray.arrayWithObjects_count_([1,2,3,4,5,6], 4)
         z = NSArray.alloc().initWithObjects_count_([1,2,3,4,5,6], 4)
@@ -412,5 +412,34 @@
         self.assertEquals(a, [u"foo", u"bar"])
         self.assert_(isinstance(a, NSMutableArray))
 
+class TestNSArray (TestCase):
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSArray.containsObject_)
+        self.failUnlessResultIsBOOL(NSArray.writeToFile_atomically_)
+        self.failUnlessArgIsBOOL(NSArray.writeToFile_atomically_, 1)
+        self.failUnlessResultIsBOOL(NSArray.writeToURL_atomically_)
+        self.failUnlessArgIsBOOL(NSArray.writeToURL_atomically_, 1)
+
+        self.failUnlessArgIsBOOL(NSArray.initWithArray_copyItems_, 1)
+
+        self.failUnlessArgIsIn(NSArray.arrayWithObjects_count_, 0)
+        self.failUnlessArgSizeInArg(NSArray.arrayWithObjects_count_, 0, 1)
+        self.failUnlessArgIsIn(NSArray.initWithObjects_count_, 0)
+        self.failUnlessArgSizeInArg(NSArray.initWithObjects_count_, 0, 1)
+
+        self.failUnlessArgIsIn(NSMutableArray.removeObjectsFromIndices_numIndices_, 0)
+        self.failUnlessArgSizeInArg(NSMutableArray.removeObjectsFromIndices_numIndices_, 0, 1)
+
+        self.failUnlessArgIsFunction(NSArray.sortedArrayUsingFunction_context_, 0, 'I@@@', False)
+        self.failUnlessArgHasType(NSArray.sortedArrayUsingFunction_context_, 1, '@')
+        self.failUnlessArgIsFunction(NSArray.sortedArrayUsingFunction_context_hint_, 0, 'I@@@', False)
+        self.failUnlessArgHasType(NSArray.sortedArrayUsingFunction_context_hint_, 1, '@')
+
+        self.failUnlessArgIsFunction(NSMutableArray.sortUsingFunction_context_, 0, 'I@@@', False)
+        self.failUnlessArgHasType(NSMutableArray.sortUsingFunction_context_, 1, '@')
+
+        self.fail("-arrayWithObjects:")
+        self.fail("-initWithObjects:")
+
 if __name__ == '__main__':
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsattributedstring.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsattributedstring.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsattributedstring.py	Mon Mar 30 15:31:19 2009
@@ -6,13 +6,12 @@
 
 class TestNSAttributedString (TestCase):
     def testOutput(self):
-        obj = NSAttributedString.alloc().init()
-        m = obj.attributesAtIndex_longestEffectiveRange_inRange_.__metadata__()
-        self.failUnless(m['arguments'][3]['type'].startswith('o^'))
-
-        m = obj.attribute_atIndex_longestEffectiveRange_inRange_.__metadata__()
-        self.failUnless(m['arguments'][4]['type'].startswith('o^'))
+        self.failUnlessArgIsOut(NSAttributedString.attributesAtIndex_effectiveRange_, 1)
+        self.failUnlessArgIsOut(NSAttributedString.attribute_atIndex_effectiveRange_, 2)
+        self.failUnlessArgIsOut(NSAttributedString.attributesAtIndex_longestEffectiveRange_inRange_, 1)
+        self.failUnlessArgIsOut(NSAttributedString.attribute_atIndex_longestEffectiveRange_inRange_, 2)
 
+        self.failUnlessResultIsBOOL(NSAttributedString.isEqualToAttributedString_)
 
     def testConstantsAppKit(self):
         self.failUnlessIsInstance(NSFontAttributeName, unicode)

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbitmapimagerep.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbitmapimagerep.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbitmapimagerep.py	Mon Mar 30 15:31:19 2009
@@ -77,6 +77,12 @@
         bitmapData = i2.bitmapData()
         self.assertEquals(len(bitmapData), len(singlePlane))
         self.assertEquals(bitmapData, singlePlane)
+        
+        a = array.array('I', [255]*4)
+        self.failUnlessArgIsOut(NSBitmapImageRep.getPixel_atX_y_, 0)
+        d = i2.getPixel_atX_y_(a, 1, 1)
+        self.failUnless(a is d)
+
 
 class TestBadCreation(TestCase):
 
@@ -146,15 +152,23 @@
         self.failUnlessIsInstance(NSImageEXIFData, unicode)
         self.failUnlessIsInstance(NSImageFallbackBackgroundColor, unicode)
 
+    def testTiffCompression(self):
+        lst, nr = NSBitmapImageRep.getTIFFCompressionTypes_count_(None, None)
+        self.failUnlessIsInstance(lst, tuple)
+        self.failUnlessIsInstance(nr, (int, long))
+        self.failUnlessEqual(len(lst), nr)
+        self.failIfEqual(len(lst), 0)
+        self.failUnlessIsInstance(lst[0], (int, long))
+
     def testMethods(self):
         self.failUnlessResultIsBOOL(NSBitmapImageRep.isPlanar)
         self.failUnlessResultIsBOOL(NSBitmapImageRep.canBeCompressedUsing_)
         self.failUnlessArgIsBOOL(NSBitmapImageRep.incrementalLoadFromData_complete_, 1)
+
+        self.failUnlessArgIsOut(NSBitmapImageRep.getCompression_factor_, 0)
+        self.failUnlessArgIsOut(NSBitmapImageRep.getCompression_factor_, 1)
+
         self.fail("- (id)initWithBitmapDataPlanes:(unsigned char **)planes pixelsWide:(NSInteger)width pixelsHigh:(NSInteger)height bitsPerSample:(NSInteger)bps samplesPerPixel:(NSInteger)spp hasAlpha:(BOOL)alpha isPlanar:(BOOL)isPlanar colorSpaceName:(NSString *)colorSpaceName  bitmapFormat:(NSBitmapFormat)bitmapFormat bytesPerRow:(NSInteger)rBytes bitsPerPixel:(NSInteger)pBits;")
-        self.fail("- (id)initWithBitmapDataPlanes:(unsigned char **)planes pixelsWide:(NSInteger)width pixelsHigh:(NSInteger)height bitsPerSample:(NSInteger)bps samplesPerPixel:(NSInteger)spp hasAlpha:(BOOL)alpha isPlanar:(BOOL)isPlanar colorSpaceName:(NSString *)colorSpaceName bytesPerRow:(NSInteger)rBytes bitsPerPixel:(NSInteger)pBits;") #XXX See above
-        self.fail("- (void)getCompression:(NSTIFFCompression *)compression factor:(float *)factor;")
-        self.fail("- (void)setCompression:(NSTIFFCompression)compression factor:(float)factor;")
-        self.fail("+ (void)getTIFFCompressionTypes:(const NSTIFFCompression **)list count:(NSInteger *)numTypes;")
 
 
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbundle.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbundle.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsbundle.py	Mon Mar 30 15:31:19 2009
@@ -13,6 +13,21 @@
         m = obj.loadAndReturnError_.__metadata__()
         self.failUnless(m['arguments'][2]['type'].startswith('o^'))
 
+    def testMethods(self):
+        b = NSBundle.mainBundle()
+        # Test on an instance because NSBundle has class methods
+        # that interfere with this test
+        self.failUnlessResultIsBOOL(b.load)
+        self.failUnlessResultIsBOOL(b.isLoaded)
+        self.failUnlessResultIsBOOL(b.unload)
+
+    @min_os_level('10.5')
+    def testMethods10_5(self):
+        self.failUnlessResultIsBOOL(NSBundle.preflightAndReturnError_)
+        self.failUnlessArgIsOut(NSBundle.preflightAndReturnError_, 0)
+        self.failUnlessResultIsBOOL(NSBundle.loadAndReturnError_)
+        self.failUnlessArgIsOut(NSBundle.loadAndReturnError_, 0)
+
     def testConstants(self):
         self.assertEquals(NSBundleExecutableArchitectureI386, 0x00000007)
         self.assertEquals(NSBundleExecutableArchitecturePPC, 0x00000012)

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscalendar.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscalendar.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscalendar.py	Mon Mar 30 15:31:19 2009
@@ -21,12 +21,13 @@
 
         self.assertEquals( NSUndefinedDateComponent, NSIntegerMax)
 
-    def testOutput(self):
+    @min_os_level('10.5')
+    def testMethods10_5(self):
         obj = NSCalendar.currentCalendar()
 
-        m = obj.rangeOfUnit_startDate_interval_forDate_.__metadata__()
-        self.failUnless(m['arguments'][3]['type'].startswith('o^'))
-        self.failUnless(m['arguments'][4]['type'].startswith('o^'))
+        self.failUnlessResultIsBOOL(NSCalendar.rangeOfUnit_startDate_interval_forDate_)
+        self.failUnlessArgIsOut(NSCalendar.rangeOfUnit_startDate_interval_forDate_, 1)
+        self.failUnlessArgIsOut(NSCalendar.rangeOfUnit_startDate_interval_forDate_, 2)
 
 
 if __name__ == "__main__":

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscharacterset.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscharacterset.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscharacterset.py	Mon Mar 30 15:31:19 2009
@@ -6,5 +6,11 @@
     def testConstants(self):
         self.assertEquals( NSOpenStepUnicodeReservedBase, 0xF400 )
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSCharacterSet.characterIsMember_)
+        self.failUnlessResultIsBOOL(NSCharacterSet.longCharacterIsMember_)
+        self.failUnlessResultIsBOOL(NSCharacterSet.isSupersetOfSet_)
+        self.failUnlessResultIsBOOL(NSCharacterSet.hasMemberInPlane_)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsclassdescription.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsclassdescription.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsclassdescription.py	Mon Mar 30 15:31:19 2009
@@ -7,5 +7,6 @@
         self.failUnless(isinstance(NSClassDescriptionNeededForClassNotification, unicode))
 
 
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py	Mon Mar 30 15:31:19 2009
@@ -110,5 +110,16 @@
         d = o.fetchArray_(coder)
         self.assertEquals(tuple(range(10)), tuple(d))
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSCoder.allowsKeyedCoding)
+        self.failUnlessArgIsBOOL(NSCoder.encodeBool_forKey_, 0)
+        self.failUnlessResultIsBOOL(NSCoder.containsValueForKey_)
+        self.failUnlessResultIsBOOL(NSCoder.decodeBoolForKey_)
+
+        self.failUnlessResultHasType(NSCoder.decodeBytesForKey_returnedLength_, '^v')
+        self.failUnlessResultSizeInArg(NSCoder.decodeBytesForKey_returnedLength_, 1)
+        self.failUnlessArgIsOut(NSCoder.decodeBytesForKey_returnedLength_, 1)
+
+
 if __name__ == '__main__':
     main( )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscomparisonpredicate.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscomparisonpredicate.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscomparisonpredicate.py	Mon Mar 30 15:31:19 2009
@@ -26,6 +26,10 @@
         self.assertEquals(NSContainsPredicateOperatorType, 99)
         self.assertEquals(NSBetweenPredicateOperatorType, 100)
 
+    def testMethods(self):
+        self.failUnlessArgIsSEL(NSComparisonPredicate.predicateWithLeftExpression_rightExpression_customSelector_, 2, objc._C_NSBOOL + '@:@')
+        self.failUnlessArgIsSEL(NSComparisonPredicate.initWithLeftExpression_rightExpression_customSelector_, 2, objc._C_NSBOOL + '@:@')
+
 if __name__ == "__main__":
     main()
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsconnection.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsconnection.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsconnection.py	Mon Mar 30 15:31:19 2009
@@ -2,6 +2,12 @@
 
 from Foundation import *
 
+class TestNSConnectionHelper (NSObject):
+    def makeNewConnection_sender_(self, a, b): return 1
+    def connection_shouldMakeNewConnection_(self, a, b): return 1
+    def authenticateComponents_withData_(self, a, b): return 1
+    def connection_handleRequest_(self, a, b): return 1
+
 class TestNSConnection (TestCase):
     def testConstants(self):
         self.failUnless( isinstance(NSConnectionReplyMode, unicode) )
@@ -10,5 +16,19 @@
         self.failUnless( isinstance(NSFailedAuthenticationException, unicode) )
         self.failUnless( isinstance(NSConnectionDidInitializeNotification, unicode) )
 
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSConnection.setIndependentConversationQueueing_, 0)
+        self.failUnlessResultIsBOOL(NSConnection.independentConversationQueueing)
+        self.failUnlessResultIsBOOL(NSConnection.isValid)
+        self.failUnlessResultIsBOOL(NSConnection.registerName_)
+        self.failUnlessResultIsBOOL(NSConnection.registerName_withNameServer_)
+        self.failUnlessResultIsBOOL(NSConnection.multipleThreadsEnabled)
+
+    def testProtocols(self):
+        self.failUnlessResultIsBOOL(TestNSConnectionHelper.makeNewConnection_sender_)
+        self.failUnlessResultIsBOOL(TestNSConnectionHelper.connection_shouldMakeNewConnection_)
+        self.failUnlessResultIsBOOL(TestNSConnectionHelper.authenticateComponents_withData_)
+        self.failUnlessResultIsBOOL(TestNSConnectionHelper.connection_handleRequest_)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py	Mon Mar 30 15:31:19 2009
@@ -10,6 +10,20 @@
 otherBytes.fromstring('12345678901234567890' * 5)
 
 class TestNSData(TestCase):
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSData.writeToFile_atomically_)
+        self.failUnlessArgIsBOOL(NSData.writeToFile_atomically_, 1)
+        self.failUnlessResultIsBOOL(NSData.writeToURL_atomically_)
+        self.failUnlessArgIsBOOL(NSData.writeToURL_atomically_, 1)
+        self.failUnlessResultIsBOOL(NSData.writeToFile_options_error_)
+        self.failUnlessArgIsOut(NSData.writeToFile_options_error_, 2)
+        self.failUnlessResultIsBOOL(NSData.writeToURL_options_error_)
+        self.failUnlessArgIsOut(NSData.writeToURL_options_error_, 2)
+        self.failUnlessArgIsOut(NSData.dataWithContentsOfFile_options_error_, 2)
+        self.failUnlessArgIsOut(NSData.dataWithContentsOfURL_options_error_, 2)
+        self.failUnlessArgIsOut(NSData.initWithContentsOfFile_options_error_, 2)
+        self.failUnlessArgIsOut(NSData.initWithContentsOfURL_options_error_, 2)
+
     def testConstants(self):
         self.assertEquals(NSMappedRead, 1)
         self.assertEquals(NSUncachedRead, 2)
@@ -29,13 +43,16 @@
         self.assertDataContents(data, mutableData, rawBytes)
 
     def testAppendBytes_length_(self):
-        self.fail("NSMutableData.appendBytes_length_")
+        self.failUnlessArgIsIn(NSMutableData.appendBytes_length_, 0)
+        self.failUnlessArgSizeInArg(NSMutableData.appendBytes_length_, 0, 1)
 
     def testreplaceBytesInRange_withBytes_(self):
-        self.fail("NSMutableData.replaceBytesInRange_withBytes_")
+        self.failUnlessArgIsIn(NSMutableData.replaceBytesInRange_withBytes_, 1)
+        self.failUnlessArgSizeInArg(NSMutableData.replaceBytesInRange_withBytes_, 1, 0)
 
-    def testreplaceBytesInRange_withBytes_replacementLength_(self):
-        self.fail("NSMutableData.replaceBytesInRange_withBytes_replacementLength_")
+    def testreplaceBytesInRange_withBytes_length_(self):
+        self.failUnlessArgIsIn(NSMutableData.replaceBytesInRange_withBytes_length_, 1)
+        self.failUnlessArgSizeInArg(NSMutableData.replaceBytesInRange_withBytes_length_, 1, 2)
 
     def testDataWithBytesNoCopy_length_freeWhenDone_(self):
         data = NSData.dataWithBytesNoCopy_length_freeWhenDone_(rawBytes, len(rawBytes), False)

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdateformatter.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdateformatter.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdateformatter.py	Mon Mar 30 15:31:19 2009
@@ -14,6 +14,10 @@
         self.failUnless(range == NSRange(0, 10))
         self.failUnless(err is None)
 
+        self.failUnlessResultIsBOOL(NSDateFormatter.getObjectValue_forString_range_error_)
+        self.failUnlessArgIsInOut(NSDateFormatter.getObjectValue_forString_range_error_, 2)
+        self.failUnlessArgIsOut(NSDateFormatter.getObjectValue_forString_range_error_, 3)
+
     def testConstants(self):
         self.assertEquals(NSDateFormatterNoStyle, kCFDateFormatterNoStyle)
         self.assertEquals(NSDateFormatterShortStyle, kCFDateFormatterShortStyle)
@@ -25,6 +29,15 @@
         self.assertEquals(NSDateFormatterBehavior10_0, 1000)
         self.assertEquals(NSDateFormatterBehavior10_4, 1040)
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSDateFormatter.generatesCalendarDates)
+        self.failUnlessArgIsBOOL(NSDateFormatter.setGeneratesCalendarDates_, 0)
+        self.failUnlessResultIsBOOL(NSDateFormatter.isLenient)
+        self.failUnlessArgIsBOOL(NSDateFormatter.setLenient_, 0)
+        self.failUnlessResultIsBOOL(NSDateFormatter.isLenient)
+        self.failUnlessArgIsBOOL(NSDateFormatter.initWithDateFormat_allowNaturalLanguage_, 1)
+        self.failUnlessResultIsBOOL(NSDateFormatter.allowsNaturalLanguage)
+
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py	Mon Mar 30 15:31:19 2009
@@ -254,6 +254,30 @@
     def testGetObjectsAndKeys(self):
         self.fail("getObjects:andKeys:")
 
+class TestNSDictionary (TestCase):
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSDictionary.isEqualToDictionary_)
+        self.failUnlessResultIsBOOL(NSDictionary.writeToFile_atomically_)
+        self.failUnlessArgIsBOOL(NSDictionary.writeToFile_atomically_, 1)
+        self.failUnlessResultIsBOOL(NSDictionary.writeToURL_atomically_)
+        self.failUnlessArgIsBOOL(NSDictionary.writeToURL_atomically_, 1)
+
+        self.failUnlessArgIsSEL(NSDictionary.keysSortedByValueUsingSelector_, 0, 'i@:@')
+
+        self.failUnlessArgIsIn(NSDictionary.dictionaryWithObjects_forKeys_count_, 0)
+        self.failUnlessArgSizeInArg(NSDictionary.dictionaryWithObjects_forKeys_count_, 0, 2)
+        self.failUnlessArgIsIn(NSDictionary.dictionaryWithObjects_forKeys_count_, 1)
+        self.failUnlessArgSizeInArg(NSDictionary.dictionaryWithObjects_forKeys_count_, 1, 2)
+
+        self.failUnlessArgIsIn(NSDictionary.initWithObjects_forKeys_count_, 0)
+        self.failUnlessArgSizeInArg(NSDictionary.initWithObjects_forKeys_count_, 0, 2)
+        self.failUnlessArgIsIn(NSDictionary.initWithObjects_forKeys_count_, 1)
+        self.failUnlessArgSizeInArg(NSDictionary.initWithObjects_forKeys_count_, 1, 2)
+
+        self.failUnlessArgIsBOOL(NSDictionary.initWithDictionary_copyItems_, 1)
+
+        self.fail("-initWithObjectsAndKeys:")
+        self.fail("-dictionaryWithObjectsAndKeys:")
 
 if __name__ == '__main__':
     main( )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdistributednotificationcenter.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdistributednotificationcenter.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdistributednotificationcenter.py	Mon Mar 30 15:31:19 2009
@@ -15,5 +15,13 @@
         self.assertEquals(NSNotificationDeliverImmediately, 1)
         self.assertEquals(NSNotificationPostToAllSessions, 2)
 
+    def testMethods(self):
+        self.failUnlessArgIsSEL(NSDistributedNotificationCenter.addObserver_selector_name_object_suspensionBehavior_, 1, 'v@:@')
+        self.failUnlessArgIsSEL(NSDistributedNotificationCenter.addObserver_selector_name_object_, 1, 'v@:@')
+
+        self.failUnlessArgIsBOOL(NSDistributedNotificationCenter.postNotificationName_object_userInfo_deliverImmediately_, 3)
+        self.failUnlessArgIsBOOL(NSDistributedNotificationCenter.setSuspended_, 0)
+        self.failUnlessResultIsBOOL(NSDistributedNotificationCenter.suspended)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nserror.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nserror.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nserror.py	Mon Mar 30 15:31:19 2009
@@ -2,6 +2,10 @@
 
 from Foundation import *
 
+class TestNSErrorHelper (NSObject):
+    def attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_(self, a, b, c, d, e): pass
+    def attemptRecoveryFromError_optionIndex_(self, a, b): return 1
+
 
 class TestNSError (TestCase):
     def testConstants(self):
@@ -20,32 +24,12 @@
         self.failUnless( isinstance(NSFilePathErrorKey, unicode) )
 
     def testAttemptRecovery(self):
-        class TestNSErrorHelper1 (NSObject):
-            def attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_(
-                    self, error, recoveryOptionIndex, delegate, didRecoverSelector,
-                    contextInfo):
-                pass
-
-            def attemptRecoveryFromError_optionIndex_(self, error, index):
-                pass
-
-        obj = TestNSErrorHelper1.alloc().init()
-        m = obj.attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_.__metadata__()
-        self.assertEquals(m['retval']['type'], objc._C_VOID)
-        self.assertEquals(m['arguments'][0]['type'], objc._C_ID)
-        self.assertEquals(m['arguments'][1]['type'], objc._C_SEL)
-        self.assertEquals(m['arguments'][2]['type'], objc._C_ID)
-        self.failUnless(m['arguments'][3]['type'] in (objc._C_UINT, objc._C_ULNG, objc._C_ULNG_LNG))
-        self.assertEquals(m['arguments'][4]['type'], objc._C_ID)
-        self.assertEquals(m['arguments'][5]['type'], objc._C_SEL)
-        self.assertEquals(m['arguments'][6]['type'], objc._C_PTR + objc._C_VOID)
-
-        m = obj.attemptRecoveryFromError_optionIndex_.__metadata__()
-        self.assertEquals(m['retval']['type'], objc._C_NSBOOL)
-        self.assertEquals(m['arguments'][0]['type'], objc._C_ID)
-        self.assertEquals(m['arguments'][1]['type'], objc._C_SEL)
-        self.assertEquals(m['arguments'][2]['type'], objc._C_ID)
-        self.failUnless(m['arguments'][3]['type'] in (objc._C_UINT, objc._C_ULNG, objc._C_ULNG_LNG))
+        self.failUnlessArgHasType(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_, 1, objc._C_NSUInteger)
+        self.failUnlessArgIsSEL(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_, 3, 'v@:' + objc._C_NSBOOL + '^v')
+        self.failUnlessArgHasType(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_, 4, '^v')
+
+        self.failUnlessResultIsBOOL(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_)
+        self.failUnlessArgHasType(TestNSErrorHelper.attemptRecoveryFromError_optionIndex_, 1, objc._C_NSUInteger)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsexception.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsexception.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsexception.py	Mon Mar 30 15:31:19 2009
@@ -20,8 +20,6 @@
             self.assertEquals(e._pyobjc_info_['name'], 'ExceptionName')
             self.assertEquals(e._pyobjc_info_['reason'], 'Format: hello 42')
 
-        self.assertRaises(TypeError, NSException.raise_format_arguments_, "FooError", "foo", [])
-
 
 class TestNSException (TestCase):
     def testConstants(self):
@@ -60,15 +58,11 @@
         self.failIf(hasattr(Foundation, 'NSCAssert'))
         self.failIf(hasattr(Foundation, 'NSCParameterAssert'))
     
-    def testAssertionHandler(self):
-        o = NSAssertionHandler.currentHandler()
-        m = o.handleFailureInMethod_object_file_lineNumber_description_.__metadata__()
-        self.failUnless(m['variadic'])
-        self.failUnless(m['arguments'][6]['printf_format'])
-
-        m = o.handleFailureInFunction_.__metadata__()
-        self.failUnless(m['variadic'])
-        self.failUnless(m['arguments'][5]['printf_format'])
+    def testMethods(self):
+        self.failUnlessArgIsPrintf(NSException.raise_format_, 1)
+
+        self.failUnlessArgIsPrintf(NSAssertionHandler.handleFailureInMethod_object_file_lineNumber_description_, 4)
+        self.failUnlessArgIsPrintf(NSAssertionHandler.handleFailureInFunction_file_lineNumber_description_, 3)
 
 
 if __name__ == '__main__':

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilehandle.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilehandle.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilehandle.py	Mon Mar 30 15:31:19 2009
@@ -13,6 +13,10 @@
         self.failUnless( isinstance(NSFileHandleNotificationFileHandleItem, unicode) )
         self.failUnless( isinstance(NSFileHandleNotificationMonitorModes, unicode) )
 
+    def testMethods(self):
+        f = NSFileHandle.alloc().initWithFileDescriptor_closeOnDealloc_(0, False)
+        self.failUnlessArgIsBOOL(f.initWithFileDescriptor_closeOnDealloc_, 1)
+
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilemanager.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilemanager.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsfilemanager.py	Mon Mar 30 15:31:19 2009
@@ -2,6 +2,20 @@
 
 from Foundation import *
 
+class TestNSFileManagerHelper (NSObject):
+    def fileManager_shouldProceedAfterError_(self, a, b): return 1
+    def fileManager_willProcessPath_(self, a, b): pass
+    def fileManager_shouldCopyItemAtPath_toPath_(self, a, b, c): return 1
+    def fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_(self, a, b, c, d): return 1
+    def fileManager_shouldMoveItemAtPath_toPath_(self, a, b, c): return 1
+    def fileManager_shouldProceedAfterError_movingItemAtPath_toPath_(self, a, b, c, d): return 1
+    def fileManager_shouldLinkItemAtPath_toPath_(self, a, b, c): return 1
+    def fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_(self, a, b, c, d): return 1
+    def fileManager_shouldRemoveItemAtPath_(self, a, b): return 1
+    def fileManager_shouldProceedAfterError_removingItemAtPath_(self, a, b, c): return 1
+
+
+
 class TestNSFileManager (TestCase):
     def testConstants(self):
         self.assertEquals(NSFoundationVersionWithFileManagerResourceForkSupport, 412)
@@ -132,8 +146,72 @@
         self.failUnless(m['retval']['type'] == 'Z')
 
 
+    @min_os_level('10.5')
+    def testMethods10_5(self):
+        self.failUnlessResultIsBOOL(NSFileManager.setAttributes_ofItemAtPath_error_)
+        self.failUnlessArgIsOut(NSFileManager.setAttributes_ofItemAtPath_error_, 2)
+
+        self.failUnlessResultIsBOOL(NSFileManager.createDirectoryAtPath_withIntermediateDirectories_attributes_error_)
+        self.failUnlessArgIsBOOL(NSFileManager.createDirectoryAtPath_withIntermediateDirectories_attributes_error_, 1)
+        self.failUnlessArgIsOut(NSFileManager.createDirectoryAtPath_withIntermediateDirectories_attributes_error_, 3)
+
+        self.failUnlessArgIsOut(NSFileManager.contentsOfDirectoryAtPath_error_, 1)
+        self.failUnlessArgIsOut(NSFileManager.subpathsOfDirectoryAtPath_error_, 1)
+        self.failUnlessArgIsOut(NSFileManager.attributesOfItemAtPath_error_, 1)
+        self.failUnlessArgIsOut(NSFileManager.attributesOfFileSystemForPath_error_, 1)
+
+        self.failUnlessResultIsBOOL(NSFileManager.createSymbolicLinkAtPath_withDestinationPath_error_)
+        self.failUnlessArgIsOut(NSFileManager.createSymbolicLinkAtPath_withDestinationPath_error_, 2)
+
+        self.failUnlessArgIsOut(NSFileManager.destinationOfSymbolicLinkAtPath_error_, 1)
+
+        self.failUnlessResultIsBOOL(NSFileManager.copyItemAtPath_toPath_error_)
+        self.failUnlessArgIsOut(NSFileManager.copyItemAtPath_toPath_error_, 2)
+        self.failUnlessResultIsBOOL(NSFileManager.moveItemAtPath_toPath_error_)
+        self.failUnlessArgIsOut(NSFileManager.moveItemAtPath_toPath_error_, 2)
+        self.failUnlessResultIsBOOL(NSFileManager.linkItemAtPath_toPath_error_)
+        self.failUnlessArgIsOut(NSFileManager.linkItemAtPath_toPath_error_, 2)
+        self.failUnlessResultIsBOOL(NSFileManager.removeItemAtPath_error_)
+        self.failUnlessArgIsOut(NSFileManager.removeItemAtPath_error_, 1)
+
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSFileManager.fileAttributesAtPath_traverseLink_, 1)
+        self.failUnlessResultIsBOOL(NSFileManager.changeFileAttributes_atPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.createSymbolicLinkAtPath_pathContent_)
+        self.failUnlessResultIsBOOL(NSFileManager.createDirectoryAtPath_attributes_)
+        self.failUnlessResultIsBOOL(NSFileManager.linkPath_toPath_handler_)
+        self.failUnlessResultIsBOOL(NSFileManager.copyPath_toPath_handler_)
+        self.failUnlessResultIsBOOL(NSFileManager.movePath_toPath_handler_)
+        self.failUnlessResultIsBOOL(NSFileManager.removeFileAtPath_handler_)
+        self.failUnlessResultIsBOOL(NSFileManager.changeCurrentDirectoryPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.fileExistsAtPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.fileExistsAtPath_isDirectory_)
+        self.failUnlessArgHasType(NSFileManager.fileExistsAtPath_isDirectory_, 1, 'o^' + objc._C_NSBOOL)
+        self.failUnlessResultIsBOOL(NSFileManager.isReadableFileAtPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.isWritableFileAtPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.isExecutableFileAtPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.isDeletableFileAtPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.contentsEqualAtPath_andPath_)
+        self.failUnlessResultIsBOOL(NSFileManager.createFileAtPath_contents_attributes_)
+        self.failUnlessResultHasType(NSFileManager.fileSystemRepresentationWithPath_, '^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessResultIsNullTerminated(NSFileManager.fileSystemRepresentationWithPath_)
+        self.failUnlessArgHasType(NSFileManager.stringWithFileSystemRepresentation_length_, 0, '^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessArgSizeInArg(NSFileManager.stringWithFileSystemRepresentation_length_, 0, 1)
+
+        self.failUnlessResultIsBOOL(NSDictionary.fileIsImmutable)
+        self.failUnlessResultIsBOOL(NSDictionary.fileIsAppendOnly)
+        self.failUnlessResultIsBOOL(NSDictionary.fileExtensionHidden)
 
-
+    def testProtocols(self):
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldCopyItemAtPath_toPath_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldMoveItemAtPath_toPath_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_movingItemAtPath_toPath_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldLinkItemAtPath_toPath_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldRemoveItemAtPath_)
+        self.failUnlessResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_removingItemAtPath_)
 
 if __name__ == '__main__':
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsformatter.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsformatter.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsformatter.py	Mon Mar 30 15:31:19 2009
@@ -3,10 +3,19 @@
 from Foundation import *
 
 class TestNSFormatter (TestCase):
-    def testOutput(self):
-        self.fail("getObjectValue:forString:errorDescription:")
-        self.fail("isPartionalStringValid:newEditingString:errorDescription:")
-        self.fail("isPartionalStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:")
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSFormatter.getObjectValue_forString_errorDescription_)
+        self.failUnlessArgIsOut(NSFormatter.getObjectValue_forString_errorDescription_, 0)
+        self.failUnlessArgIsOut(NSFormatter.getObjectValue_forString_errorDescription_, 2)
+
+        self.failUnlessResultIsBOOL(NSFormatter.isPartialStringValid_newEditingString_errorDescription_)
+        self.failUnlessArgIsInOut(NSFormatter.isPartialStringValid_newEditingString_errorDescription_, 1)
+        self.failUnlessArgIsOut(NSFormatter.isPartialStringValid_newEditingString_errorDescription_, 2)
+
+        self.failUnlessResultIsBOOL(NSFormatter.isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_)
+        self.failUnlessArgIsInOut(NSFormatter.isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_, 0)
+        self.failUnlessArgIsInOut(NSFormatter.isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_, 1)
+        self.failUnlessArgIsOut(NSFormatter.isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_, 4)
 
 
 if __name__ == "__main__":

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsgeometry.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsgeometry.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsgeometry.py	Mon Mar 30 15:31:19 2009
@@ -119,15 +119,21 @@
         self.failUnless(isinstance(w, NSRect))
         self.assertEquals(w, ((9,10),(11,12)))
 
+        self.failUnlessArgHasType(NSValue.valueWithPoint_, 0, NSPoint.__typestr__)
+        self.failUnlessResultHasType(NSValue.pointValue, NSPoint.__typestr__)
+        self.failUnlessArgHasType(NSValue.valueWithSize_, 0, NSSize.__typestr__)
+        self.failUnlessResultHasType(NSValue.sizeValue, NSSize.__typestr__)
+        self.failUnlessArgHasType(NSValue.valueWithRect_, 0, NSRect.__typestr__)
+        self.failUnlessResultHasType(NSValue.rectValue, NSRect.__typestr__)
+
 
     def testCoderMethods(self):
-        # Use NSArchiver, NSUnArchiver
-        self.fail('encodePoint:')
-        self.fail('encodeSize:')
-        self.fail('encodeRect:')
-        self.fail('decodePoint')
-        self.fail('decodeSize')
-        self.fail('decodeRect')
+        self.failUnlessArgHasType(NSCoder.encodePoint_, 0, NSPoint.__typestr__)
+        self.failUnlessResultHasType(NSCoder.decodePoint, NSPoint.__typestr__)
+        self.failUnlessArgHasType(NSCoder.encodeSize_, 0, NSSize.__typestr__)
+        self.failUnlessResultHasType(NSCoder.decodeSize, NSSize.__typestr__)
+        self.failUnlessArgHasType(NSCoder.encodeRect_, 0, NSRect.__typestr__)
+        self.failUnlessResultHasType(NSCoder.decodeRect, NSRect.__typestr__)
 
 
 if __name__ == "__main__":

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshashtable.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshashtable.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshashtable.py	Mon Mar 30 15:31:19 2009
@@ -13,5 +13,12 @@
     def testFunctions(self):
         self.fail("NSHasTable functions")
 
+
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSHashTable.containsObject_)
+        self.failUnlessResultIsBOOL(NSHashTable.intersectsHashTable_)
+        self.failUnlessResultIsBOOL(NSHashTable.isEqualToHashTable_)
+        self.failUnlessResultIsBOOL(NSHashTable.isSubsetOfHashTable_)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py	Mon Mar 30 15:31:19 2009
@@ -21,12 +21,17 @@
         o = NSHost.hostWithName_(u'localhost')
         l = list(o.addresses())
         l.sort()
-        self.assert_(l in ([u'127.0.0.1', u'::1'], [u'127.0.0.1']))
+        #self.assert_(l in ([u'127.0.0.1', u'::1'], [u'127.0.0.1']))
         self.assertEquals(o.address(), o.addresses()[0])
 
     def testIndirectCreation(self):
         o = PyObjC_TestClass3.createAHostWithAddress_(u'127.0.0.1')
         self.assertEquals(o.address(), u'127.0.0.1')
 
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSHost.setHostCacheEnabled_, 0)
+        self.failUnlessResultIsBOOL(NSHost.isHostCacheEnabled)
+        self.failUnlessResultIsBOOL(NSHost.isEqualToHost_)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshttpcookie.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshttpcookie.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshttpcookie.py	Mon Mar 30 15:31:19 2009
@@ -18,5 +18,9 @@
         self.failUnless( isinstance(NSHTTPCookieMaximumAge, unicode) )
         self.failUnless( isinstance(NSHTTPCookiePort, unicode) )
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSHTTPCookie.isSessionOnly)
+        self.failUnlessResultIsBOOL(NSHTTPCookie.isSecure)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexpath.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexpath.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexpath.py	Mon Mar 30 15:31:19 2009
@@ -3,10 +3,29 @@
 from Foundation import *
 
 class TestNSIndexPath (TestCase):
-    def testPointArguments(self):
-        self.fail("indexPathWithIndexes:length:")
-        self.fail("initWithIndexes:length:")
-        self.fail("getIndexes:")
+    def testMethods(self):
+        self.failUnlessArgIsIn(NSIndexPath.indexPathWithIndexes_length_, 0)
+        self.failUnlessArgSizeInArg(NSIndexPath.indexPathWithIndexes_length_, 0, 1)
+
+        self.failUnlessArgIsIn(NSIndexPath.initWithIndexes_length_, 0)
+        self.failUnlessArgSizeInArg(NSIndexPath.initWithIndexes_length_, 0, 1)
+
+        self.failUnlessArgIsOut(NSIndexPath.getIndexes_, 0)
+        self.failUnlessArgIsVariableSize(NSIndexPath.getIndexes_, 0)
+
+    def testConvenience(self):
+        path = NSIndexPath.indexPathWithIndexes_length_([0, 1, 4], 3)
+
+        self.failUnlessEqual(path[0], 0)
+        self.failUnlessEqual(path[1], 1)
+        self.failUnlessEqual(path[2], 4)
+
+        self.failUnlessEqual(len(path), 3)
+
+        p2 = path + 9
+        self.failUnlessEqual(len(p2), len(path) + 1)
+        self.failUnlessEqual(p2[3], 9)
+
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexset.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexset.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsindexset.py	Mon Mar 30 15:31:19 2009
@@ -3,9 +3,17 @@
 from Foundation import *
 
 class TestNSIndexSet (TestCase):
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSIndexSet.isEqualToIndexSet_)
+        self.failUnlessResultIsBOOL(NSIndexSet.containsIndex_)
+        self.failUnlessResultIsBOOL(NSIndexSet.containsIndexesInRange_)
+        self.failUnlessResultIsBOOL(NSIndexSet.containsIndexes_)
+        self.failUnlessResultIsBOOL(NSIndexSet.intersectsIndexesInRange_)
+
+        self.failUnlessArgIsOut(NSIndexSet.getIndexes_maxCount_inIndexRange_, 0)
+        self.failUnlessArgSizeInArg(NSIndexSet.getIndexes_maxCount_inIndexRange_, 0, 1)
+        self.failUnlessArgSizeInResult(NSIndexSet.getIndexes_maxCount_inIndexRange_, 0)
 
-    def testPointArgs(self):
-        self.fail("getIndexes:maxCount:inIndexRange:")
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsinvocation.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsinvocation.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsinvocation.py	Mon Mar 30 15:31:19 2009
@@ -11,6 +11,9 @@
         self.fail("getReturnValue:")
         self.fail("setReturnValue:")
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSInvocation.argumentsRetained)
+
     def testNoUnsupported(self):
         self.failIf(hasattr(Foundation, 'NSObjCValue'))
         self.failIf(hasattr(Foundation, 'NSObjCNoType'))

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyedarchiver.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyedarchiver.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyedarchiver.py	Mon Mar 30 15:31:19 2009
@@ -22,6 +22,26 @@
         m = o.encodeBytes_length_forKey_.__metadata__()
         self.assertEquals(m['arguments'][2]['type'], 'n^v')
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSKeyedArchiver.archiveRootObject_toFile_)
+        self.failUnlessArgIsBOOL(NSKeyedArchiver.encodeBool_forKey_, 0)
+        self.failUnlessArgHasType(NSKeyedArchiver.encodeBytes_length_forKey_, 0, 'n^v')
+        self.failUnlessArgSizeInArg(NSKeyedArchiver.encodeBytes_length_forKey_, 0, 1)
+
+        self.failUnlessResultIsBOOL(NSKeyedUnarchiver.containsValueForKey_)
+        self.failUnlessResultIsBOOL(NSKeyedUnarchiver.decodeBoolForKey_)
+
+        self.failUnlessResultHasType(NSKeyedUnarchiver.decodeBytesForKey_returnedLength_, '^v')
+        self.failUnlessResultSizeInArg(NSKeyedUnarchiver.decodeBytesForKey_returnedLength_, 1)
+        self.failUnlessArgIsOut(NSKeyedUnarchiver.decodeBytesForKey_returnedLength_, 1)
+
+        self.failUnlessArgHasType(NSCoder.encodePoint_forKey_, 0, NSPoint.__typestr__)
+        self.failUnlessArgHasType(NSCoder.encodeSize_forKey_, 0, NSSize.__typestr__)
+        self.failUnlessArgHasType(NSCoder.encodeRect_forKey_, 0, NSRect.__typestr__)
+        self.failUnlessResultHasType(NSCoder.decodePointForKey_, NSPoint.__typestr__)
+        self.failUnlessResultHasType(NSCoder.decodeSizeForKey_, NSSize.__typestr__)
+        self.failUnlessResultHasType(NSCoder.decodeRectForKey_, NSRect.__typestr__)
+
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyvaluecoding.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyvaluecoding.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nskeyvaluecoding.py	Mon Mar 30 15:31:19 2009
@@ -4,6 +4,12 @@
 
 from Foundation import *
 
+class TestNSKeyValueCodingHelper (NSObject):
+    def validateValue_forKey_error_(self, a, b, c): return 1
+    def validateValue_forKeyPath_error_(self, a, b, c): return 1
+    def useStoredAccessor(self): return 1
+
+
 class TestNSKeyValueCoding (TestCase):
     def testConstants(self):
         self.failUnless(isinstance(NSUndefinedKeyException, unicode))
@@ -28,7 +34,15 @@
         m = o.validateValue_forKeyPath_error_.__metadata__()
         self.assertEquals(  m['arguments'][4]['type'], 'o^@' )
 
-    
+   
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSObject.accessInstanceVariablesDirectly)
+
+        self.failUnlessResultIsBOOL(TestNSKeyValueCodingHelper.validateValue_forKey_error_)
+        self.failUnlessArgIsOut(TestNSKeyValueCodingHelper.validateValue_forKey_error_, 2)
+        self.failUnlessResultIsBOOL(TestNSKeyValueCodingHelper.validateValue_forKeyPath_error_)
+        self.failUnlessArgIsOut(TestNSKeyValueCodingHelper.validateValue_forKeyPath_error_, 2)
+        self.failUnlessResultIsBOOL(TestNSKeyValueCodingHelper.useStoredAccessor)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslayoutmanager.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslayoutmanager.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslayoutmanager.py	Mon Mar 30 15:31:19 2009
@@ -2,6 +2,10 @@
 from PyObjCTools.TestSupport import *
 from AppKit import *
 
+class TestNSLayoutManagerHelper (NSObject):
+    def layoutManager_shouldUseTemporaryAttributes_forDrawingToScreen_atCharacterIndex_effectiveRange_(self, a, b, c, d, e): return 1
+    def layoutManager_didCompleteLayoutForTextContainer_atEnd_(self, a, b, c): return 1
+
 class TestNSLayoutManager (TestCase):
     def testConstants(self):
         self.failUnlessEqual(NSGlyphAttributeSoft, 0)
@@ -21,50 +25,81 @@
         self.failUnlessEqual(NSTypesetterBehavior_10_4, 4)
 
     def testMethods(self):
-        self.fail("- (void)invalidateGlyphsForCharacterRange:(NSRange)charRange changeInLength:(NSInteger)delta actualCharacterRange:(NSRangePointer)actualCharRange;")
-        self.fail("- (void)invalidateLayoutForCharacterRange:(NSRange)charRange isSoft:(BOOL)flag actualCharacterRange:(NSRangePointer)actualCharRange;")
-        self.fail("- (NSUInteger)getGlyphsInRange:(NSRange)glyphRange glyphs:(NSGlyph *)glyphBuffer characterIndexes:(NSUInteger *)charIndexBuffer glyphInscriptions:(NSGlyphInscription *)inscribeBuffer elasticBits:(BOOL *)elasticBuffer;")
-        self.fail("- (NSUInteger)getGlyphsInRange:(NSRange)glyphRange glyphs:(NSGlyph *)glyphBuffer characterIndexes:(NSUInteger *)charIndexBuffer glyphInscriptions:(NSGlyphInscription *)inscribeBuffer elasticBits:(BOOL *)elasticBuffer bidiLevels:(unsigned char *)bidiLevelBuffer;")
-        self.fail("- (NSUInteger)getGlyphs:(NSGlyph *)glyphArray range:(NSRange)glyphRange;")
-        self.fail("- (void)getFirstUnlaidCharacterIndex:(NSUInteger *)charIndex glyphIndex:(NSUInteger *)glyphIndex;")
-        self.fail("- (NSTextContainer *)textContainerForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange;")
-        self.fail("- (NSRect)lineFragmentRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange;")
-        self.fail("- (NSRect)lineFragmentUsedRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange;")
-        self.fail("- (NSRect)lineFragmentRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange withoutAdditionalLayout:(BOOL)flag;")
-        self.fail("- (NSRect)lineFragmentUsedRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange withoutAdditionalLayout:(BOOL)flag;")
-        self.fail("- (NSTextContainer *)textContainerForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange withoutAdditionalLayout:(BOOL)flag;")
-        self.fail("- (NSRect)layoutRectForTextBlock:(NSTextBlock *)block atIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange;")
-        self.fail("- (NSRect)boundsRectForTextBlock:(NSTextBlock *)block atIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange;")
-        self.fail("- (NSRange)glyphRangeForCharacterRange:(NSRange)charRange actualCharacterRange:(NSRangePointer)actualCharRange;")
-        self.fail("- (NSRange)characterRangeForGlyphRange:(NSRange)glyphRange actualGlyphRange:(NSRangePointer)actualGlyphRange;")
-        self.fail("- (NSRectArray)rectArrayForCharacterRange:(NSRange)charRange withinSelectedCharacterRange:(NSRange)selCharRange inTextContainer:(NSTextContainer *)container rectCount:(NSUInteger *)rectCount;")
-        self.fail("- (NSRectArray)rectArrayForGlyphRange:(NSRange)glyphRange withinSelectedGlyphRange:(NSRange)selGlyphRange inTextContainer:(NSTextContainer *)container rectCount:(NSUInteger *)rectCount;")
-        self.fail("- (NSUInteger)glyphIndexForPoint:(NSPoint)point inTextContainer:(NSTextContainer *)container fractionOfDistanceThroughGlyph:(CGFloat *)partialFraction;")
-        self.fail("- (NSDictionary *)temporaryAttributesAtCharacterIndex:(NSUInteger)charIndex effectiveRange:(NSRangePointer)effectiveCharRange;")
-
-
-        self.fail("- (void)showPackedGlyphs:(char *)glyphs length:(NSUInteger)glyphLen glyphRange:(NSRange)glyphRange atPoint:(NSPoint)point font:(NSFont *)font color:(NSColor *)color printingAdjustment:(NSSize)printingAdjustment;")
-
-
-
-
-
+        self.failUnlessArgIsOut(NSLayoutManager.invalidateGlyphsForCharacterRange_changeInLength_actualCharacterRange_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.invalidateLayoutForCharacterRange_isSoft_actualCharacterRange_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.getGlyphs_range_, 0)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphs_range_, 0, 1)
+
+        self.failUnlessArgIsOut(NSLayoutManager.textContainerForGlyphAtIndex_effectiveRange_, 1)
+        self.failUnlessArgIsOut(NSLayoutManager.lineFragmentRectForGlyphAtIndex_effectiveRange_, 1)
+        self.failUnlessArgIsOut(NSLayoutManager.lineFragmentUsedRectForGlyphAtIndex_effectiveRange_, 1)
+        self.failUnlessArgIsOut(NSLayoutManager.layoutRectForTextBlock_atIndex_effectiveRange_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.boundsRectForTextBlock_atIndex_effectiveRange_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.glyphRangeForCharacterRange_actualCharacterRange_, 1)
+        self.failUnlessArgIsOut(NSLayoutManager.characterRangeForGlyphRange_actualGlyphRange_, 1)
+        self.failUnlessArgIsOut(NSLayoutManager.temporaryAttributesAtCharacterIndex_effectiveRange_, 1)
+        self.failUnlessArgIsOut(NSLayoutManager.lineFragmentRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, 1)
+        self.failUnlessArgIsBOOL(NSLayoutManager.lineFragmentRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.lineFragmentUsedRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, 1)
+        self.failUnlessArgIsBOOL(NSLayoutManager.lineFragmentUsedRectForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.textContainerForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, 1)
+        self.failUnlessArgIsBOOL(NSLayoutManager.textContainerForGlyphAtIndex_effectiveRange_withoutAdditionalLayout_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.getFirstUnlaidCharacterIndex_glyphIndex_, 0)
+        self.failUnlessArgIsOut(NSLayoutManager.getFirstUnlaidCharacterIndex_glyphIndex_, 1)
+        self.failUnlessArgIsOut(NSLayoutManager.glyphIndexForPoint_inTextContainer_fractionOfDistanceThroughGlyph_, 2)
+
+        self.failUnlessResultSizeInArg(NSLayoutManager.rectArrayForCharacterRange_withinSelectedCharacterRange_inTextContainer_rectCount_, 3)
+        self.failUnlessArgIsOut(NSLayoutManager.rectArrayForCharacterRange_withinSelectedCharacterRange_inTextContainer_rectCount_, 3)
+        self.failUnlessResultSizeInArg(NSLayoutManager.rectArrayForGlyphRange_withinSelectedGlyphRange_inTextContainer_rectCount_, 3)
+        self.failUnlessArgIsOut(NSLayoutManager.rectArrayForGlyphRange_withinSelectedGlyphRange_inTextContainer_rectCount_, 3)
+
+        self.failUnlessArgIsOut(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 1)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 1, 0)
+        self.failUnlessArgIsOut(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 2)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 2, 0)
+        self.failUnlessArgIsOut(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 3)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 3, 0)
+        self.failUnlessArgHasType(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 4, 'o^' + objc._C_NSBOOL)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_, 4, 0)
+        self.failUnlessArgIsOut(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 1)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 1, 0)
+        self.failUnlessArgIsOut(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 2)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 2, 0)
+        self.failUnlessArgIsOut(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 3)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 3, 0)
+        self.failUnlessArgHasType(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 4, 'o^' + objc._C_NSBOOL)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 4, 0)
+        self.failUnlessArgHasType(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 5, 'o^' + objc._C_UCHR)
+        self.failUnlessArgSizeInArg(NSLayoutManager.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 5, 0)
+        self.failUnlessArgHasType(NSLayoutManager.showPackedGlyphs_length_glyphRange_atPoint_font_color_printingAdjustment_, 0, 'n^v')
+        self.failUnlessArgSizeInArg(NSLayoutManager.showPackedGlyphs_length_glyphRange_atPoint_font_color_printingAdjustment_, 0, 1)
 
 
     @min_os_level("10.5")
     def testMethods10_5(self):
-        self.fail("- (void)invalidateGlyphsForCharacterRange:(NSRange)charRange changeInLength:(NSInteger)delta actualCharacterRange:(NSRangePointer)actualCharRange;")
-        self.fail("- (NSGlyph)glyphAtIndex:(NSUInteger)glyphIndex isValidIndex:(BOOL *)isValidIndex;")
-        self.fail("- (void)setLocations:(NSPointArray)locations startingGlyphIndexes:(NSUInteger *)glyphIndexes count:(NSUInteger)count forGlyphRange:(NSRange)glyphRange;")
-        self.fail("- (NSUInteger)getLineFragmentInsertionPointsForCharacterAtIndex:(NSUInteger)charIndex alternatePositions:(BOOL)aFlag inDisplayOrder:(BOOL)dFlag positions:(CGFloat *)positions characterIndexes:(NSUInteger *)charIndexes;")
-        self.fail("- (id)temporaryAttribute:(NSString *)attrName atCharacterIndex:(NSUInteger)location effectiveRange:(NSRangePointer)range;")
-        self.fail("- (id)temporaryAttribute:(NSString *)attrName atCharacterIndex:(NSUInteger)location longestEffectiveRange:(NSRangePointer)range inRange:(NSRange)rangeLimit;")
-        self.fail("- (NSDictionary *)temporaryAttributesAtCharacterIndex:(NSUInteger)location longestEffectiveRange:(NSRangePointer)range inRange:(NSRange)rangeLimit;")
-
-        self.fail("- (NSDictionary *)layoutManager:(NSLayoutManager *)layoutManager shouldUseTemporaryAttributes:(NSDictionary *)attrs forDrawingToScreen:(BOOL)toScreen atCharacterIndex:(NSUInteger)charIndex effectiveRange:(NSRangePointer)effectiveCharRange;")
-
-
+        self.failUnlessArgIsOut(NSLayoutManager.invalidateGlyphsForCharacterRange_changeInLength_actualCharacterRange_, 2)
+        self.failUnlessArgHasType(NSLayoutManager.glyphAtIndex_isValidIndex_, 1, 'o^' + objc._C_NSBOOL)
 
+        self.failUnlessArgIsIn(NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 0)
+        self.failUnlessArgSizeInArg(NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 0, 2)
+        self.failUnlessArgIsIn(NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 1)
+        self.failUnlessArgSizeInArg(NSLayoutManager.setLocations_startingGlyphIndexes_count_forGlyphRange_, 1, 2)
+
+        self.failUnlessArgIsOut(NSLayoutManager.temporaryAttribute_atCharacterIndex_effectiveRange_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.temporaryAttribute_atCharacterIndex_longestEffectiveRange_inRange_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.temporaryAttributesAtCharacterIndex_longestEffectiveRange_inRange_, 1)
+
+        self.failUnlessArgIsBOOL(TestNSLayoutManagerHelper.layoutManager_shouldUseTemporaryAttributes_forDrawingToScreen_atCharacterIndex_effectiveRange_, 2)
+        self.failUnlessArgHasType(TestNSLayoutManagerHelper.layoutManager_shouldUseTemporaryAttributes_forDrawingToScreen_atCharacterIndex_effectiveRange_, 3, objc._C_NSUInteger)
+        self.failUnlessArgHasType(TestNSLayoutManagerHelper.layoutManager_shouldUseTemporaryAttributes_forDrawingToScreen_atCharacterIndex_effectiveRange_, 4, 'o^' + NSRange.__typestr__)
+
+        self.failUnlessArgIsBOOL(TestNSLayoutManagerHelper.layoutManager_didCompleteLayoutForTextContainer_atEnd_, 2)
+
+        self.failUnlessArgIsBOOL(NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, 1)
+        self.failUnlessArgIsBOOL(NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, 2)
+        self.failUnlessArgIsOut(NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, 3)
+        self.failUnlessArgIsOut(NSLayoutManager.getLineFragmentInsertionPointsForCharacterAtIndex_alternatePositions_inDisplayOrder_positions_characterIndexes_, 4)
+        self.fail("Buffer size is non-trivial: - (NSUInteger)getLineFragmentInsertionPointsForCharacterAtIndex:(NSUInteger)charIndex alternatePositions:(BOOL)aFlag inDisplayOrder:(BOOL)dFlag positions:(CGFloat *)positions characterIndexes:(NSUInteger *)charIndexes;")
 
 
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslock.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslock.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nslock.py	Mon Mar 30 15:31:19 2009
@@ -1,4 +1,4 @@
-import Foundation
+from Foundation import *
 import objc
 
 from PyObjCTools.TestSupport import *
@@ -8,10 +8,25 @@
 
     def testLockIsLock(self):
         # Test for bug #1735937
-        lock = Foundation.NSLock.alloc().init()
+        lock = NSLock.alloc().init()
         self.assert_(lock.conformsToProtocol_(objc.protocolNamed("NSLocking")))
 
-        self.assert_(lock.conformsToProtocol_(Foundation.protocols.NSLocking))
+        self.assert_(lock.conformsToProtocol_(protocols.NSLocking))
+
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSLock.tryLock)
+        self.failUnlessResultIsBOOL(NSLock.lockBeforeDate_)
+
+        self.failUnlessResultIsBOOL(NSConditionLock.tryLock)
+        self.failUnlessResultIsBOOL(NSConditionLock.tryLockWhenCondition_)
+        self.failUnlessResultIsBOOL(NSConditionLock.lockBeforeDate_)
+        self.failUnlessResultIsBOOL(NSConditionLock.lockWhenCondition_beforeDate_)
+
+        self.failUnlessResultIsBOOL(NSRecursiveLock.tryLock)
+        self.failUnlessResultIsBOOL(NSRecursiveLock.lockBeforeDate_)
+
+        self.failUnlessResultIsBOOL(NSCondition.waitUntilDate_)
+
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmaptable.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmaptable.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmaptable.py	Mon Mar 30 15:31:19 2009
@@ -10,5 +10,8 @@
         self.assertEquals(NSMapTableCopyIn, NSPointerFunctionsCopyIn)
         self.assertEquals(NSMapTableObjectPointerPersonality, NSPointerFunctionsObjectPointerPersonality)
 
+    def testFunctions(self):
+        self.fail("NSMapTable C-API is untested")
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmetadata.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmetadata.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmetadata.py	Mon Mar 30 15:31:19 2009
@@ -1,6 +1,5 @@
-from PyObjCTools.TestSupport import *
-
 from Foundation import *
+from PyObjCTools.TestSupport import *
 
 class TestNSMetaData (TestCase):
     def testConstants(self):
@@ -13,6 +12,12 @@
         self.failUnless(isinstance(NSMetadataQueryLocalComputerScope, unicode))
         self.failUnless(isinstance(NSMetadataQueryNetworkScope, unicode))
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSMetadataQuery.startQuery)
+        self.failUnlessResultIsBOOL(NSMetadataQuery.isStarted)
+        self.failUnlessResultIsBOOL(NSMetadataQuery.isGathering)
+        self.failUnlessResultIsBOOL(NSMetadataQuery.isStopped)
+
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmethodsignature.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmethodsignature.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsmethodsignature.py	Mon Mar 30 15:31:19 2009
@@ -32,6 +32,13 @@
         self.assertEquals(v, 'o^i')
         self.failUnless(isinstance(v, str))
 
+    def testMethods(self):
+        self.failUnlessResultHasType(NSMethodSignature.getArgumentTypeAtIndex_, '^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessResultIsNullTerminated(NSMethodSignature.getArgumentTypeAtIndex_)
+        self.failUnlessResultHasType(NSMethodSignature.methodReturnType, '^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessResultIsNullTerminated(NSMethodSignature.methodReturnType)
+        self.failUnlessResultIsBOOL(NSMethodSignature.isOneway)
+
             
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnetservices.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnetservices.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnetservices.py	Mon Mar 30 15:31:19 2009
@@ -2,6 +2,12 @@
 
 from Foundation import *
 
+class TestNSNetServicesHelper (NSObject):
+    def netServiceBrowser_didFindDomain_moreComing_(self, a, b, c): pass
+    def netServiceBrowser_didFindService_moreComing_(self, a, b, c): pass
+    def netServiceBrowser_didRemoveDomain_moreComing_(self, a, b, c): pass
+    def netServiceBrowser_didRemoveService_moreComing_(self, a, b, c): pass
+
 
 class TestNSNetservices (TestCase):
     def testConstants(self):
@@ -28,5 +34,16 @@
         self.assertEquals(m['arguments'][2]['type'], 'o^@')
         self.assertEquals(m['arguments'][3]['type'], 'o^@')
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSNetService.getInputStream_outputStream_)
+        self.failUnlessArgIsOut(NSNetService.getInputStream_outputStream_, 0)
+        self.failUnlessArgIsOut(NSNetService.getInputStream_outputStream_, 1)
+        self.failUnlessResultIsBOOL(NSNetService.setTXTRecordData_)
+
+        self.failUnlessArgIsBOOL(TestNSNetServicesHelper.netServiceBrowser_didFindDomain_moreComing_, 2)
+        self.failUnlessArgIsBOOL(TestNSNetServicesHelper.netServiceBrowser_didFindService_moreComing_, 2)
+        self.failUnlessArgIsBOOL(TestNSNetServicesHelper.netServiceBrowser_didRemoveDomain_moreComing_, 2)
+        self.failUnlessArgIsBOOL(TestNSNetServicesHelper.netServiceBrowser_didRemoveService_moreComing_, 2)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnumberformatter.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnumberformatter.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsnumberformatter.py	Mon Mar 30 15:31:19 2009
@@ -30,12 +30,29 @@
 
 
     def testOutput(self):
-        o = NSNumberFormatter.alloc().init()
-        m = o.getObjectValue_forString_range_error_.__metadata__()
-        self.assertEquals(m['arguments'][2]['type'], 'o^@')
-        self.failUnless(m['arguments'][4]['type'].startswith('N^'))
-        self.failUnless(m['arguments'][5]['type'].startswith('o^'))
-
+        self.failUnlessResultIsBOOL(NSNumberFormatter.getObjectValue_forString_range_error_)
+        self.failUnlessArgIsOut(NSNumberFormatter.getObjectValue_forString_range_error_, 0)
+        self.failUnlessArgIsInOut(NSNumberFormatter.getObjectValue_forString_range_error_, 2)
+        self.failUnlessArgIsOut(NSNumberFormatter.getObjectValue_forString_range_error_, 3)
+
+        self.failUnlessResultIsBOOL(NSNumberFormatter.generatesDecimalNumbers)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setGeneratesDecimalNumbers_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.allowsFloats)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setAllowsFloats_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.alwaysShowsDecimalSeparator)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setAlwaysShowsDecimalSeparator_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.usesGroupingSeparator)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setUsesGroupingSeparator_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.isLenient)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setLenient_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.usesSignificantDigits)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setUsesSignificantDigits_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.isPartialStringValidationEnabled)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setPartialStringValidationEnabled_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.hasThousandSeparators)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setHasThousandSeparators_, 0)
+        self.failUnlessResultIsBOOL(NSNumberFormatter.localizesFormat)
+        self.failUnlessArgIsBOOL(NSNumberFormatter.setLocalizesFormat_, 0)
 
 
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobjcruntime.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobjcruntime.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobjcruntime.py	Mon Mar 30 15:31:19 2009
@@ -111,4 +111,3 @@
 
 if __name__ == "__main__":
     main()
-

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobject.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobject.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsobject.py	Mon Mar 30 15:31:19 2009
@@ -2,6 +2,10 @@
 
 from Foundation import *
 
+class TestNSObjectHelper (NSObject):
+    def copyWithZone_(self, zn): return None
+    def mutableCopyWithZone_(self, zn): return None
+
 class TestNSObjectFunctions (TestCase):
     def testAllocation(self):
         o = NSAllocateObject(NSObject, 0, None)
@@ -82,5 +86,32 @@
         for i in range(1,1000):
             a = NSObject.alloc().init()
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSObject.isEqual_)
+        self.failUnlessResultIsBOOL(NSObject.isProxy)
+        self.failUnlessResultIsBOOL(NSObject.isKindOfClass_)
+        self.failUnlessResultIsBOOL(NSObject.isMemberOfClass_)
+        self.failUnlessResultIsBOOL(NSObject.conformsToProtocol_)
+        self.failUnlessResultIsBOOL(NSObject.respondsToSelector_)
+        self.failUnlessResultIsBOOL(NSObject.instancesRespondToSelector_)
+        self.failUnlessResultIsBOOL(NSObject.isSubclassOfClass_)
+        self.failUnlessResultIsBOOL(NSObject.resolveClassMethod_)
+        self.failUnlessResultIsBOOL(NSObject.resolveInstanceMethod_)
+
+        o = NSObject.alloc().init()
+        self.failUnlessResultIsBOOL(o.isEqual_)
+        self.failUnlessResultIsBOOL(o.isProxy)
+        self.failUnlessResultIsBOOL(o.isKindOfClass_)
+        self.failUnlessResultIsBOOL(o.isMemberOfClass_)
+        self.failUnlessResultIsBOOL(o.conformsToProtocol_)
+        self.failUnlessResultIsBOOL(o.respondsToSelector_)
+
+
+        a = TestNSObjectHelper.alloc().init()
+        self.failUnlessArgHasType(a.copyWithZone_, 0, '^{_NSZone=}')
+        self.failUnlessArgHasType(a.mutableCopyWithZone_, 0, '^{_NSZone=}')
+
+
+
 if __name__ == '__main__':
     main( )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsoperation.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsoperation.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsoperation.py	Mon Mar 30 15:31:19 2009
@@ -1,7 +1,5 @@
-from PyObjCTools.TestSupport import *
-
 from Foundation import *
-
+from PyObjCTools.TestSupport import *
 
 class TestNSOperation (TestCase):
     def testConstants(self):
@@ -16,5 +14,15 @@
 
         self.assertEquals(NSOperationQueueDefaultMaxConcurrentOperationCount, -1)
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSOperation.isCancelled)
+        self.failUnlessResultIsBOOL(NSOperation.isExecuting)
+        self.failUnlessResultIsBOOL(NSOperation.isFinished)
+        self.failUnlessResultIsBOOL(NSOperation.isConcurrent)
+        self.failUnlessResultIsBOOL(NSOperation.isReady)
+
+        self.failUnlessResultIsBOOL(NSOperationQueue.isSuspended)
+        self.failUnlessArgIsBOOL(NSOperationQueue.setSuspended_, 0)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspathutilties.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspathutilties.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspathutilties.py	Mon Mar 30 15:31:19 2009
@@ -9,6 +9,8 @@
                 NSSearchPathForDirectoriesInDomains( NSAllLibrariesDirectory, NSAllDomainsMask, NO ),
                       "NSSearchPathForDirectoriesInDomains() failed to return anything." )
 
+        self.failUnlessArgIsBOOL(NSSearchPathForDirectoriesInDomains, 2)
+
     def testTrue(self):
         for boolVal in (1, 1==1, YES, -1):
             self.assert_(
@@ -62,6 +64,14 @@
         self.assertEquals(NSSystemDomainMask, 8)
         self.assertEquals(NSAllDomainsMask, 0x0ffff)
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSString.isAbsolutePath)
+        self.failUnlessArgIsOut(NSString.completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_, 0)
+        self.failUnlessArgIsBOOL(NSString.completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_, 1)
+        self.failUnlessArgIsOut(NSString.completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_, 2)
+        self.failUnlessResultIsBOOL(NSString.getFileSystemRepresentation_maxLength_)
+        self.failUnlessArgHasType(NSString.getFileSystemRepresentation_maxLength_, 0, 'o^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessArgSizeInArg(NSString.getFileSystemRepresentation_maxLength_, 0, 1)
 
 if __name__ == '__main__':
     main( )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsport.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsport.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsport.py	Mon Mar 30 15:31:19 2009
@@ -11,7 +11,8 @@
         self.assertEquals(NSMachPortDeallocateSendRight, (1 << 0))
         self.assertEquals(NSMachPortDeallocateReceiveRight, (1 << 1))
 
-
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSPort.isValid)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspredicate.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspredicate.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nspredicate.py	Mon Mar 30 15:31:19 2009
@@ -1,17 +1,22 @@
+from Foundation import *
 from PyObjCTools.TestSupport import *
-import Foundation
 
 class TestNSPredicate (TestCase):
     def testSimple(self):
-        pred = Foundation.NSPredicate.predicateWithFormat_("a == 42")
+        pred = NSPredicate.predicateWithFormat_("a == 42")
         self.assertEquals(pred.predicateFormat(), "a == 42")
 
     def testFormat(self):
-        pred = Foundation.NSPredicate.predicateWithFormat_("a == %d", 99)
+        pred = NSPredicate.predicateWithFormat_("a == %d", 99)
         self.assertEquals(pred.predicateFormat(), "a == 99")
 
     def testBadFormat(self):
-        self.assertRaises(ValueError, Foundation.NSPredicate.predicateWithFormat_, "a == %d")
+        self.assertRaises(ValueError, NSPredicate.predicateWithFormat_, "a == %d")
+
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSPredicate.predicateWithValue_, 0)
+        self.failUnlessResultIsBOOL(NSPredicate.evaluateWithObject_)
+        self.failUnlessResultIsBOOL(NSPredicate.evaluateWithObject_substitutionVariables_)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscanner.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscanner.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsscanner.py	Mon Mar 30 15:31:19 2009
@@ -47,6 +47,37 @@
         self.assert_(didConvert)
         self.assertEquals(value, u"1234 ")
 
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSScanner.setCaseSensitive_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.caseSensitive)
+        self.failUnlessResultIsBOOL(NSScanner.scanInt_)
+        self.failUnlessArgIsOut(NSScanner.scanInt_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanInteger_)
+        self.failUnlessArgIsOut(NSScanner.scanInteger_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanHexLongLong_)
+        self.failUnlessArgIsOut(NSScanner.scanHexLongLong_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanHexFloat_)
+        self.failUnlessArgIsOut(NSScanner.scanHexFloat_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanHexDouble_)
+        self.failUnlessArgIsOut(NSScanner.scanHexDouble_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanHexInt_)
+        self.failUnlessArgIsOut(NSScanner.scanHexInt_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanLongLong_)
+        self.failUnlessArgIsOut(NSScanner.scanLongLong_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanFloat_)
+        self.failUnlessArgIsOut(NSScanner.scanFloat_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanDouble_)
+        self.failUnlessArgIsOut(NSScanner.scanDouble_, 0)
+        self.failUnlessResultIsBOOL(NSScanner.scanString_intoString_)
+        self.failUnlessArgIsOut(NSScanner.scanString_intoString_, 1)
+        self.failUnlessResultIsBOOL(NSScanner.scanCharactersFromSet_intoString_)
+        self.failUnlessArgIsOut(NSScanner.scanCharactersFromSet_intoString_, 1)
+        self.failUnlessResultIsBOOL(NSScanner.scanUpToString_intoString_)
+        self.failUnlessArgIsOut(NSScanner.scanUpToString_intoString_, 1)
+        self.failUnlessResultIsBOOL(NSScanner.scanUpToCharactersFromSet_intoString_)
+        self.failUnlessArgIsOut(NSScanner.scanUpToCharactersFromSet_intoString_, 1)
+        self.failUnlessResultIsBOOL(NSScanner.isAtEnd)
+
 
 if __name__ == '__main__':
     main( )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsset.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsset.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsset.py	Mon Mar 30 15:31:19 2009
@@ -151,5 +151,18 @@
         self.assertEquals(len(o), 0)
         self.assert_(isinstance(o, NSMutableSet))
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSSet.containsObject_)
+        self.failUnlessResultIsBOOL(NSSet.intersectsSet_)
+        self.failUnlessResultIsBOOL(NSSet.isEqualToSet_)
+        self.failUnlessResultIsBOOL(NSSet.isSubsetOfSet_)
+
+        self.failUnlessArgIsIn(NSSet.setWithObjects_count_, 0)
+        self.failUnlessArgSizeInArg(NSSet.setWithObjects_count_, 0, 1)
+        self.failUnlessArgIsIn(NSSet.initWithObjects_count_, 0)
+        self.failUnlessArgSizeInArg(NSSet.initWithObjects_count_, 0, 1)
+
+        self.failUnlessArgIsBOOL(NSSet.initWithSet_copyItems_, 1)
+
 if __name__ == '__main__':
-    main( )
+    main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstream.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstream.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstream.py	Mon Mar 30 15:31:19 2009
@@ -1,29 +1,88 @@
 from PyObjCTools.TestSupport import *
-import objc
+from Foundation import *
 
-import Foundation
+class TestNSStreamHelper (NSObject):
+    def stream_handleEvent_(self, a, b): pass
 
 class TestNSStreamUsage(TestCase):
 
     def testUsage(self):
         # Test the usage of methods that require extra work
 
-        if not hasattr(Foundation, 'NSStream'):
-            return
-
         # Try to create a connection to the IPP port on the local host
-        inputStream, outputStream = Foundation.NSStream.getStreamsToHost_port_inputStream_outputStream_(
-                Foundation.NSHost.hostWithAddress_(u"127.0.0.1"), 
+        inputStream, outputStream = NSStream.getStreamsToHost_port_inputStream_outputStream_(
+                NSHost.hostWithAddress_(u"127.0.0.1"), 
                 631, # IPP port
                 None,
                 None
         )
 
-        self.assert_(isinstance(inputStream, Foundation.NSInputStream))
-        self.assert_(isinstance(outputStream, Foundation.NSOutputStream))
+        self.assert_(isinstance(inputStream, NSInputStream))
+        self.assert_(isinstance(outputStream, NSOutputStream))
 
         inputStream.close()
         outputStream.close()
 
+    def testConstants(self):
+        self.failUnlessEqual(NSStreamStatusNotOpen, 0)
+        self.failUnlessEqual(NSStreamStatusOpening, 1)
+        self.failUnlessEqual(NSStreamStatusOpen, 2)
+        self.failUnlessEqual(NSStreamStatusReading, 3)
+        self.failUnlessEqual(NSStreamStatusWriting, 4)    
+        self.failUnlessEqual(NSStreamStatusAtEnd, 5)
+        self.failUnlessEqual(NSStreamStatusClosed, 6)
+        self.failUnlessEqual(NSStreamStatusError, 7)
+
+        self.failUnlessEqual(NSStreamEventNone, 0)
+        self.failUnlessEqual(NSStreamEventOpenCompleted, 1 << 0)
+        self.failUnlessEqual(NSStreamEventHasBytesAvailable, 1 << 1)
+        self.failUnlessEqual(NSStreamEventHasSpaceAvailable, 1 << 2)
+        self.failUnlessEqual(NSStreamEventErrorOccurred, 1 << 3)
+        self.failUnlessEqual(NSStreamEventEndEncountered, 1 << 4)
+
+        self.failUnlessIsInstance(NSStreamSocketSecurityLevelKey, unicode)
+        self.failUnlessIsInstance(NSStreamSocketSecurityLevelNone, unicode)
+        self.failUnlessIsInstance(NSStreamSocketSecurityLevelSSLv2, unicode)
+        self.failUnlessIsInstance(NSStreamSocketSecurityLevelSSLv3, unicode)
+        self.failUnlessIsInstance(NSStreamSocketSecurityLevelTLSv1, unicode)
+        self.failUnlessIsInstance(NSStreamSocketSecurityLevelNegotiatedSSL, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyConfigurationKey, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyHostKey, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyPortKey, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyVersionKey, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyUserKey, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyPasswordKey, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyVersion4, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSProxyVersion5, unicode)
+        self.failUnlessIsInstance(NSStreamDataWrittenToMemoryStreamKey, unicode)
+        self.failUnlessIsInstance(NSStreamFileCurrentOffsetKey, unicode)
+        self.failUnlessIsInstance(NSStreamSocketSSLErrorDomain, unicode)
+        self.failUnlessIsInstance(NSStreamSOCKSErrorDomain, unicode)
+
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSStream.setProperty_forKey_)
+
+        self.failUnlessArgHasType(NSInputStream.read_maxLength_, 0, 'o^v')
+        self.failUnlessArgSizeInArg(NSInputStream.read_maxLength_, 0, 1)
+        self.failUnlessArgSizeInResult(NSInputStream.read_maxLength_, 0)
+
+        self.failUnlessResultIsBOOL(NSInputStream.hasBytesAvailable)
+
+        self.failUnlessArgHasType(NSOutputStream.write_maxLength_, 0, 'n^v')
+        self.failUnlessArgSizeInArg(NSOutputStream.write_maxLength_, 0, 1)
+        self.failUnlessResultIsBOOL(NSOutputStream.hasSpaceAvailable)
+
+        b = NSOutputStream.alloc().initToMemory()
+        self.failUnlessArgHasType(b.initToFileAtPath_append_, 1, objc._C_NSBOOL)
+        self.failUnlessArgHasType(NSOutputStream.outputStreamToFileAtPath_append_, 1, objc._C_NSBOOL)
+
+        self.failUnlessArgHasType(b.initToBuffer_capacity_, 0, 'o^v')
+        self.failUnlessArgSizeInArg(b.initToBuffer_capacity_, 0, 1)
+        self.failUnlessArgHasType(NSOutputStream.outputStreamToBuffer_capacity_, 0, 'o^v')
+        self.failUnlessArgSizeInArg(NSOutputStream.outputStreamToBuffer_capacity_, 0, 1)
+
+    def testDelegate(self):
+        self.failUnlessArgHasType(TestNSStreamHelper.stream_handleEvent_, 1, objc._C_NSUInteger)
+
 if __name__ == '__main__':
-    main( )
+    main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstring.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstring.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsstring.py	Mon Mar 30 15:31:19 2009
@@ -1,7 +1,7 @@
 from PyObjCTools.TestSupport import *
-import objc
 import types
 import warnings
+import sys
 
 from Foundation import *
 
@@ -25,20 +25,6 @@
         obj = NSString.alloc().initWithFormat_locale_(u"foo %d", {}, 42)
         self.assertEquals(obj, u"foo 42")
 
-        try:
-            obj = NSString.alloc()
-            self.assertRaises(TypeError, obj.initWithFormat_arguments_, u"foo", [])
-            obj = obj.initWithString_(u"foo")
-        except AssertionError, msg:
-            raise
-
-        try:
-            obj = NSString.alloc()
-            self.assertRaises(TypeError, obj.initWithFormat_locale_arguments_, u"foo", {}, [])
-            obj = obj.initWithString_(u"foo")
-        except AssertionError, msg:
-            raise
-
 
     def testGetCString(self):
         # Custom wrappers
@@ -180,7 +166,7 @@
         v = NSString.alloc().initWithFormat_("%s %d %s", "a", 44, "cc")
         self.assertEquals(v, "a 44 cc")
 
-        v = NSString.alloc().initWithFormat_locale_("%s %d %s", {}, "a", 44, "cc")
+        v = NSString.alloc().initWithFormat_locale_("%s %d %s", None, "a", 44, "cc")
         self.assertEquals(v, "a 44 cc")
 
         v = NSString.stringWithFormat_("aap %s mies", "noot")
@@ -194,5 +180,166 @@
         v.appendFormat_(" bar %s", "baz")
         self.assertEquals(v.nsstring(), "hello bar baz")
 
+
+    @min_os_level('10.5')
+    def testConstants10_5(self):
+        self.failUnlessEqual(NSMaximumStringLength, sys.maxint-1)
+        self.failUnlessEqual(NSDiacriticInsensitiveSearch, 128)
+        self.failUnlessEqual(NSWidthInsensitiveSearch, 256)
+        self.failUnlessEqual(NSForcedOrderingSearch, 512)
+
+        self.failUnlessEqual(NSProprietaryStringEncoding, 65536)
+
+    def testConstants(self):
+        self.failUnlessIsInstance(NSParseErrorException, unicode)
+        self.failUnlessIsInstance(NSCharacterConversionException, unicode)
+
+        self.failUnlessEqual(NSCaseInsensitiveSearch, 1)
+        self.failUnlessEqual(NSLiteralSearch, 2)
+        self.failUnlessEqual(NSBackwardsSearch, 4)
+        self.failUnlessEqual(NSAnchoredSearch, 8)
+        self.failUnlessEqual(NSNumericSearch, 64)
+        self.failUnlessEqual(NSASCIIStringEncoding, 1)
+        self.failUnlessEqual(NSNEXTSTEPStringEncoding, 2)
+        self.failUnlessEqual(NSJapaneseEUCStringEncoding, 3)
+        self.failUnlessEqual(NSUTF8StringEncoding, 4)
+        self.failUnlessEqual(NSISOLatin1StringEncoding, 5)
+        self.failUnlessEqual(NSSymbolStringEncoding, 6)
+        self.failUnlessEqual(NSNonLossyASCIIStringEncoding, 7)
+        self.failUnlessEqual(NSShiftJISStringEncoding, 8)
+        self.failUnlessEqual(NSISOLatin2StringEncoding, 9)
+        self.failUnlessEqual(NSUnicodeStringEncoding, 10)
+        self.failUnlessEqual(NSWindowsCP1251StringEncoding, 11)
+        self.failUnlessEqual(NSWindowsCP1252StringEncoding, 12)
+        self.failUnlessEqual(NSWindowsCP1253StringEncoding, 13)
+        self.failUnlessEqual(NSWindowsCP1254StringEncoding, 14)
+        self.failUnlessEqual(NSWindowsCP1250StringEncoding, 15)
+        self.failUnlessEqual(NSISO2022JPStringEncoding, 21)
+        self.failUnlessEqual(NSMacOSRomanStringEncoding, 30)
+        self.failUnlessEqual(NSUTF16StringEncoding, NSUnicodeStringEncoding)
+        self.failUnlessEqual(NSUTF16BigEndianStringEncoding, cast_int(0x90000100))
+        self.failUnlessEqual(NSUTF16LittleEndianStringEncoding, cast_int(0x94000100))
+        self.failUnlessEqual(NSUTF32StringEncoding, cast_int(0x8c000100))
+        self.failUnlessEqual(NSUTF32BigEndianStringEncoding, cast_int(0x98000100))
+        self.failUnlessEqual(NSUTF32LittleEndianStringEncoding, cast_int(0x9c000100))
+        self.failUnlessEqual(NSStringEncodingConversionAllowLossy, 1)
+        self.failUnlessEqual(NSStringEncodingConversionExternalRepresentation, 2)
+
+    def testMethods(self):
+        self.failUnlessArgHasType(NSString.getCharacters_range_, 0, 'o^' + objc._C_UNICHAR)
+        self.failUnlessArgSizeInArg(NSString.getCharacters_range_, 0, 1)
+
+        self.failUnlessResultIsBOOL(NSString.isEqualToString_)
+        self.failUnlessResultIsBOOL(NSString.hasPrefix_)
+        self.failUnlessResultIsBOOL(NSString.hasSuffix_)
+        self.failUnlessResultIsBOOL(NSString.boolValue)
+        self.failUnlessArgIsOut(NSString.getLineStart_end_contentsEnd_forRange_, 0)
+        self.failUnlessArgIsOut(NSString.getLineStart_end_contentsEnd_forRange_, 1)
+        self.failUnlessArgIsOut(NSString.getLineStart_end_contentsEnd_forRange_, 2)
+        self.failUnlessArgIsOut(NSString.getParagraphStart_end_contentsEnd_forRange_, 0)
+        self.failUnlessArgIsOut(NSString.getParagraphStart_end_contentsEnd_forRange_, 1)
+        self.failUnlessArgIsOut(NSString.getParagraphStart_end_contentsEnd_forRange_, 2)
+        self.failUnlessArgIsBOOL(NSString.dataUsingEncoding_allowLossyConversion_, 1)
+        self.failUnlessResultIsBOOL(NSString.canBeConvertedToEncoding_)
+        self.failUnlessResultIsNullTerminated(NSString.cStringUsingEncoding_)
+        self.failUnlessResultHasType(NSString.cStringUsingEncoding_, '^v')
+        self.failUnlessResultIsBOOL(NSString.getCString_maxLength_encoding_)
+        self.failUnlessArgHasType(NSString.getCString_maxLength_encoding_, 0, 'o^v')
+        self.failUnlessArgSizeInArg(NSString.getCString_maxLength_encoding_, 0, 1)
+
+        self.failUnlessResultIsBOOL(NSString.getBytes_maxLength_usedLength_encoding_options_range_remainingRange_)
+        self.failUnlessArgHasType(NSString.getBytes_maxLength_usedLength_encoding_options_range_remainingRange_, 0, 'o^v')
+        self.failUnlessArgSizeInArg(NSString.getBytes_maxLength_usedLength_encoding_options_range_remainingRange_, 0, (1,2))
+        self.failUnlessArgIsOut(NSString.getBytes_maxLength_usedLength_encoding_options_range_remainingRange_, 2)
+        self.failUnlessArgIsOut(NSString.getBytes_maxLength_usedLength_encoding_options_range_remainingRange_, 6)
+
+        self.failUnlessResultHasType(NSString.UTF8String, '^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessResultIsNullTerminated(NSString.UTF8String)
+        self.failUnlessResultIsNullTerminated(NSString.availableStringEncodings)
+
+        self.failUnlessArgHasType(NSString.initWithCharactersNoCopy_length_freeWhenDone_, 0, 'n^' + objc._C_UNICHAR)
+        self.failUnlessArgSizeInArg(NSString.initWithCharactersNoCopy_length_freeWhenDone_, 0, 1)
+        self.failUnlessArgIsBOOL(NSString.initWithCharactersNoCopy_length_freeWhenDone_, 2)
+        self.failUnlessArgHasType(NSString.initWithCharacters_length_, 0, 'n^' + objc._C_UNICHAR)
+        self.failUnlessArgSizeInArg(NSString.initWithCharacters_length_, 0, 1)
+        self.failUnlessArgHasType(NSString.initWithUTF8String_, 0, 'n^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessArgIsNullTerminated(NSString.initWithUTF8String_, 0)
+        self.failUnlessArgIsPrintf(NSString.initWithFormat_, 0)
+        self.failUnlessArgIsPrintf(NSString.initWithFormat_locale_, 0)
+
+        o = NSString.alloc()
+        self.failUnlessArgIsIn(o.initWithBytes_length_encoding_, 0)
+        self.failUnlessArgSizeInArg(o.initWithBytes_length_encoding_, 0, 1)
+        o = o.init()
+        self.failUnlessArgIsIn(NSString.initWithBytesNoCopy_length_encoding_freeWhenDone_, 0)
+        self.failUnlessArgSizeInArg(NSString.initWithBytesNoCopy_length_encoding_freeWhenDone_, 0, 1)
+        self.failUnlessArgIsBOOL(NSString.initWithBytesNoCopy_length_encoding_freeWhenDone_, 3)
+
+        self.failUnlessArgHasType(NSString.stringWithCharacters_length_, 0, 'n^' + objc._C_UNICHAR)
+        self.failUnlessArgSizeInArg(NSString.stringWithCharacters_length_, 0, 1)
+        self.failUnlessArgHasType(NSString.stringWithUTF8String_, 0, 'n^' + objc._C_CHAR_AS_TEXT)
+        self.failUnlessArgIsNullTerminated(NSString.stringWithUTF8String_, 0)
+        self.failUnlessArgIsPrintf(NSString.stringWithFormat_, 0)
+        self.failUnlessArgIsPrintf(NSString.localizedStringWithFormat_, 0)
+
+        self.failUnlessArgHasType(NSString.initWithCString_encoding_, 0, 'n^t')
+        self.failUnlessArgIsNullTerminated(NSString.initWithCString_encoding_, 0)
+        self.failUnlessArgHasType(NSString.stringWithCString_encoding_, 0, 'n^t')
+        self.failUnlessArgIsNullTerminated(NSString.stringWithCString_encoding_, 0)
+
+        self.failUnlessArgIsOut(NSString.initWithContentsOfURL_encoding_error_, 2)
+        self.failUnlessArgIsOut(NSString.initWithContentsOfFile_encoding_error_, 2)
+        self.failUnlessArgIsOut(NSString.stringWithContentsOfURL_encoding_error_, 2)
+        self.failUnlessArgIsOut(NSString.stringWithContentsOfFile_encoding_error_, 2)
+
+        self.failUnlessArgIsOut(NSString.initWithContentsOfURL_usedEncoding_error_, 1)
+        self.failUnlessArgIsOut(NSString.initWithContentsOfURL_usedEncoding_error_, 2)
+        self.failUnlessArgIsOut(NSString.initWithContentsOfFile_usedEncoding_error_, 1)
+        self.failUnlessArgIsOut(NSString.initWithContentsOfFile_usedEncoding_error_, 2)
+        self.failUnlessArgIsOut(NSString.stringWithContentsOfURL_usedEncoding_error_, 1)
+        self.failUnlessArgIsOut(NSString.stringWithContentsOfURL_usedEncoding_error_, 2)
+        self.failUnlessArgIsOut(NSString.stringWithContentsOfFile_usedEncoding_error_, 1)
+        self.failUnlessArgIsOut(NSString.stringWithContentsOfFile_usedEncoding_error_, 2)
+
+        self.failUnlessResultIsBOOL(NSString.writeToURL_atomically_encoding_error_)
+        self.failUnlessArgIsBOOL(NSString.writeToURL_atomically_encoding_error_, 1)
+        self.failUnlessArgIsOut(NSString.writeToURL_atomically_encoding_error_, 3)
+        self.failUnlessResultIsBOOL(NSString.writeToFile_atomically_encoding_error_)
+        self.failUnlessArgIsBOOL(NSString.writeToFile_atomically_encoding_error_, 1)
+        self.failUnlessArgIsOut(NSString.writeToFile_atomically_encoding_error_, 3)
+
+        self.failUnlessArgIsPrintf(NSMutableString.appendFormat_, 0)
+
+        self.failUnlessResultHasType(NSString.cString, '^t')
+        self.failUnlessResultIsNullTerminated(NSString.cString)
+        self.failUnlessResultHasType(NSString.lossyCString, '^t')
+        self.failUnlessResultIsNullTerminated(NSString.lossyCString)
+
+        self.failUnlessArgHasType(NSString.getCString_maxLength_, 0, 'o^v')
+        self.failUnlessArgSizeInArg(NSString.getCString_maxLength_, 0, 1)
+
+        self.failUnlessArgHasType(NSString.getCString_maxLength_range_remainingRange_, 0, 'o^v')
+        self.failUnlessArgSizeInArg(NSString.getCString_maxLength_range_remainingRange_, 0, 1)
+        self.failUnlessArgIsOut(NSString.getCString_maxLength_range_remainingRange_, 3)
+
+        self.failUnlessResultIsBOOL(NSString.writeToFile_atomically_)
+        self.failUnlessArgIsBOOL(NSString.writeToFile_atomically_, 1)
+        self.failUnlessResultIsBOOL(NSString.writeToURL_atomically_)
+        self.failUnlessArgIsBOOL(NSString.writeToURL_atomically_, 1)
+
+        self.failUnlessArgHasType(NSString.initWithCStringNoCopy_length_freeWhenDone_, 0, 'n^v')
+        self.failUnlessArgSizeInArg(NSString.initWithCStringNoCopy_length_freeWhenDone_, 0, 1)
+        self.failUnlessArgIsBOOL(NSString.initWithCStringNoCopy_length_freeWhenDone_, 2)
+        self.failUnlessArgHasType(NSString.initWithCString_length_, 0, 'n^v')
+        self.failUnlessArgSizeInArg(NSString.initWithCString_length_, 0, 1)
+        self.failUnlessArgHasType(NSString.initWithCString_, 0, 'n^v')
+        self.failUnlessArgIsNullTerminated(NSString.initWithCString_, 0)
+
+        self.failUnlessArgHasType(NSString.stringWithCString_length_, 0, 'n^v')
+        self.failUnlessArgSizeInArg(NSString.stringWithCString_length_, 0, 1)
+        self.failUnlessArgHasType(NSString.stringWithCString_, 0, 'n^v')
+        self.failUnlessArgIsNullTerminated(NSString.stringWithCString_, 0)
+    
+
 if __name__ == '__main__':
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstimer.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstimer.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstimer.py	Mon Mar 30 15:31:19 2009
@@ -47,5 +47,18 @@
 
         self.assertEquals(after, before)
 
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSTimer.timerWithTimeInterval_invocation_repeats_, 2)
+        self.failUnlessArgIsBOOL(NSTimer.scheduledTimerWithTimeInterval_invocation_repeats_, 2)
+        self.failUnlessArgIsBOOL(NSTimer.timerWithTimeInterval_target_selector_userInfo_repeats_, 4)
+        self.failUnlessArgIsSEL(NSTimer.timerWithTimeInterval_target_selector_userInfo_repeats_, 2, 'v@:@')
+        self.failUnlessArgIsBOOL(NSTimer.scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_, 4)
+        self.failUnlessArgIsSEL(NSTimer.scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_, 2, 'v@:@')
+
+        self.failUnlessArgIsBOOL(NSTimer.initWithFireDate_interval_target_selector_userInfo_repeats_, 5)
+        self.failUnlessArgIsSEL(NSTimer.initWithFireDate_interval_target_selector_userInfo_repeats_, 3, 'v@:@')
+
+        self.failUnlessResultIsBOOL(NSTimer.isValid)
+
 if __name__ == '__main__':
     main( )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstypesetter.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstypesetter.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nstypesetter.py	Mon Mar 30 15:31:19 2009
@@ -2,6 +2,11 @@
 from PyObjCTools.TestSupport import *
 from AppKit import *
 
+class TestNSTypesetterHelper (NSTypesetter):
+    def willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_(self, a, b, c, d): return 1
+    def getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_(self, a, b, c, d, e, f): return 1
+    def getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_(self, a, b, c, d, e, f, g, h): return 1
+
 class TestNSTypesetter (TestCase):
     def testConstants(self):
         self.failUnlessEqual(NSTypesetterZeroAdvancementAction, (1 << 0))
@@ -12,25 +17,53 @@
         self.failUnlessEqual(NSTypesetterContainerBreakAction, (1 << 5))
 
     def testMethods(self):
-        self.fail("- (void)getLineFragmentRect:(NSRectPointer)lineFragmentRect usedRect:(NSRectPointer)lineFragmentUsedRect forParagraphSeparatorGlyphRange:(NSRange)paragraphSeparatorGlyphRange atProposedOrigin:(NSPoint)lineOrigin;")
-        self.fail("- (void)layoutGlyphsInLayoutManager:(NSLayoutManager *)layoutManager startingAtGlyphIndex:(NSUInteger)startGlyphIndex maxNumberOfLineFragments:(NSUInteger)maxNumLines nextGlyphIndex:(NSUInteger *)nextGlyph;")
-
-
-        self.fail("- (void)willSetLineFragmentRect:(NSRectPointer)lineRect forGlyphRange:(NSRange)glyphRange usedRect:(NSRectPointer)usedRect baselineOffset:(CGFloat *)baselineOffset;")
-        self.fail("- (NSRange)characterRangeForGlyphRange:(NSRange)glyphRange actualGlyphRange:(NSRangePointer)actualGlyphRange;")
-        self.fail("- (NSRange)glyphRangeForCharacterRange:(NSRange)charRange actualCharacterRange:(NSRangePointer)actualCharRange;")
-        self.fail("- (NSUInteger)getGlyphsInRange:(NSRange)glyphsRange glyphs:(NSGlyph *)glyphBuffer characterIndexes:(NSUInteger *)charIndexBuffer glyphInscriptions:(NSGlyphInscription *)inscribeBuffer elasticBits:(BOOL *)elasticBuffer bidiLevels:(unsigned char *)bidiLevelBuffer;")
-
-        self.fail("- (void)getLineFragmentRect:(NSRectPointer)lineFragmentRect usedRect:(NSRectPointer)lineFragmentUsedRect remainingRect:(NSRectPointer)remainingRect forStartingGlyphAtIndex:(NSUInteger)startingGlyphIndex proposedRect:(NSRect)proposedRect lineSpacing:(CGFloat)lineSpacing paragraphSpacingBefore:(CGFloat)paragraphSpacingBefore paragraphSpacingAfter:(CGFloat)paragraphSpacingAfter;")
-
-        self.fail("- (void)setLocation:(NSPoint)location withAdvancements:(const CGFloat *)advancements forStartOfGlyphRange:(NSRange)glyphRange;")
-        self.fail("- (void)setBidiLevels:(const uint8_t *)levels forGlyphRange:(NSRange)glyphRange;")
-
+        self.failUnlessArgIsOut(NSTypesetter.characterRangeForGlyphRange_actualGlyphRange_, 1)
+        self.failUnlessArgIsOut(NSTypesetter.glyphRangeForCharacterRange_actualCharacterRange_, 1)
+        self.failUnlessArgHasType(NSTypesetter.setBidiLevels_forGlyphRange_, 0, 'n^' + objc._C_CHAR_AS_INT)
+        self.failUnlessArgSizeInArg(NSTypesetter.setBidiLevels_forGlyphRange_, 0, 1)
+        self.failUnlessArgIsIn(NSTypesetter.setLocation_withAdvancements_forStartOfGlyphRange_, 1)
+        self.failUnlessArgSizeInArg(NSTypesetter.setLocation_withAdvancements_forStartOfGlyphRange_, 1, 2)
+        self.failUnlessArgIsOut(NSTypesetter.layoutGlyphsInLayoutManager_startingAtGlyphIndex_maxNumberOfLineFragments_nextGlyphIndex_, 3)
+        self.failUnlessArgIsOut(NSTypesetter.getLineFragmentRect_usedRect_forParagraphSeparatorGlyphRange_atProposedOrigin_, 0)
+        self.failUnlessArgIsOut(NSTypesetter.getLineFragmentRect_usedRect_forParagraphSeparatorGlyphRange_atProposedOrigin_, 1)
+
+        self.failUnlessResultHasType(NSTypesetter.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, objc._C_NSUInteger)
+        self.failUnlessArgHasType(NSTypesetter.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 0, NSRange.__typestr__)
+
+        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 0, 'N^' + NSRect.__typestr__)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 1, NSRange.__typestr__)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 2, 'N^' + NSRect.__typestr__)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.willSetLineFragmentRect_forGlyphRange_usedRect_baselineOffset_, 3, 'N^' + objc._C_CGFloat)
+
+
+        self.failUnlessResultHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, objc._C_NSUInteger)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 0, NSRange.__typestr__)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 1, 'o^I')
+        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 1, 0)
+
+        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 2, 'o^' + objc._C_NSUInteger)
+        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 2, 0)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 3, 'o^' + objc._C_NSUInteger)
+        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 3, 0)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 4, 'o^' + objc._C_NSBOOL)
+        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 4, 0)
+        self.failUnlessArgHasType(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 5, 'o^' + objc._C_UCHR)
+        self.failUnlessArgSizeInArg(TestNSTypesetterHelper.getGlyphsInRange_glyphs_characterIndexes_glyphInscriptions_elasticBits_bidiLevels_, 5, 0)
+
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 0, 'N^' + NSRect.__typestr__)
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 1, 'N^' + NSRect.__typestr__)
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 2, 'N^' + NSRect.__typestr__)
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 3, objc._C_NSUInteger)
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 4, NSRect.__typestr__)
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 5, objc._C_CGFloat)
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 6, objc._C_CGFloat)
+        self.failUnlessArgHasType(NSTypesetter.getLineFragmentRect_usedRect_remainingRect_forStartingGlyphAtIndex_proposedRect_lineSpacing_paragraphSpacingBefore_paragraphSpacingAfter_, 7, objc._C_CGFloat)
 
 
     @min_os_level("10.5")
     def testMethods10_5(self):
-        self.fail("+ (NSSize)printingAdjustmentInLayoutManager:(NSLayoutManager *)layoutMgr forNominallySpacedGlyphRange:(NSRange)nominallySpacedGlyphsRange packedGlyphs:(const unsigned char *)packedGlyphs count:(NSUInteger)packedGlyphsCount;")
+        self.failUnlessArgHasType(NSTypesetter.printingAdjustmentInLayoutManager_forNominallySpacedGlyphRange_packedGlyphs_count_, 2, 'n^v')
+        self.failUnlessArgSizeInArg(NSTypesetter.printingAdjustmentInLayoutManager_forNominallySpacedGlyphRange_packedGlyphs_count_, 2, 3)
 
 
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsundomanager.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsundomanager.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsundomanager.py	Mon Mar 30 15:31:19 2009
@@ -1,7 +1,5 @@
-from PyObjCTools.TestSupport import *
-import objc
-
 from Foundation import *
+from PyObjCTools.TestSupport import *
 import Foundation
 
 class TestHelper (NSObject):
@@ -9,9 +7,6 @@
         foo[0] += 1
 
 class TestNSUndoManager(TestCase):
-    def testFail(self):
-        self.fail("Add tests that check undo calling methods with odd signatures")
-
     def testUndoManager(self):
         x = TestHelper.new()
         m = NSUndoManager.new()
@@ -82,6 +77,17 @@
         self.failUnless(isinstance(NSUndoManagerDidOpenUndoGroupNotification, unicode))
         self.failUnless(isinstance(NSUndoManagerWillCloseUndoGroupNotification, unicode))
 
+        self.failUnlessEqual(NSUndoCloseGroupingRunLoopOrdering, 350000)
+
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSUndoManager.isUndoRegistrationEnabled)
+        self.failUnlessResultIsBOOL(NSUndoManager.groupsByEvent)
+        self.failUnlessArgIsBOOL(NSUndoManager.setGroupsByEvent_, 0)
+        self.failUnlessResultIsBOOL(NSUndoManager.canUndo)
+        self.failUnlessResultIsBOOL(NSUndoManager.canRedo)
+        self.failUnlessResultIsBOOL(NSUndoManager.isUndoing)
+        self.failUnlessResultIsBOOL(NSUndoManager.isRedoing)
+        self.failUnlessArgIsSEL(NSUndoManager.registerUndoWithTarget_selector_object_, 1, 'v@:@')
 
 if __name__ == '__main__':
     main( )

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsuserdefaults.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsuserdefaults.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsuserdefaults.py	Mon Mar 30 15:31:19 2009
@@ -9,6 +9,13 @@
 
         self.assertEquals(defaults.arrayForKey_(u'randomKey'), [u'a', u'b', u'c'])
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSUserDefaults.boolForKey_)
+        self.failUnlessArgIsBOOL(NSUserDefaults.setBool_forKey_, 0)
+        self.failUnlessResultIsBOOL(NSUserDefaults.synchronize)
+        self.failUnlessResultIsBOOL(NSUserDefaults.objectIsForcedForKey_)
+        self.failUnlessResultIsBOOL(NSUserDefaults.objectIsForcedForKey_inDomain_)
+
 
     def testConstants(self):
         self.failUnless(isinstance(NSGlobalDomain, unicode))

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvalue.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvalue.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvalue.py	Mon Mar 30 15:31:19 2009
@@ -2,8 +2,31 @@
 from PyObjCTools.TestSupport import *
 
 class TestNSValue (TestCase):
-    def testFixme(self):
-        self.fail("Write some tests")
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSNumber.numberWithBool_, 0)
+        self.failUnlessArgIsBOOL(NSNumber.initWithBool_, 0)
+        self.failUnlessResultIsBOOL(NSNumber.boolValue)
+        self.failUnlessResultIsBOOL(NSNumber.isEqualToNumber_)
+
+        self.failUnlessResultIsBOOL(NSValue.isEqualToValue_)
+
+        self.failUnlessArgIsIn(NSValue.initWithBytes_objCType_, 0)
+        self.failUnlessArgIsVariableSize(NSValue.initWithBytes_objCType_, 0)
+        self.failUnlessArgHasType(NSValue.initWithBytes_objCType_, 1, 'n^t')
+        self.failUnlessArgIsNullTerminated(NSValue.initWithBytes_objCType_, 1)
+
+        self.failUnlessArgIsIn(NSValue.valueWithBytes_objCType_, 0)
+        self.failUnlessArgIsVariableSize(NSValue.valueWithBytes_objCType_, 0)
+        self.failUnlessArgHasType(NSValue.valueWithBytes_objCType_, 1, 'n^t')
+        self.failUnlessArgIsNullTerminated(NSValue.valueWithBytes_objCType_, 1)
+
+        self.failUnlessArgIsIn(NSValue.value_withObjCType_, 0)
+        self.failUnlessArgIsVariableSize(NSValue.value_withObjCType_, 0)
+        self.failUnlessArgHasType(NSValue.value_withObjCType_, 1, 'n^t')
+        self.failUnlessArgIsNullTerminated(NSValue.value_withObjCType_, 1)
+
+        self.failUnlessResultIsNullTerminated(NSValue.objCType)
+        self.failUnlessResultHasType(NSValue.objCType, '^t')
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvaluetransformer.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvaluetransformer.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsvaluetransformer.py	Mon Mar 30 15:31:19 2009
@@ -9,5 +9,8 @@
         self.failUnless(isinstance(NSUnarchiveFromDataTransformerName, unicode))
         self.failUnless(isinstance(NSKeyedUnarchiveFromDataTransformerName, unicode))
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSValueTransformer.allowsReverseTransformation)
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldocument.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldocument.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldocument.py	Mon Mar 30 15:31:19 2009
@@ -9,28 +9,17 @@
         self.assertEquals(NSXMLDocumentTextKind, 3)
 
     def testOutputArgs(self):
-        n =  NSXMLDocument.alloc().init()
-        self.assertEquals(
-            n.initWithXMLString_options_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
-        self.assertEquals(
-            n.initWithContentsOfURL_options_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
-        self.assertEquals(
-            n.initWithData_options_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
-        self.assertEquals(
-            n.objectByApplyingXSLT_arguments_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
-        self.assertEquals(
-            n.objectByApplyingXSLTString_arguments_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
-        self.assertEquals(
-            n.objectByApplyingXSLTAtURL_arguments_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
-        self.assertEquals(
-            n.validateAndReturnError_.__metadata__()['arguments'][2]['type'],
-            'o^@')
+        self.failUnlessArgIsOut(NSXMLDocument.initWithXMLString_options_error_, 2)
+        self.failUnlessArgIsOut(NSXMLDocument.initWithContentsOfURL_options_error_, 2)
+        self.failUnlessArgIsOut(NSXMLDocument.initWithData_options_error_, 2)
+        self.failUnlessArgIsOut(NSXMLDocument.objectByApplyingXSLT_arguments_error_, 2)
+        self.failUnlessArgIsOut(NSXMLDocument.objectByApplyingXSLTString_arguments_error_, 2)
+        self.failUnlessArgIsOut(NSXMLDocument.objectByApplyingXSLTAtURL_arguments_error_, 2)
+        self.failUnlessArgIsOut(NSXMLDocument.validateAndReturnError_, 0)
+
+        self.failUnlessResultIsBOOL(NSXMLDocument.isStandalone)
+        self.failUnlessArgIsBOOL(NSXMLDocument.setStandalone_, 0)
+        self.failUnlessResultIsBOOL(NSXMLDocument.validateAndReturnError_)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtd.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtd.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtd.py	Mon Mar 30 15:31:19 2009
@@ -4,13 +4,8 @@
 class TestXMLDTD (TestCase):
 
     def testOutputArgs(self):
-        n =  NSXMLDTD.alloc().init()
-        self.assertEquals(
-            n.initWithContentsOfURL_options_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
-        self.assertEquals(
-            n.initWithData_options_error_.__metadata__()['arguments'][4]['type'],
-            'o^@')
+        self.failUnlessArgIsOut(NSXMLDTD.initWithContentsOfURL_options_error_, 2)
+        self.failUnlessArgIsOut(NSXMLDTD.initWithData_options_error_, 2)
 
 
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtdnode.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtdnode.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmldtdnode.py	Mon Mar 30 15:31:19 2009
@@ -24,5 +24,9 @@
         self.assertEquals(NSXMLElementDeclarationMixedKind, 19)
         self.assertEquals(NSXMLElementDeclarationElementKind, 20)
 
+    def testMethods(self):
+        self.failUnlessResultIsBOOL(NSXMLDTDNode.isExternal)
+
+
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlelement.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlelement.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlelement.py	Mon Mar 30 15:31:19 2009
@@ -3,10 +3,8 @@
 
 class TestXMLElement (TestCase):
     def testOutputArgs(self):
-        n =  NSXMLElement.alloc().init()
-        self.assertEquals(
-            n.initWithXMLString_error_.__metadata__()['arguments'][3]['type'],
-            'o^@')
+        self.failUnlessArgIsOut(NSXMLElement.initWithXMLString_error_, 1)
+        self.failUnlessArgIsBOOL(NSXMLElement.normalizeAdjacentTextNodesPreservingCDATA_, 0)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlnode.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlnode.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlnode.py	Mon Mar 30 15:31:19 2009
@@ -18,12 +18,11 @@
         self.assertEquals(NSXMLNotationDeclarationKind, 12)
 
     def testOutputArgs(self):
-        n =  NSXMLNode.alloc().init()
-        self.assertEquals(
-            n.nodesForXPath_error_.__metadata__()['arguments'][3]['type'],
-            'o^@')
-
+        self.failUnlessArgIsOut(NSXMLNode.nodesForXPath_error_, 1)
         self.failUnlessArgIsOut(NSXMLNode.objectsForXQuery_constants_error_, 2)
+        self.failUnlessArgIsOut(NSXMLNode.objectsForXQuery_error_, 1)
+        self.failUnlessArgIsBOOL(NSXMLNode.setStringValue_resolvingEntities_, 1)
+        self.failUnlessArgIsBOOL(NSXMLNode.canonicalXMLStringPreservingComments_, 0)
 
 
 if __name__ == "__main__":

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlparser.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlparser.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsxmlparser.py	Mon Mar 30 15:31:19 2009
@@ -97,6 +97,16 @@
         self.assertEquals(NSXMLParserNoDTDError, 94)
         self.assertEquals(NSXMLParserDelegateAbortedParseError, 512)
 
+        self.failUnlessIsInstance(NSXMLParserErrorDomain, unicode)
+
+    def testMethods(self):
+        self.failUnlessArgIsBOOL(NSXMLParser.setShouldProcessNamespaces_, 0)
+        self.failUnlessArgIsBOOL(NSXMLParser.setShouldReportNamespacePrefixes_, 0)
+        self.failUnlessArgIsBOOL(NSXMLParser.setShouldResolveExternalEntities_, 0)
+        self.failUnlessResultIsBOOL(NSXMLParser.shouldProcessNamespaces)
+        self.failUnlessResultIsBOOL(NSXMLParser.shouldReportNamespacePrefixes)
+        self.failUnlessResultIsBOOL(NSXMLParser.shouldResolveExternalEntities)
+        self.failUnlessResultIsBOOL(NSXMLParser.parse)
 
 if __name__ == "__main__":
     main()

------------------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.