:: This library contains unit tests for doccords. :: /+ *test, *dprint :: => => :: This core is for testing core and chapter docs. :> core-summary :> :> core-description |% %core-test :> chapter-summary :> :> chapter-description +| %chapter-test ++ empty ~ -- :: :> arms used for testing doccords |% %test-arms +| %types +$ arm-dox [tape what what what] +$ core-dox [tape what] +$ chapter-dox [tape what] :: +| %helper-functions ++ get-item |= a=(list term) ^- item +:(find-item-in-type a -:!>(.)) :: ++ get-arm-dox |= a=(list term) ^- arm-dox =/ itm=item (get-item a) ?> ?=([%arm *] itm) [name adoc pdoc cdoc]:itm :: ++ get-core-dox |= a=(list term) ^- core-dox =/ itm=item (get-item a) ?> ?=([%core *] itm) [name docs]:itm :: ++ get-chapter-dox |= a=(list term) ^- chapter-dox =/ itm=item (get-item a) ?> ?=([%chapter *] itm) [name docs]:itm :: ++ arm-check |= [arms=(list term) dox=(trel ? ? ?)] =+ [adoc pdoc cdoc]=[`['arm-doc' ~] `['product-doc' ~] `['core-doc' ~]] ^- tang =| res=tang |- ?~ arms res %= $ arms t.arms res %+ weld res %+ expect-eq !> ^- arm-dox :* (trip i.arms) ?:(p.dox adoc *what) ?:(q.dox pdoc *what) ?:(r.dox cdoc *what) == :: !> (get-arm-dox ~[i.arms]) == :: ++ run-arm-tests |= [dox=(trel ? ? ?)] ^- tang =/ num (sub 3 :(add p.dox q.dox r.dox)) =/ prefix=term ;: (cury cat 3) %arm- ?:(p.dox %adoc- ~) ?:(q.dox %pdoc- ~) ?:(r.dox %cdoc- ~) == =/ posts=(list term) ?+ num ~ %1 ~[%pre %post] %2 ~[%pre-pre %post-pre %post-post] %3 :~ %pre-pre-pre %pre-pre-post %pre-post-pre %post-pre-pre %pre-post-post %post-pre-post %post-post-pre == == %+ arm-check %+ turn posts |= [postfix=term] `term`(cat 3 prefix postfix) dox :: +| %batch-comments :> +foo: a foo :> +bar: a bar :> a very bar foo :> $baz: a baz :> $boz: a boz :> a very boz baz :> +foobar: a foobar :> $bazboz: a bazbor ++ foo ~ ++ bar ~ +$ baz * +$ boz * ++ foobar [~ ~] +$ bazboz [* *] :: +| %docs-for-arms ++ no-doc ~ :: :> +arm-adoc-pre: arm-doc ++ arm-adoc-pre ~ :: ++ arm-adoc-post :< arm-doc ~ :: ++ arm-pdoc-pre :> product-doc 'foo' ++ arm-pdoc-post 'foo' :< product-doc :: ++ arm-cdoc-pre |% :> core-doc ++ $ ~ -- :: ++ arm-cdoc-post |% ++ $ :< core-doc ~ -- :: :> +arm-adoc-pdoc-pre-pre: arm-doc ++ arm-adoc-pdoc-pre-pre :> product-doc 'foo' :: ++ arm-adoc-pdoc-post-pre :< arm-doc :> product-doc 'foo' :: ++ arm-adoc-pdoc-post-post :< arm-doc 'foo' :< product-doc :: :> +arm-adoc-cdoc-pre-pre: arm-doc ++ arm-adoc-cdoc-pre-pre |% :> core-doc ++ $ ~ -- :: ++ arm-adoc-cdoc-post-pre :< arm-doc |% :> core-doc ++ $ ~ -- :: ++ arm-adoc-cdoc-post-post :< arm-doc |% ++ $ :< core-doc ~ -- :: ++ arm-pdoc-cdoc-pre-pre :> product-doc |% :> core-doc ++ $ ~ -- ++ arm-pdoc-cdoc-post-pre |% :> core-doc ++ $ ~ -- :< product-doc :: ++ arm-pdoc-cdoc-post-post |% ++ $ :< core-doc ~ -- :< product-doc :: :> +arm-adoc-pdoc-cdoc-pre-pre-pre: arm-doc ++ arm-adoc-pdoc-cdoc-pre-pre-pre :> product-doc |% :> core-doc ++ $ ~ -- :: ++ arm-adoc-pdoc-cdoc-post-pre-pre :< arm-doc :> product-doc |% :> core-doc ++ $ ~ -- :: :> +arm-adoc-pdoc-cdoc-pre-post-pre: arm-doc ++ arm-adoc-pdoc-cdoc-pre-post-pre |% :> core-doc ++ $ ~ -- :< product-doc :: :> +arm-adoc-pdoc-cdoc-pre-pre-post: arm-doc ++ arm-adoc-pdoc-cdoc-pre-pre-post :> product-doc |% ++ $ :< core-doc ~ -- :: ++ arm-adoc-pdoc-cdoc-post-post-pre :< arm-doc |% :> core-doc ++ $ ~ -- :< product-doc :: ++ arm-adoc-pdoc-cdoc-post-pre-post :< arm-doc :> product-doc |% ++ $ :< core-doc ~ -- :: :> +arm-adoc-pdoc-cdoc-pre-post-post: arm-doc ++ arm-adoc-pdoc-cdoc-pre-post-post |% ++ $ :< core-doc ~ -- :< product-doc :: ++ arm-adoc-pdoc-cdoc-post-post-post :< arm-doc |% ++ $ :< core-doc ~ -- :< product-doc :: -- :: :> contains the actual tests to be run by -test |% %dprint-tests :: +| %batch-tests :: ++ test-b-foo :: %+ expect-eq :: !> +| %arm-tests :: ++ test-no-doc %+ expect-eq !> ^- arm-dox ["no-doc" *what *what *what] :: !> (get-arm-dox ~[%no-doc]) :: ++ test-adoc (run-arm-tests & | |) ++ test-pdoc (run-arm-tests | & |) ++ test-cdoc (run-arm-tests | | &) ++ test-adoc-pdoc (run-arm-tests & & |) ++ test-adoc-cdoc (run-arm-tests & | &) ++ test-pdoc-cdoc (run-arm-tests | & &) ++ test-adoc-pdoc-cdoc (run-arm-tests & & &) :: +| %core-tests ++ test-core %+ expect-eq !> ^- core-dox ["core-test" `['core-summary' ~[~[[%.y 'core-description']]]]] :: !> (get-core-dox ~[%core-test]) :: ++ test-chapter %+ expect-eq !> ^- chapter-dox ["chapter-test" `['chapter-summary' ~[~[[%.y 'chapter-description']]]]] :: !> (get-chapter-dox ~[%core-test %chapter-test]) :: --