Changeset 7346 in project


Ignore:
Timestamp:
01/14/08 08:05:48 (12 years ago)
Author:
Jim Ursetto
Message:

objc: update unit-test to modern syntax

File:
1 edited

Legend:

Unmodified
Added
Removed
  • objc/tests/unit-test.scm

    r143 r7346  
    1616;; Unimplemented
    1717  ;; (objc-invoker TypeTest "printInt:Double:Float:" 1.1 2.2 3.3)   => prints, returns YES (#\x1)
    18   ; (objc TypeTest nextChar: #t)                                    => error: not a character
     18  ; (@ TypeTest nextChar: #t)                                    => error: not a character
    1919
    20          (test/eq    "Boolean false return" (objc TypeTest isGreaterThanThree: 1) #f)
    21          (test/equal "Boolean true return"  (objc TypeTest isGreaterThanThree: 4) #\x1)
     20         (test/eq    "Boolean false return" (@ TypeTest isGreaterThanThree: 1) #f)
     21         (test/equal "Boolean true return"  (@ TypeTest isGreaterThanThree: 4) #\x1)
    2222         (test/eq    "True scheme predicate"
    23                      (if (objc TypeTest isGreaterThanThree: 4) 'true 'false)
     23                     (if (@ TypeTest isGreaterThanThree: 4) 'true 'false)
    2424                     'true)
    2525         (test/eq    "False scheme predicate"
    26                      (if (objc TypeTest isGreaterThanThree: 1) 'true 'false)
     26                     (if (@ TypeTest isGreaterThanThree: 1) 'true 'false)
    2727                     'false)
    2828         (test/equal "(uchar)2 returned as character"
    29                      (objc TypeTest convertIntToUChar: 2) #\x2)
     29                     (@ TypeTest convertIntToUChar: 2) #\x2)
    3030         (test/equal "(uchar)0 returned as character"
    31                      (objc TypeTest convertIntToUChar: 0) #\nul)
     31                     (@ TypeTest convertIntToUChar: 0) #\nul)
    3232         (test/eqv   "Int to short"
    33                      (objc TypeTest convertIntToShort: -1) -1)
     33                     (@ TypeTest convertIntToShort: -1) -1)
    3434         (test/eqv   "Int to ushort"
    35                      (objc TypeTest convertIntToUShort: -1) 65535)
     35                     (@ TypeTest convertIntToUShort: -1) 65535)
    3636         (test/eqv   "Int to short"
    37                      (objc TypeTest convertIntToShort: 32768) -32768)
     37                     (@ TypeTest convertIntToShort: 32768) -32768)
    3838         (test/eqv   "Int to ushort"
    39                      (objc TypeTest convertIntToUShort: 32768) 32768)
     39                     (@ TypeTest convertIntToUShort: 32768) 32768)
    4040         (test/eqv   "Double precision"
    41                      (objc TypeTest returnDoublePlusOneHalf: 2.1) 2.6)
     41                     (@ TypeTest returnDoublePlusOneHalf: 2.1) 2.6)
    4242         (test/equiv "Float precision"
    43                      (objc TypeTest returnFloatPlusOneHalf: 2.1)
     43                     (@ TypeTest returnFloatPlusOneHalf: 2.1)
    4444                     2.59999990463257
    4545                     (epsilon=?))
    4646         (test/equiv "NSString returns a Scheme string"
    47                      (objc TypeTest returnNSStringHiMom)
     47                     (@ TypeTest returnNSStringHiMom)
    4848                     "hi, mom!"
    4949                     (nsstring=?))
    5050         (test/eq    "Null object return is #f"
    51                      (objc TypeTest returnNullObject) #f)
     51                     (@ TypeTest returnNullObject) #f)
    5252         (test/eqv   "Non-null char"
    53                      (objc TypeTest nextChar: #\a) #\b)
     53                     (@ TypeTest nextChar: #\a) #\b)
    5454         (test/eqv   "Boolean true argument"
    55                      (objc TypeTest isTrue: #t) #\x1)
     55                     (@ TypeTest isTrue: #t) #\x1)
    5656         (test/eqv   "Boolean false argument"
    57                      (objc TypeTest isTrue: #f) #f)
     57                     (@ TypeTest isTrue: #f) #f)
    5858         (test/eqv   "Boolean char argument is ok"
    59                      (objc TypeTest isTrue: #\a) #\x1)
     59                     (@ TypeTest isTrue: #\a) #\x1)
    6060         
    61    ;; -- Note: (objc NSNumber numberWithInt: n) returns the same pointer if you call
     61   ;; -- Note: (@ NSNumber numberWithInt: n) returns the same pointer if you call
    6262   ;;          with identical n.  Object only appears to be allocated once for each different value.
    6363         (test/eqv   "NSNumber within an NSArray"
    64                      (objc (objc (objc NSArray arrayWithObject: (objc NSNumber numberWithInt: 5))
     64                     (@ (@ (@ NSArray arrayWithObject: (@ NSNumber numberWithInt: 5))
    6565                                 objectAtIndex: 0)
    66                            isEqual: (objc NSNumber numberWithInt: 5))
     66                           isEqual: (@ NSNumber numberWithInt: 5))
    6767                     #\x1)
    6868         (test/eqv   "NSNumber <"
    69                      (objc (objc NSNumber numberWithInt: 5)
    70                            compare: (objc NSNumber numberWithInt: 6))
     69                     (@ (@ NSNumber numberWithInt: 5)
     70                           compare: (@ NSNumber numberWithInt: 6))
    7171                     -1)
    7272         (test/eqv   "NSNumber =="
    73                      (objc (objc NSNumber numberWithInt: 5)
    74                            compare: (objc NSNumber numberWithInt: 5))
     73                     (@ (@ NSNumber numberWithInt: 5)
     74                           compare: (@ NSNumber numberWithInt: 5))
    7575                     0)
    7676         (test/eqv   "NSNumber >"
    77                      (objc (objc NSNumber numberWithInt: 5)
    78                            compare: (objc NSNumber numberWithInt: 4))
     77                     (@ (@ NSNumber numberWithInt: 5)
     78                           compare: (@ NSNumber numberWithInt: 4))
    7979                     1)
    8080
    8181         (test/equal "Class name"
    82                       (objc:class-name (objc NSString class))
     82                      (objc:class-name (@ NSString class))
    8383                      "NSString")
    8484         (test/eqv  "Class check via toplevel symbol"
    85                      (objc (objc NSScanner alloc) isKindOfClass: NSScanner)
     85                     (@ (@ NSScanner alloc) isKindOfClass: NSScanner)
    8686                     #\x1)
    8787         (test/eqv  "Class check via class method"
    88                      (objc (objc NSScanner alloc)
    89                            isKindOfClass: (objc NSScanner class))
     88                     (@ (@ NSScanner alloc)
     89                           isKindOfClass: (@ NSScanner class))
    9090                     #\x1)
    9191         (test/eqv  "Superclass check via symbol"
    92                      (objc (objc NSScanner alloc) isKindOfClass: NSObject)
     92                     (@ (@ NSScanner alloc) isKindOfClass: NSObject)
    9393                     #\x1)
    9494         (test/eqv  "Sibling (non-isa) class check via symbol"
    95                      (objc (objc NSScanner alloc) isKindOfClass: NSString)
     95                     (@ (@ NSScanner alloc) isKindOfClass: NSString)
    9696                     #f)
    9797         (test/equiv "NSString in/out conversion"
    98                      (objc (objc NSArray arrayWithObject: "tralfamadore") objectAtIndex: 0)
     98                     (@ (@ NSArray arrayWithObject: "tralfamadore") objectAtIndex: 0)
    9999                     "tralfamadore"
    100100                     (nsstring=?))
     
    106106;;; unimplemented
    107107
    108 ; (objc TypeTest returnIntMinusOne: 0)         => -1
    109 ; (objc TypeTest convertIntToUInt: -1)         => 4294967295.0
    110 ; (objc TypeTest convertIntToLong: -1)         => -1
    111 ; (objc TypeTest convertIntToULong: -1)        => 4294967295.0  [prob. 1.84467440737096e+19 on 64-bit]
     108; (@ TypeTest returnIntMinusOne: 0)         => -1
     109; (@ TypeTest convertIntToUInt: -1)         => 4294967295.0
     110; (@ TypeTest convertIntToLong: -1)         => -1
     111; (@ TypeTest convertIntToULong: -1)        => 4294967295.0  [prob. 1.84467440737096e+19 on 64-bit]
    112112;; These 3 return integer.
    113 ; (objc TypeTest addShort: -1 toUShort: -1)    => 65534
    114 ; (objc TypeTest addInt: -1 toUInt: 4294967295.0) => -2
    115 ; (objc TypeTest addLong: -1 toULong: -1)      => -2      [likely to be different on 64-bit platform]
     113; (@ TypeTest addShort: -1 toUShort: -1)    => 65534
     114; (@ TypeTest addInt: -1 toUInt: 4294967295.0) => -2
     115; (@ TypeTest addLong: -1 toULong: -1)      => -2      [likely to be different on 64-bit platform]
    116116
    117117;; Should test ns:make-number for correct ObjC type created, when integrated
     
    119119
    120120;; Selector tests
    121 ;; (define inv (objc NSInvocation invocationWithMethodSignature: (objc NSScanner methodSignatureForSelector: "alloc")))
    122 ;; (objc inv selector)  => #f
    123 ;; (objc inv setSelector: "alloc")   => void
    124 ;; (objc inv selector)  => "alloc"
     121;; (define inv (@ NSInvocation invocationWithMethodSignature: (@ NSScanner methodSignatureForSelector: "alloc")))
     122;; (@ inv selector)  => #f
     123;; (@ inv setSelector: "alloc")   => void
     124;; (@ inv selector)  => "alloc"
    125125;;    Note: In order to get the return value via getReturnValue:, we need to pass in a buffer
    126126;;    and also convert the result to a scheme object.  We could create a wrapper around
     
    128128;;    (This is available in  [[inv methodSignature] methodReturnType] and the buffer length
    129129;;    is available in [[inv methodSignature] methodReturnLength]:
    130 ;;      (define sig (objc inv methodSignature))
    131 ;;      (objc sig methodReturnType)   => "@"
    132 ;;      (objc sig methodReturnLength) => 4
    133 ;;      (objc inv invoke)             => (void)
    134 ;;      (objc inv getReturnType: (make-string 4))   ;; fatal: call with pointer argument
     130;;      (define sig (@ inv methodSignature))
     131;;      (@ sig methodReturnType)   => "@"
     132;;      (@ sig methodReturnLength) => 4
     133;;      (@ inv invoke)             => (void)
     134;;      (@ inv getReturnType: (make-string 4))   ;; fatal: call with pointer argument
    135135;;                                                  ;; use locations? values?
    136136;;             ;; This is a valid pointer pass which is incorrectly handled by gauche-objc,
     
    138138;;      Argument type for first argument is "^v", or void pointer -- not a struct pointer,
    139139;;      which gauche expects for return-by-reference but does not check past the ^.
    140 ;;      (objc (objc inv methodSignatureForSelector: "getReturnValue:") getArgumentTypeAtIndex: 2)
     140;;      (@ (@ inv methodSignatureForSelector: "getReturnValue:") getArgumentTypeAtIndex: 2)
    141141;;   Note, we could also use:
    142 ;;      (cdr (assoc "getReturnValue:" (objc-class-method-list (objc (objc NSInvocation alloc) class))))
     142;;      (cdr (assoc "getReturnValue:" (objc-class-method-list (@ (@ NSInvocation alloc) class))))
    143143;;         to obtain the full signature, "v12@0:4^v8".
    144144
    145 ; (objc NSString alloc)  => Exception
     145; (@ NSString alloc)  => Exception
    146146                          ; Did you forget to nest alloc and init?
    147147                          ; <NSInvalidArgumentException> *** -length only defined for
     
    150150
    151151;; Testing ivar-ref -- create a new NSInvocationFromScheme and have it assign to sig
    152 ; (define o (objc (objc NSInvocationFromScheme alloc) initWithTarget: (objc NSScanner alloc) selector: "class"))
     152; (define o (@ (@ NSInvocationFromScheme alloc) initWithTarget: (@ NSScanner alloc) selector: "class"))
    153153; (ivar-ref o inv)                => crashes
    154154; (ivar-ref o sig)                => #<objc-object>
    155 ; (objc (ivar-ref o sig) methodReturnType)       => "#"
     155; (@ (ivar-ref o sig) methodReturnType)       => "#"
    156156; (ivar-ref o inv)                => suddenly works the second time (after the methodReturnType call)
    157157;; This is an object deallocation problem.  When the autorelease pool is eliminated (leaking memory)
Note: See TracChangeset for help on using the changeset viewer.