Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 32 additions & 32 deletions TeXmacs/plugins/maxima/progs/maxima/maxima-input.scm
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,35 @@
(define (maxima-input-var-row r)
(if (nnull? r)
(begin
(display ", ")
(plugin-output ", ")
(plugin-input (car r))
(maxima-input-var-row (cdr r))
) ;begin
) ;if
) ;define

(define (maxima-input-row r)
(display "[")
(plugin-output "[")
(plugin-input (car r))
(maxima-input-var-row (cdr r))
(display "]")
(plugin-output "]")
) ;define

(define (maxima-input-var-rows t)
(if (nnull? t)
(begin
(display ", ")
(plugin-output ", ")
(maxima-input-row (car t))
(maxima-input-var-rows (cdr t))
) ;begin
) ;if
) ;define

(define (maxima-input-rows t)
(display "matrix(")
(plugin-output "matrix(")
(maxima-input-row (car t))
(maxima-input-var-rows (cdr t))
(display ")")
(plugin-output ")")
) ;define

(define (maxima-input-descend-last args)
Expand All @@ -59,32 +59,32 @@
) ;define

(define (maxima-input-det args)
(display "determinant(")
(plugin-output "determinant(")
(maxima-input-descend-last args)
(display ")")
(plugin-output ")")
) ;define

(define (maxima-input-binom args)
(display "binomial(")
(plugin-output "binomial(")
(plugin-input (car args))
(display ",")
(plugin-output ",")
(plugin-input (cadr args))
(display ")")
(plugin-output ")")
) ;define

(define (maxima-input-sqrt args)
(if (= (length args) 1)
(begin
(display "sqrt(")
(plugin-output "sqrt(")
(plugin-input (car args))
(display ")")
(plugin-output ")")
) ;begin
(begin
(display "(")
(plugin-output "(")
(plugin-input (car args))
(display ")^(1/(")
(plugin-output ")^(1/(")
(plugin-input (cadr args))
(display "))")
(plugin-output "))")
) ;begin
) ;if
) ;define
Expand All @@ -94,44 +94,44 @@
(if (nnull? (cdr args))
(begin
;; both lower and upper index
(display "tmsum(")
(plugin-output "tmsum(")
(plugin-input (car args))
(display ",")
(plugin-output ",")
(plugin-input (cadr args))
(display ",")
(plugin-output ",")
) ;begin
(begin
;; lower index only
(display "tmlsum(")
(plugin-output "tmlsum(")
(plugin-input (car args))
(display ",")
(plugin-output ",")
) ;begin
) ;if
(display "tmsum(")
(plugin-output "tmsum(")
) ;if
) ;define

(define (maxima-input-prod args)
(if (nnull? args)
(begin
(display "tmprod(")
(plugin-output "tmprod(")
(plugin-input (car args))
(if (nnull? (cdr args)) (begin (display ",") (plugin-input (cadr args))))
(display ",")
(if (nnull? (cdr args)) (begin (plugin-output ",") (plugin-input (cadr args))))
(plugin-output ",")
) ;begin
(display "tmprod(")
(plugin-output "tmprod(")
) ;if
) ;define

(define (maxima-input-int args)
(if (nnull? args)
(begin
(display "tmint(")
(plugin-output "tmint(")
(plugin-input (car args))
(if (nnull? (cdr args)) (begin (display ",") (plugin-input (cadr args))))
(display ",")
(if (nnull? (cdr args)) (begin (plugin-output ",") (plugin-input (cadr args))))
(plugin-output ",")
) ;begin
(display "integrate(")
(plugin-output "integrate(")
) ;if
) ;define

Expand All @@ -147,10 +147,10 @@
(cond ((== op "sum") (maxima-input-sum l))
((== op "prod") (maxima-input-prod l))
((== op "int") (maxima-input-int l))
(else (display op) (display "("))
(else (plugin-output op) (plugin-output "("))
) ;cond
(plugin-input body)
(display ")")
(plugin-output ")")
) ;let*
) ;define

Expand Down
65 changes: 65 additions & 0 deletions TeXmacs/progs/utils/plugins/plugin-cmd-test.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; MODULE : plugin-cmd-test.scm
;; DESCRIPTION : Regression test for plugin-cmd serialization support
;; COPYRIGHT : (C) 2026 Liii Network
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(import (liii check))

(check-set-mode! 'report-failed)

(use-modules (utils plugins plugin-cmd))
(load "./TeXmacs/plugins/maxima/progs/maxima/maxima-input.scm")

;; test-pre-serialize-passthrough
;; 普通字符串与多段落 document 原样透传

(define (test-pre-serialize-passthrough)
(check (pre-serialize "python" "1+1") => "1+1")
(check (pre-serialize "python" "print('中文')") => "print('中文')")
(check (pre-serialize "python" '(document "a" "b")) => '(document "a" "b"))
) ;define

;; test-pre-serialize-document
;; 单层 document 剥壳,递归到内容本身

(define (test-pre-serialize-document)
(check (pre-serialize "python" '(document "1+1")) => "1+1")
) ;define

;; test-pre-serialize-math
;; math 输入按 lan 的转换规则渲染成插件语言文本(generic 规则兜底)

(define (test-pre-serialize-math)
(check (pre-serialize "python" '(math (frac "1" "2"))) => "(1/2)")
(check (pre-serialize "python" '(math (concat "x" (rsup "2")))) => "x^2")
(check (pre-serialize "python" '(math "<alpha>")) => "alpha")
(check (pre-serialize "python" '(math "<mathpi>")) => "(4*atan(1))")
) ;define

;; test-pre-serialize-document-math
;; document 剥壳后递归进入 math 分支

(define (test-pre-serialize-document-math)
(check (pre-serialize "python" '(document (math (frac "1" "2")))) => "(1/2)")
) ;define

;; test-pre-serialize-math-maxima
;; 插件自定义 handler(maxima-input.scm)的输出同样写入独立 port

(define (test-pre-serialize-math-maxima)
(check (pre-serialize "maxima" '(math "<mathi>")) => "%i")
(check (pre-serialize "maxima" '(math (binom "n" "k"))) => "binomial(n,k)")
(check (pre-serialize "maxima" '(math (sqrt "2"))) => "sqrt(2)")
) ;define

(tm-define (regtest-plugin-cmd)
(test-pre-serialize-passthrough)
(test-pre-serialize-document)
(test-pre-serialize-math)
(test-pre-serialize-document-math)
(test-pre-serialize-math-maxima)
(check-report)
) ;tm-define
Loading
Loading