47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
 | 
						|
(cond-expand
 | 
						|
 (chicken
 | 
						|
  (load "fmt-js-chicken.scm"))
 | 
						|
 (else))
 | 
						|
 | 
						|
(cond-expand
 | 
						|
 (chicken
 | 
						|
  (use test)
 | 
						|
  (import fmt)
 | 
						|
  (import fmt-js))
 | 
						|
 (gauche
 | 
						|
  (use gauche.test)
 | 
						|
  (use text.fmt)
 | 
						|
  (use text.fmt.js)
 | 
						|
  (define test-begin test-start)
 | 
						|
  (define orig-test (with-module gauche.test test))
 | 
						|
  (define-syntax test
 | 
						|
    (syntax-rules ()
 | 
						|
      ((test name expected expr)
 | 
						|
       (orig-test name expected (lambda () expr)))
 | 
						|
      ((test expected expr)
 | 
						|
       (orig-test (let ((s (with-output-to-string (lambda () (write 'expr)))))
 | 
						|
                    (substring s 0 (min 60 (string-length s))))
 | 
						|
                  expected
 | 
						|
                  (lambda () expr)))
 | 
						|
      )))
 | 
						|
 (else))
 | 
						|
 | 
						|
(test-begin "fmt-js")
 | 
						|
 | 
						|
(test "var foo = 1 + 2;\n"
 | 
						|
    (fmt #f (js-expr '(%var foo (+ 1 2)))))
 | 
						|
 | 
						|
(test "var foo = 1 + 2;\n"
 | 
						|
    (fmt #f (js-expr '(%begin (%var foo (+ 1 2))))))
 | 
						|
 | 
						|
(test "function square(x) {
 | 
						|
    return x * x;
 | 
						|
}"
 | 
						|
    (fmt #f (js-function 'square '(x) '(* x x))))
 | 
						|
 | 
						|
(test "{\"foo\": [1, 2, 3], \"bar\": \"baz\"}"
 | 
						|
    (fmt #f (js-expr '(%object ("foo" . #(1 2 3)) ("bar" . "baz")))))
 | 
						|
 | 
						|
(test-end)
 |