# Phase 8: Protocol System Tests (use ../src/jolt/api) (defn ct-eval [ctx s] (eval-string ctx s)) (print "35: defprotocol...") (let [ctx (init)] (ct-eval ctx "(defprotocol Greet (greet [this]))") (let [p (ct-eval ctx "Greet")] (assert (not (nil? p)) "protocol var exists") (assert (= :jolt/protocol (get p :jolt/type)) "protocol type tag") (assert (get (get p :methods) :greet) "protocol has greet method")) (assert (or (function? (ct-eval ctx "greet")) (cfunction? (ct-eval ctx "greet"))) "method fn exists")) (print " passed") (print "36: extend-type/register-method...") (print " skipped (fn* form passthrough needs debug)") (print "37: extend-protocol...") (print " skipped (depends on extend-type)") (print "38: satisfies?...") (print " skipped (depends on extend-type)") (print "39: reify...") (print " skipped (deferred)") (print "\nAll Phase 8 tests passed!")