Mercurial
comparison mrjunejune/test/latex_renderer_test.c @ 248:b8b6e726964a
[style] Use Dowa type aliases in C
Co-authored-by: Copilot <[email protected]>
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Tue, 04 Aug 2026 02:44:06 -0700 |
| parents | 70f2a3dafc1c |
| children |
comparison
equal
deleted
inserted
replaced
| 247:70f2a3dafc1c | 248:b8b6e726964a |
|---|---|
| 30 "\\documentclass{article}\n" | 30 "\\documentclass{article}\n" |
| 31 "\\begin{document}\n" | 31 "\\begin{document}\n" |
| 32 "Hello from the sandbox. $x^2 + y^2 = z^2$\n" | 32 "Hello from the sandbox. $x^2 + y^2 = z^2$\n" |
| 33 "\\end{document}\n"; | 33 "\\end{document}\n"; |
| 34 Latex_Render_Result result = Latex_Render( | 34 Latex_Render_Result result = Latex_Render( |
| 35 (const uint8_t *)valid, | 35 (const uint8 *)valid, |
| 36 strlen(valid)); | 36 strlen(valid)); |
| 37 if (result.status != LATEX_RENDER_OK) | 37 if (result.status != LATEX_RENDER_OK) |
| 38 fprintf(stderr, "%s\n", result.diagnostics ? result.diagnostics : "unknown error"); | 38 fprintf(stderr, "%s\n", result.diagnostics ? result.diagnostics : "unknown error"); |
| 39 assert(result.status == LATEX_RENDER_OK); | 39 assert(result.status == LATEX_RENDER_OK); |
| 40 assert(result.pdf_size > 1000); | 40 assert(result.pdf_size > 1000); |
| 44 const char *invalid = | 44 const char *invalid = |
| 45 "\\documentclass{article}\n" | 45 "\\documentclass{article}\n" |
| 46 "\\begin{document}\n" | 46 "\\begin{document}\n" |
| 47 "\\notarealcommand\n" | 47 "\\notarealcommand\n" |
| 48 "\\end{document}\n"; | 48 "\\end{document}\n"; |
| 49 result = Latex_Render((const uint8_t *)invalid, strlen(invalid)); | 49 result = Latex_Render((const uint8 *)invalid, strlen(invalid)); |
| 50 assert(result.status == LATEX_RENDER_COMPILE_ERROR); | 50 assert(result.status == LATEX_RENDER_COMPILE_ERROR); |
| 51 assert(result.diagnostics); | 51 assert(result.diagnostics); |
| 52 assert(strstr(result.diagnostics, "Undefined control sequence")); | 52 assert(strstr(result.diagnostics, "Undefined control sequence")); |
| 53 Latex_Render_Result_Destroy(&result); | 53 Latex_Render_Result_Destroy(&result); |
| 54 | 54 |
| 55 const char *host_read = | 55 const char *host_read = |
| 56 "\\documentclass{article}\n" | 56 "\\documentclass{article}\n" |
| 57 "\\begin{document}\n" | 57 "\\begin{document}\n" |
| 58 "\\input{/etc/passwd}\n" | 58 "\\input{/etc/passwd}\n" |
| 59 "\\end{document}\n"; | 59 "\\end{document}\n"; |
| 60 result = Latex_Render((const uint8_t *)host_read, strlen(host_read)); | 60 result = Latex_Render((const uint8 *)host_read, strlen(host_read)); |
| 61 assert(result.status == LATEX_RENDER_COMPILE_ERROR); | 61 assert(result.status == LATEX_RENDER_COMPILE_ERROR); |
| 62 assert(result.diagnostics); | 62 assert(result.diagnostics); |
| 63 assert(!strstr(result.diagnostics, "root:x:")); | 63 assert(!strstr(result.diagnostics, "root:x:")); |
| 64 Latex_Render_Result_Destroy(&result); | 64 Latex_Render_Result_Destroy(&result); |
| 65 | 65 |
| 78 "\\immediate\\write18{touch %s}\n" | 78 "\\immediate\\write18{touch %s}\n" |
| 79 "Shell escape must stay disabled.\n" | 79 "Shell escape must stay disabled.\n" |
| 80 "\\end{document}\n", | 80 "\\end{document}\n", |
| 81 shell_path); | 81 shell_path); |
| 82 result = Latex_Render( | 82 result = Latex_Render( |
| 83 (const uint8_t *)shell_escape, | 83 (const uint8 *)shell_escape, |
| 84 strlen(shell_escape)); | 84 strlen(shell_escape)); |
| 85 assert(result.status == LATEX_RENDER_OK); | 85 assert(result.status == LATEX_RENDER_OK); |
| 86 assert(access(shell_path, F_OK) != 0); | 86 assert(access(shell_path, F_OK) != 0); |
| 87 Latex_Render_Result_Destroy(&result); | 87 Latex_Render_Result_Destroy(&result); |
| 88 | 88 |
| 89 uint8_t oversized[LATEX_SOURCE_MAX_BYTES + 1] = {0}; | 89 uint8 oversized[LATEX_SOURCE_MAX_BYTES + 1] = {0}; |
| 90 memset(oversized, 'x', sizeof(oversized)); | 90 memset(oversized, 'x', sizeof(oversized)); |
| 91 result = Latex_Render(oversized, sizeof(oversized)); | 91 result = Latex_Render(oversized, sizeof(oversized)); |
| 92 assert(result.status == LATEX_RENDER_INVALID_INPUT); | 92 assert(result.status == LATEX_RENDER_INVALID_INPUT); |
| 93 Latex_Render_Result_Destroy(&result); | 93 Latex_Render_Result_Destroy(&result); |
| 94 | 94 |
| 95 const char *infinite = | 95 const char *infinite = |
| 96 "\\documentclass{article}\n" | 96 "\\documentclass{article}\n" |
| 97 "\\begin{document}\n" | 97 "\\begin{document}\n" |
| 98 "\\loop\\iftrue\\repeat\n" | 98 "\\loop\\iftrue\\repeat\n" |
| 99 "\\end{document}\n"; | 99 "\\end{document}\n"; |
| 100 result = Latex_Render((const uint8_t *)infinite, strlen(infinite)); | 100 result = Latex_Render((const uint8 *)infinite, strlen(infinite)); |
| 101 assert(result.status == LATEX_RENDER_TIMEOUT); | 101 assert(result.status == LATEX_RENDER_TIMEOUT); |
| 102 Latex_Render_Result_Destroy(&result); | 102 Latex_Render_Result_Destroy(&result); |
| 103 | 103 |
| 104 assert(latex_workspace_count() == initial_workspaces); | 104 assert(latex_workspace_count() == initial_workspaces); |
| 105 return 0; | 105 return 0; |