;; test_protocols.nu ;; tests for Nu protocol support. ;; ;; Copyright (c) 2007 Tim Burks, Radtastical Inc. (if (eq (uname) "Darwin") (set version (NSString stringWithShellCommand:"uname -r")) (set v (((version componentsSeparatedByString:".") 0) intValue)) (if (< v 10) ;; We can't do this in Snow Leopard (class TestProtocols is NuTestCase (- (id) testSimple is ;; first define a class with two methods (class Foo is NSObject (- hello is "hello") (- goodbye is "goodbye")) ;; make sure that both methods work (set foo ((Foo alloc) init)) (assert_equal "hello" (foo hello)) (assert_equal "goodbye" (foo goodbye)) ;; now declare a protocol that includes only one of them (protocol DontSayGoodbye (- (id) hello)) (assert_equal 1 ((DontSayGoodbye methodDescriptions) count)) ;; give the instance and protocol to a protocol checker (set bar ((NSProtocolChecker alloc) initWithTarget:foo protocol:DontSayGoodbye)) ;; try the two methods; only the one in the protocol should be allowed (assert_equal "hello" (bar hello)) (assert_throws "NuUnknownMessage" (bar goodbye))))))