On Jun 17, 2011, at 1:21 PM, Benjamin Esham wrote:
> I am writing a library [1] which has only one function that should be
> exposed to users. I'd like to be able to test all of the other functions,
> which are marked private with "defn-". Of course, these functions are
> inaccessible from the testing namespace (I'm using the testing boilerplate
> that Leiningen generates).


I put the private functions in their own namespace that's :used by the API 
namespace. 

(ns midje.sweet
  (:use midje.midje-forms.recognizing ...

-----------
(ns midje.t-sweet        ;;; Corresponding file of tests.
  (:use [midje.sweet])
  (:use [midje.test-util]))

;;; Since Midje is a testing tool, I'm using it to test itself.
;;; Here I'm testing `tabular`, which is part of the public API
(tabular     
 (fact (+ ?a ?b) => ?result )  
 ?a    ?b      ?result                
 1     2       3)
------------

(ns midje.midje-forms.recognizing ....  ;;; Helper functions.

(defn loc-is-at-full-expect-form? [loc]
  (and (zip/branch? loc)
       (namespacey-match '(expect) (zip/down loc))))

-----------

(ns midje.midje-forms.t-recognizing ...  ;;; and their tests

(tabular 
 (fact "an embedded expect form can be recognized"
   (loc-is-at-full-expect-form? (zip/seq-zip ?form)) => ?expected)

 ?form                                  ?expected
 '(expect x => y)                       truthy
 '(midje.semi-sweet/expect x => y)      truthy
 '(+ x y)                               falsey
 'expect                                falsey)




-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Occasional consulting on Agile
www.exampler.com, www.twitter.com/marick

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to