0
;; limitations under the License.
0
-;; @abstract Base class for Nu test cases.
0
+;; @abstract Base class for Nu test cases.
0
;; @discussion NuTestCase is an abstract base class for Nu test cases.
0
;; To create new tests, create a class derived from this class
0
;; and give your test methods names beginning with "test".
0
;; As with Ruby's Test::Unit, you can also define methods
0
;; named "setup" and "teardown" to be run before and after
0
;; Here's an example test:
0
;; (assert_equal 4 (+ 2 2))))
0
-;; To run your tests, use the "nutest" standalone program.
0
+;; To run your tests, use the "nutest" standalone program.
0
;; The following invocation runs all of the Nu unit tests
0
;; from a console (Terminal.app):
0
;; <code>% nutest test/test_*.nu</code>
0
(class NuTestCase is NSObject
0
(ivar (id) failures (id) assertions (id) errors)
0
;; By overriding this method, we detect each time a class is defined in Nu that inherits from this class.
0
- (cmethod (id) inheritedByClass:(id) testClass is
0
+ (cmethod (id) inheritedByClass:(id) testClass is
0
(unless $testClasses (set $testClasses (NSMutableSet set)))
0
- ($testClasses addObject:testClass))
0
+ ($testClasses addObject:testClass))
0
- ;; The setup method is called before each test case is executed.
0
+ ;; The setup method is called before each test case is executed.
0
;; The default implementation does nothing.
0
(imethod (id) setup is nil)
0
- ;; The teardown method is called after each test case is executed.
0
+ ;; The teardown method is called after each test case is executed.
0
;; The default implementation does nothing.
0
(imethod (id) teardown is nil)
0
- ((($testClasses allObjects) sort) each:
0
+ ((($testClasses allObjects) sort) each:
0
(((testClass alloc) init) run))))
0
(puts "All: completed #{$tests} tests/#{$assertions} assertions/#{$failures} failures/#{$errors} errors")
0
(if (or $failures $errors)
0
- (then (puts "FAILURE (#{$failures} failures, #{$errors} errors)"))
0
+ (then (puts "FAILURE (#{$failures} failures, #{$errors} errors)"))
0
(else (puts "SUCCESS (0 failures, 0 errors)")))
0
(set testcases (((self instanceMethods) sort) select: (do (method) ((pattern findInString:(method name))))))
0
(puts "#{((self class) name)}: running")
0
(set $tests (+ $tests 1))
0
(print "--- #{(test name)}")
0
(print " FAILED: Unhandled #{(exception name)} exception caught in #{(test name)}: #{(exception reason)}")
0
(set @errors (+ @errors 1))))
0
(set $errors (+ $errors @errors))
0
(set $failures (+ $failures @failures))
0
- (set $assertions (+ $assertions @assertions))
0
- (puts "#{((self class) name)}: completed #{(testcases count)} tests/#{@assertions} assertions/#{@failures} failures/#{@errors} errors")))
0
+ (set $assertions (+ $assertions @assertions))
0
+ (puts "#{((self class) name)}: completed #{(testcases count)} tests/#{@assertions} assertions/#{@failures} failures/#{@errors} errors")))
0
(set @assertions (+ @assertions 1))
0
(set @failures (+ @failures 1)))
0
(set @assertions (+ @assertions 1))
0
(set __desired (eval (car margs)))
0
(set __block (cdr margs))
0
(catch (exception) (set __exception exception)))
0
(unless (eq (__exception name) __desired)
0
(puts "failure: expected exception #{__desired} to be thrown, got #{(__exception name)}")
0
(set @failures (+ @failures 1))))
0
(set @assertions (+ @assertions 1))
0
(set __reference (eval (car margs)))
0
(set __actual (eval (car (cdr (margs)))))
0
(set @failures (+ @failures 1)))
0
+ (set @assertions (+ @assertions 1))
0
+ (set __actual (eval (car margs)))
0
+ (puts "failure: #{(car margs)} expected true value, got '#{__actual}'")
0
+ (set @failures (+ @failures 1)))
0
+ (set @assertions (+ @assertions 1))
0
+ (set __actual (eval (car margs)))
0
+ (puts "failure: #{(car margs)} expected false value, got '#{__actual}'")
0
+ (set @failures (+ @failures 1)))
Comments
No one has commented yet.