source: project/release/5/slib-prec/trunk/tests/slib-prec-test.scm @ 38716

Last change on this file since 38716 was 38716, checked in by Kon Lovett, 4 months ago

split grammers, strict-types

File size: 2.3 KB
Line 
1;;;; slib-prec-test.scm
2
3(import test)
4
5(test-begin "SLIB Precedence Parser")
6
7(import slib-prec)
8
9;;
10
11;;;
12
13(import (chicken base))
14(import utf8)
15(import utf8-srfi-13)
16
17;; Operator Aliaes
18
19(define ^ expt)
20
21;;
22
23;init by id-# grammar lookup
24;(define-constant DEFAULT-GRAMMARS '(standard disp2d tex null scheme schemepretty))
25(define DEFAULT-GRAMMARS '(standard disp2d tex null scheme schemepretty))
26(clear-grammar-ids)
27(grammar-id-name-setup! DEFAULT-GRAMMARS)
28;(grammar-id-name-setup! `(,@DEFAULT-GRAMMARS))
29
30(active-grammar-set! 'standard #f 'schemepretty)
31
32;;
33
34(test-group "Grammer IDs"
35  (test (length DEFAULT-GRAMMARS) (count-of-grammar-ids))
36  (test 'standard (grammar-id-name 0))
37  (test 'scheme (grammar-id-name 4))
38)
39
40;;
41
42(define-syntax test-parse
43  (syntax-rules ()
44    ((test-parse ?out ?in)
45      (test ?in ?out (read-sexp-from-string ?in)) )
46    ((test-parse ?msg ?out ?in)
47      (test ?msg ?out (read-sexp-from-string ?in)) ) ) )
48
49(test-group "Jacal Grammar (English)"
50  (test-parse '(+ 1 (* 2 a)) "1 + 2 * a")
51  (test-parse '(* (+ 1 2) a) "(1 + 2) * a")
52  (test-parse '(* (+ 1 2) (f a b)) "(1 + 2) * f(a, b)")
53  (test-parse '(or (/ (* (+ 1 2) (f a b)) 27.9)) "{(1 + 2) * f(a, b) / 27.9}")
54
55  ;FIXME handle ratios
56  ;(test-parse '(* (+ 1 2) 1/5) "(1 + 2) * 1/5")
57  (test-parse "N/D (ratio) => (/ N D)" '(/ (* (+ 1 2) 1) 5) "(1 + 2) * 1/5")
58
59  (test 15 (eval (read-sexp-from-string "(1 + 2) * 5;")))
60  (test 15.0 (eval (read-sexp-from-string "(1.0 + 2) * 5")))
61  (test 3/5 (eval (read-sexp-from-string "(1 + 2) * 1/5")))
62
63  (test 8 (eval (read-sexp-from-string "2**3")))
64)
65
66;;
67
68#| ;comment to activate for csi (csc needs extension)
69(read-syntax-setup!)
70
71(test-group "Reader #{...}"
72  (test "w/ spaces" 3/5 #{ (1 + 2) / 5 }) ;(* (+ 1 2) 5)
73  (test "w/o spaces" 3/5 #{(1+2)/5})      ;(* (+ 1 2) 5)
74  (test 1 #{ {1} })                       ;(or 1)
75  (test #(1) #{ [1] })                    ;(vector 1)
76  (test 8 #{ expt(2, 3) })                ;(expt 2 3)
77  (test 8 #{ 2**3 })                      ;(expt 2 3)
78)
79
80(test-group "Reader #<id>{...}"
81  (test 15 #0{(1 + 2) * 5}) ;(* (+ 1 2) 5)
82  (test 1 #0{{1}})          ;(or 1)
83  (test 8 #0{expt(2,3)})    ;(expt 2 3)
84  (test 8 #0{2^3})          ;(expt 2 3)
85  (test #(1) #0{[1]})       ;(vector 1)
86  (test #(1) #1{[1]})       ;(vector 1)
87)
88|#
89
90;;;
91
92(test-end "SLIB Precedence Parser")
93
94::
95
96(test-exit)
Note: See TracBrowser for help on using the repository browser.