;; test_interface.nu ;; tests for the Nu public interface. ;; ;; Copyright (c) 2007 Tim Burks, Radtastical Inc. (class TestInterface is NuTestCase ;; all of these calls could be made from Objective-C ;; using methods that are declared in Nu/Nu.h (- (id) testParser is ;; create a parser (set parser (Nu parser)) ;; set a variable in the top-level context using KVC (parser setValue:2 forKey:"x") ;; parse text into an evaluatable object (set code (parser parse:"(set x (+ x x))")) ;; evaluate the parsed code (set result (parser eval:code)) (assert_equal 4 result) ;; parsed code objects can be evaluated any number of times (set result (parser eval:code)) (assert_equal 8 result) ;; KVC is broadly interpreted to allow any Nu expression as a key (assert_equal 16 (parser valueForKey:"(+ x x)")) ;; But for setting, the key must be a symbol name (parser setValue:"hello" forKey:"y") ;; Symbol values can also be looked up using parse: and eval: (assert_equal "hello" (parser eval:(parser parse:"y")))))