Sorry Matthias, but I don't understand the mechanics. I've read the guide, but I don't see how to do what I'd like without timing outside of the module.
To be clear, what do I add to the following file (from the docs) in order to time the duration of all the four checks combined? #lang<http://pre.racket-lang.org/docs/html/guide/Module_Syntax.html#(part._hash-lang)> racket <http://pre.racket-lang.org/docs/html/reference/index.html>(module+<http://pre.racket-lang.org/docs/html/reference/module.html#(form._((lib._racket/private/base..rkt)._module+))> test (require<http://pre.racket-lang.org/docs/html/reference/require.html#(form._((lib._racket/private/base..rkt)._require))> rackunit) (define<http://pre.racket-lang.org/docs/html/reference/define.html#(form._((lib._racket/private/base..rkt)._define))> ε 1e-10)) (provide<http://pre.racket-lang.org/docs/html/reference/require.html#(form._((lib._racket/private/base..rkt)._provide))> drop to-energy) (define<http://pre.racket-lang.org/docs/html/reference/define.html#(form._((lib._racket/private/base..rkt)._define))> (drop t) (*<http://pre.racket-lang.org/docs/html/reference/generic-numbers.html#(def._((quote._~23~25kernel)._*))> 1/2 9.8 t t)) (module+<http://pre.racket-lang.org/docs/html/reference/module.html#(form._((lib._racket/private/base..rkt)._module+))> test (check-=<http://pre.racket-lang.org/docs/html/rackunit/api.html#(def._((lib._rackunit/main..rkt)._check-~3d))> (drop 0) 0 ε) (check-=<http://pre.racket-lang.org/docs/html/rackunit/api.html#(def._((lib._rackunit/main..rkt)._check-~3d))> (drop 10) 490 ε)) (define<http://pre.racket-lang.org/docs/html/reference/define.html#(form._((lib._racket/private/base..rkt)._define))> (to-energy m) (*<http://pre.racket-lang.org/docs/html/reference/generic-numbers.html#(def._((quote._~23~25kernel)._*))> m (expt<http://pre.racket-lang.org/docs/html/reference/generic-numbers.html#(def._((quote._~23~25kernel)._expt))> 299792458.0 2))) (module+<http://pre.racket-lang.org/docs/html/reference/module.html#(form._((lib._racket/private/base..rkt)._module+))> test (check-=<http://pre.racket-lang.org/docs/html/rackunit/api.html#(def._((lib._rackunit/main..rkt)._check-~3d))> (to-energy 0) 0 ε) (check-=<http://pre.racket-lang.org/docs/html/rackunit/api.html#(def._((lib._rackunit/main..rkt)._check-~3d))> (to-energy 1) 9e+16 1e+15)) I know that running the file in DrRacket will run the tests, but I'd like to time them. Thanks (again!), -Joe On Wed, Aug 8, 2012 at 1:46 PM, Matthias Felleisen <matth...@ccs.neu.edu>wrote: > > The submodules are woven together so wrapping (test) with (time ...) > should work fine. > > > On Aug 8, 2012, at 4:18 PM, Joe Gilray wrote: > > Thanks Matthias, > > Is there an easy way to "internally" time the duration of all tests? with > test-engine I could use (time (test)), with all the tests in a test > submodule do I have to do the timing externally? I.e "TimeThis raco test > myfile.rkt"? > > -Joe > > On Wed, Aug 8, 2012 at 6:31 AM, Matthias Felleisen > <matth...@ccs.neu.edu>wrote: > >> >> This first example shows how to use module+ test with test-engine: >> >> #lang racket >> >> (module+ test >> (require test-engine/racket-tests)) >> >> ;; Int -> Int >> ;; adds 2 to n >> >> (module+ test ;; setting up examples before you define the function >> (check-expect (add2 3) 4) >> (check-expect (add2 3) 5)) >> >> (define (add2 n) >> (+ n 3)) >> >> (module+ test >> (test)) ;; calling this function controls when you run the 'test suite' >> >> All you need to know is that drracket requires submodules named test when >> you run the program, though this default can be changed via the language >> preference (see submodules to run, drop down menu). At the command line, >> racket test foo.rkt will require the test submodules but otherwise they are >> not run. >> >> ;; --- >> >> This second example translates the first to rackunit: >> >> #lang racket >> >> (module+ test >> (require rackunit)) >> >> ;; Int -> Int >> ;; adds 2 to n >> >> (module+ test >> (check-equal? (add2 3) 4) >> (check-equal? (add2 3) 5)) >> >> (define (add2 n) >> (+ n 2)) >> >> The tests are always run when you require the test submodule (see above). >> >> ;; --- >> >> With rackunit, you can also define test-suites (see docs, especially >> define/provide-test-suite. You compose these test suites, provide them, and >> run them if and when you wish by loading the proper module. >> >> Please search for an earlier post of mine where I explain a specific >> arrangement of separate modules to make all of this convenient. >> >> With submodules, you can stick these test suites into submodules and >> require those in some global test module. >> >> -- Matthias >> >> >> >> >> >> On Aug 7, 2012, at 10:31 PM, Joe Gilray wrote: >> >> Hi Matthias, >> >> I will take you up on your offer of an example... thanks! >> >> I've read about test-suite and test-case, but I'm not sure of the best >> way to test each utility in a file. >> >> Ideally the tests would be grouped with the functions: >> >> (define f1 ...) >> (module+ test >> (test-equal? "f1-tests" (f1 1 2) 1) >> (test-equal? "f1-tests" (f1 3 4) 4)) >> >> (define f2 ...) >> (module+ test >> (test-equal? "f2-tests" (f2 1 2) 1) >> (test-equal? "f2-tests" (f2 3 4) 4)) >> >> etc. >> >> I believe that the above scheme would work and run every time the >> enclosing file/module is run... right? >> >> What if I want to control when all the tests are run? Can I somehow >> build a trigger to fire off all the tests? From the docs it looks like >> this is the purpose of test-suite, but I don't know the mechanics when the >> test cases are spread out in the file... maybe that isn't allowed and I >> will need to group the tests? >> >> Thanks again, >> -Joe >> >> On Tue, Aug 7, 2012 at 6:00 PM, Matthias Felleisen >> <matth...@ccs.neu.edu>wrote: >> >>> >>> On Aug 7, 2012, at 8:24 PM, Joe Gilray wrote: >>> >>> > Now that 5.3 is out, I've been reading about submodules and their >>> support for testing. In the past I used test-engine/racket-tests for >>> testing. >>> > >>> > Can someone please give me a rundown of when to use rackunit and >>> advantages/disadvantages of test-engine and rackunit? >>> >>> -- test-engine provides test support for the teaching languages of >>> DrRacket. >>> -- rackunit is for 'adult' programmers, meaning programmers who have >>> outgrown teaching languages. >>> >>> You can still use test-engine in plain #lang racket, and you could use >>> rackunit in teaching languages. >>> >>> You can also use both with submodules especially (module+ test ...). >>> Holler if you need examples -- Matthias >>> >>> >>> >>> >>> >> >> > >
____________________ Racket Users list: http://lists.racket-lang.org/users