mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-20 00:41:05 +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 ocfd = Unix.descr_of_out_channel oc in
|
||||||
let pid = Unix.create_process_env catala_exe cmd env cmd_in_rd ocfd ocfd in
|
let pid = Unix.create_process_env catala_exe cmd env cmd_in_rd ocfd ocfd in
|
||||||
Unix.close cmd_in_rd;
|
Unix.close cmd_in_rd;
|
||||||
Queue.iter (output_string command_oc) program;
|
Seq.iter (output_string command_oc) program;
|
||||||
close_out command_oc;
|
close_out command_oc;
|
||||||
let return_code =
|
let return_code =
|
||||||
match Unix.waitpid [] pid with
|
match Unix.waitpid [] pid with
|
||||||
@ -94,7 +94,18 @@ let run_inline_tests catala_exe catala_opts filename =
|
|||||||
skip_block lines
|
skip_block lines
|
||||||
| Some args ->
|
| Some args ->
|
||||||
let args = String.split_on_char ' ' args in
|
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)
|
skip_block lines)
|
||||||
and skip_block lines =
|
and skip_block lines =
|
||||||
match Seq.uncons lines with
|
match Seq.uncons lines with
|
||||||
|
@ -62,7 +62,6 @@ let wrap_latex
|
|||||||
\usepackage{color}
|
\usepackage{color}
|
||||||
\usepackage{longtable}
|
\usepackage{longtable}
|
||||||
\usepackage{booktabs,tabularx}
|
\usepackage{booktabs,tabularx}
|
||||||
\usepackage{framed}
|
|
||||||
\usepackage{newunicodechar}
|
\usepackage{newunicodechar}
|
||||||
\usepackage{textcomp}
|
\usepackage{textcomp}
|
||||||
\usepackage[dvipsnames]{xcolor}
|
\usepackage[dvipsnames]{xcolor}
|
||||||
@ -321,9 +320,12 @@ let ast_to_latex
|
|||||||
~(print_only_law : bool)
|
~(print_only_law : bool)
|
||||||
(fmt : Format.formatter)
|
(fmt : Format.formatter)
|
||||||
(program : A.program) : unit =
|
(program : A.program) : unit =
|
||||||
Format.pp_print_list
|
Format.pp_open_vbox fmt 0;
|
||||||
~pp_sep:(fun fmt () -> Format.fprintf fmt "\n\n")
|
List.iter
|
||||||
(law_structure_to_latex language print_only_law)
|
(fun item ->
|
||||||
fmt program.program_items;
|
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"
|
Message.emit_debug "Lines of Catala inside literate source code: %d"
|
||||||
!lines_of_code
|
!lines_of_code
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
> Module Test_grave_char_en
|
||||||
|
|
||||||
## Law text should be able to contain grave accent '`'.
|
## Law text should be able to contain grave accent '`'.
|
||||||
|
|
||||||
This is a block of law text containing `.
|
This is a block of law text containing `.
|
||||||
@ -48,22 +50,60 @@ $ catala Interpret -s A
|
|||||||
```
|
```
|
||||||
|
|
||||||
```catala-test-inline
|
```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
|
$ catala Interpret -s A
|
||||||
[RESULT] Computation successful! Results:
|
[RESULT] Computation successful! Results:
|
||||||
[RESULT] literate_parsing_is_ok = true
|
[RESULT] literate_parsing_is_ok = true
|
||||||
```
|
\end{verbatim}
|
||||||
```catala-test-inline
|
|
||||||
$ catala Interpret_Lcalc -s A --avoid-exceptions --optimize
|
\begin{verbatim}
|
||||||
[RESULT] Computation successful! Results:
|
$ catala Interpret -s A
|
||||||
[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] Computation successful! Results:
|
||||||
[RESULT] literate_parsing_is_ok = true
|
[RESULT] literate_parsing_is_ok = true
|
||||||
|
\end{verbatim}
|
||||||
```
|
```
|
||||||
|
@ -40,15 +40,3 @@ $ catala Interpret -s A
|
|||||||
[RESULT] Computation successful! Results:
|
[RESULT] Computation successful! Results:
|
||||||
[RESULT] literate_parsing_is_ok = vrai
|
[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] Computation successful! Results:
|
||||||
[RESULT] literate_parsing_is_ok = prawda
|
[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