urbit/pkg/arvo/tests/lib/dprint.hoon
2022-07-01 10:39:01 -04:00

293 lines
5.8 KiB
Plaintext

:: 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])
::
--