Hex Artifact Content
Not logged in

Artifact eae56917e020c56106f13ff9b67aa08c772d7aa9:


0000: 0a 28 63 6f 6e 64 2d 65 78 70 61 6e 64 0a 20 28  .(cond-expand. (
0010: 63 68 69 63 6b 65 6e 0a 20 20 28 6c 6f 61 64 20  chicken.  (load 
0020: 22 66 6d 74 2d 6a 73 2d 63 68 69 63 6b 65 6e 2e  "fmt-js-chicken.
0030: 73 63 6d 22 29 29 0a 20 28 65 6c 73 65 29 29 0a  scm")). (else)).
0040: 0a 28 63 6f 6e 64 2d 65 78 70 61 6e 64 0a 20 28  .(cond-expand. (
0050: 63 68 69 63 6b 65 6e 0a 20 20 28 75 73 65 20 74  chicken.  (use t
0060: 65 73 74 29 0a 20 20 28 69 6d 70 6f 72 74 20 66  est).  (import f
0070: 6d 74 29 0a 20 20 28 69 6d 70 6f 72 74 20 66 6d  mt).  (import fm
0080: 74 2d 6a 73 29 29 0a 20 28 67 61 75 63 68 65 0a  t-js)). (gauche.
0090: 20 20 28 75 73 65 20 67 61 75 63 68 65 2e 74 65    (use gauche.te
00a0: 73 74 29 0a 20 20 28 75 73 65 20 74 65 78 74 2e  st).  (use text.
00b0: 66 6d 74 29 0a 20 20 28 75 73 65 20 74 65 78 74  fmt).  (use text
00c0: 2e 66 6d 74 2e 6a 73 29 0a 20 20 28 64 65 66 69  .fmt.js).  (defi
00d0: 6e 65 20 74 65 73 74 2d 62 65 67 69 6e 20 74 65  ne test-begin te
00e0: 73 74 2d 73 74 61 72 74 29 0a 20 20 28 64 65 66  st-start).  (def
00f0: 69 6e 65 20 6f 72 69 67 2d 74 65 73 74 20 28 77  ine orig-test (w
0100: 69 74 68 2d 6d 6f 64 75 6c 65 20 67 61 75 63 68  ith-module gauch
0110: 65 2e 74 65 73 74 20 74 65 73 74 29 29 0a 20 20  e.test test)).  
0120: 28 64 65 66 69 6e 65 2d 73 79 6e 74 61 78 20 74  (define-syntax t
0130: 65 73 74 0a 20 20 20 20 28 73 79 6e 74 61 78 2d  est.    (syntax-
0140: 72 75 6c 65 73 20 28 29 0a 20 20 20 20 20 20 28  rules ().      (
0150: 28 74 65 73 74 20 6e 61 6d 65 20 65 78 70 65 63  (test name expec
0160: 74 65 64 20 65 78 70 72 29 0a 20 20 20 20 20 20  ted expr).      
0170: 20 28 6f 72 69 67 2d 74 65 73 74 20 6e 61 6d 65   (orig-test name
0180: 20 65 78 70 65 63 74 65 64 20 28 6c 61 6d 62 64   expected (lambd
0190: 61 20 28 29 20 65 78 70 72 29 29 29 0a 20 20 20  a () expr))).   
01a0: 20 20 20 28 28 74 65 73 74 20 65 78 70 65 63 74     ((test expect
01b0: 65 64 20 65 78 70 72 29 0a 20 20 20 20 20 20 20  ed expr).       
01c0: 28 6f 72 69 67 2d 74 65 73 74 20 28 6c 65 74 20  (orig-test (let 
01d0: 28 28 73 20 28 77 69 74 68 2d 6f 75 74 70 75 74  ((s (with-output
01e0: 2d 74 6f 2d 73 74 72 69 6e 67 20 28 6c 61 6d 62  -to-string (lamb
01f0: 64 61 20 28 29 20 28 77 72 69 74 65 20 27 65 78  da () (write 'ex
0200: 70 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20  pr))))).        
0210: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62              (sub
0220: 73 74 72 69 6e 67 20 73 20 30 20 28 6d 69 6e 20  string s 0 (min 
0230: 36 30 20 28 73 74 72 69 6e 67 2d 6c 65 6e 67 74  60 (string-lengt
0240: 68 20 73 29 29 29 29 0a 20 20 20 20 20 20 20 20  h s)))).        
0250: 20 20 20 20 20 20 20 20 20 20 65 78 70 65 63 74            expect
0260: 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ed.             
0270: 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20       (lambda () 
0280: 65 78 70 72 29 29 29 0a 20 20 20 20 20 20 29 29  expr))).      ))
0290: 29 0a 20 28 65 6c 73 65 29 29 0a 0a 28 74 65 73  ). (else))..(tes
02a0: 74 2d 62 65 67 69 6e 20 22 66 6d 74 2d 6a 73 22  t-begin "fmt-js"
02b0: 29 0a 0a 28 74 65 73 74 20 22 76 61 72 20 66 6f  )..(test "var fo
02c0: 6f 20 3d 20 31 20 2b 20 32 3b 5c 6e 22 0a 20 20  o = 1 + 2;\n".  
02d0: 20 20 28 66 6d 74 20 23 66 20 28 6a 73 2d 65 78    (fmt #f (js-ex
02e0: 70 72 20 27 28 25 76 61 72 20 66 6f 6f 20 28 2b  pr '(%var foo (+
02f0: 20 31 20 32 29 29 29 29 29 0a 0a 28 74 65 73 74   1 2)))))..(test
0300: 20 22 76 61 72 20 66 6f 6f 20 3d 20 31 20 2b 20   "var foo = 1 + 
0310: 32 3b 5c 6e 22 0a 20 20 20 20 28 66 6d 74 20 23  2;\n".    (fmt #
0320: 66 20 28 6a 73 2d 65 78 70 72 20 27 28 25 62 65  f (js-expr '(%be
0330: 67 69 6e 20 28 25 76 61 72 20 66 6f 6f 20 28 2b  gin (%var foo (+
0340: 20 31 20 32 29 29 29 29 29 29 0a 0a 28 74 65 73   1 2))))))..(tes
0350: 74 20 22 66 75 6e 63 74 69 6f 6e 20 73 71 75 61  t "function squa
0360: 72 65 28 78 29 20 7b 0a 20 20 20 20 72 65 74 75  re(x) {.    retu
0370: 72 6e 20 78 20 2a 20 78 3b 0a 7d 22 0a 20 20 20  rn x * x;.}".   
0380: 20 28 66 6d 74 20 23 66 20 28 6a 73 2d 66 75 6e   (fmt #f (js-fun
0390: 63 74 69 6f 6e 20 27 73 71 75 61 72 65 20 27 28  ction 'square '(
03a0: 78 29 20 27 28 2a 20 78 20 78 29 29 29 29 0a 0a  x) '(* x x))))..
03b0: 28 74 65 73 74 20 22 7b 5c 22 66 6f 6f 5c 22 3a  (test "{\"foo\":
03c0: 20 5b 31 2c 20 32 2c 20 33 5d 2c 20 5c 22 62 61   [1, 2, 3], \"ba
03d0: 72 5c 22 3a 20 5c 22 62 61 7a 5c 22 7d 22 0a 20  r\": \"baz\"}". 
03e0: 20 20 20 28 66 6d 74 20 23 66 20 28 6a 73 2d 65     (fmt #f (js-e
03f0: 78 70 72 20 27 28 25 6f 62 6a 65 63 74 20 28 22  xpr '(%object ("
0400: 66 6f 6f 22 20 2e 20 23 28 31 20 32 20 33 29 29  foo" . #(1 2 3))
0410: 20 28 22 62 61 72 22 20 2e 20 22 62 61 7a 22 29   ("bar" . "baz")
0420: 29 29 29 29 0a 0a 28 74 65 73 74 2d 65 6e 64 29  ))))..(test-end)
0430: 0a                                               .