mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-19 00:15:39 +03:00
Add test for literate LaTeX output
This commit is contained in:
parent
a2d82d01f5
commit
eb4ba114d2
@ -47,7 +47,7 @@ let run_catala_test catala_exe catala_opts file program args oc =
|
||||
let ocfd = Unix.descr_of_out_channel oc in
|
||||
let pid = Unix.create_process_env catala_exe cmd env cmd_in_rd ocfd ocfd in
|
||||
Unix.close cmd_in_rd;
|
||||
Queue.iter (output_string command_oc) program;
|
||||
Seq.iter (output_string command_oc) program;
|
||||
close_out command_oc;
|
||||
let return_code =
|
||||
match Unix.waitpid [] pid with
|
||||
@ -94,7 +94,18 @@ let run_inline_tests catala_exe catala_opts filename =
|
||||
skip_block lines
|
||||
| Some args ->
|
||||
let args = String.split_on_char ' ' args in
|
||||
run_catala_test catala_exe catala_opts filename lines_until_now args oc;
|
||||
let program =
|
||||
let rec drop_last seq () =
|
||||
match seq () with
|
||||
| Seq.Nil -> assert false
|
||||
| Seq.Cons (x, next) -> (
|
||||
match next () with
|
||||
| Seq.Nil -> Seq.Nil
|
||||
| Seq.Cons _ as s -> Seq.Cons (x, drop_last (fun () -> s)))
|
||||
in
|
||||
Queue.to_seq lines_until_now |> drop_last |> drop_last
|
||||
in
|
||||
run_catala_test catala_exe catala_opts filename program args oc;
|
||||
skip_block lines)
|
||||
and skip_block lines =
|
||||
match Seq.uncons lines with
|
||||
|
@ -62,7 +62,6 @@ let wrap_latex
|
||||
\usepackage{color}
|
||||
\usepackage{longtable}
|
||||
\usepackage{booktabs,tabularx}
|
||||
\usepackage{framed}
|
||||
\usepackage{newunicodechar}
|
||||
\usepackage{textcomp}
|
||||
\usepackage[dvipsnames]{xcolor}
|
||||
@ -321,9 +320,12 @@ let ast_to_latex
|
||||
~(print_only_law : bool)
|
||||
(fmt : Format.formatter)
|
||||
(program : A.program) : unit =
|
||||
Format.pp_print_list
|
||||
~pp_sep:(fun fmt () -> Format.fprintf fmt "\n\n")
|
||||
(law_structure_to_latex language print_only_law)
|
||||
fmt program.program_items;
|
||||
Format.pp_open_vbox fmt 0;
|
||||
List.iter
|
||||
(fun item ->
|
||||
law_structure_to_latex language print_only_law fmt item;
|
||||
Format.pp_print_cut fmt ())
|
||||
program.program_items;
|
||||
Format.pp_close_box fmt ();
|
||||
Message.emit_debug "Lines of Catala inside literate source code: %d"
|
||||
!lines_of_code
|
||||
|
@ -1,3 +1,5 @@
|
||||
> Module Test_grave_char_en
|
||||
|
||||
## Law text should be able to contain grave accent '`'.
|
||||
|
||||
This is a block of law text containing `.
|
||||
@ -48,22 +50,60 @@ $ catala Interpret -s A
|
||||
```
|
||||
|
||||
```catala-test-inline
|
||||
$ catala latex
|
||||
|
||||
\textbf{This defines the catala module \textsc{Test_grave_char_en}}
|
||||
|
||||
\subsection{Law text should be able to contain grave accent ``'.}
|
||||
|
||||
This is a block of law text containing `. This allows to:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
use \texttt{Markdown} code block inside \texttt{Catala} files,
|
||||
\item
|
||||
\emph{escape} special characters such as \texttt{\#} or
|
||||
\texttt{\textgreater{}},
|
||||
\item
|
||||
use Fenced Code Blocks:
|
||||
\end{itemize}
|
||||
|
||||
\begin{verbatim}
|
||||
let () = print_endline "Hello world!"
|
||||
\end{verbatim}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\},numbers=left,firstnumber=19,stepnumber=1,label={\hspace*{\fill}\texttt{test\_grave\_char\_en.catala\_en}}]
|
||||
\PY{l+s}{```catala}
|
||||
\PY{k+kr}{declaration}\PY{l+s}{ }\PY{k+kr}{scope}\PY{l+s}{ }\PY{n+nc}{A}\PY{o}{:}
|
||||
\PY{l+s}{ }\PY{l+s}{ }\PY{k+kd}{context}\PY{l+s}{ }\PY{k+kd}{output}\PY{l+s}{ }\PY{n+nv}{literate\PYZus{}parsing\PYZus{}is\PYZus{}ok}\PY{l+s}{ }\PY{k+kr}{content}\PY{l+s}{ }\PY{k+kt}{boolean}
|
||||
|
||||
\PY{k+kr}{scope}\PY{l+s}{ }\PY{n+nc}{A}\PY{o}{:}
|
||||
\PY{l+s}{ }\PY{l+s}{ }\PY{k+kr}{definition}\PY{l+s}{ }\PY{n+nv}{literate\PYZus{}parsing\PYZus{}is\PYZus{}ok}\PY{l+s}{ }\PY{k+kr}{equals}\PY{l+s}{ }\PY{k+kc}{true}
|
||||
\PY{l+s}{```}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
Even after \texttt{Catala} code block:
|
||||
|
||||
\begin{verbatim}
|
||||
int main(void) { return 0; }
|
||||
\end{verbatim}
|
||||
|
||||
\begin{verbatim}
|
||||
$ catala Typecheck --check-invariants
|
||||
[RESULT] All invariant checks passed
|
||||
[RESULT] Typechecking successful!
|
||||
\end{verbatim}
|
||||
|
||||
\begin{verbatim}
|
||||
$ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = true
|
||||
```
|
||||
```catala-test-inline
|
||||
$ catala Interpret_Lcalc -s A --avoid-exceptions --optimize
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = true
|
||||
```
|
||||
```catala-test-inline
|
||||
$ catala Interpret_Lcalc -s A --avoid-exceptions --optimize
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = true
|
||||
```
|
||||
```catala-test-inline
|
||||
$ catala Interpret_Lcalc -s A --avoid-exceptions --optimize
|
||||
\end{verbatim}
|
||||
|
||||
\begin{verbatim}
|
||||
$ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = true
|
||||
\end{verbatim}
|
||||
```
|
||||
|
@ -40,15 +40,3 @@ $ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = vrai
|
||||
```
|
||||
|
||||
```catala-test-inline
|
||||
$ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = vrai
|
||||
```
|
||||
|
||||
```catala-test-inline
|
||||
$ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = vrai
|
||||
```
|
||||
|
@ -32,15 +32,3 @@ $ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = prawda
|
||||
```
|
||||
|
||||
```catala-test-inline
|
||||
$ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = prawda
|
||||
```
|
||||
|
||||
```catala-test-inline
|
||||
$ catala Interpret -s A
|
||||
[RESULT] Computation successful! Results:
|
||||
[RESULT] literate_parsing_is_ok = prawda
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user