diff options
Diffstat (limited to 't/12_g2p_templated.t')
-rw-r--r-- | t/12_g2p_templated.t | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/t/12_g2p_templated.t b/t/12_g2p_templated.t new file mode 100644 index 0000000..7956443 --- /dev/null +++ b/t/12_g2p_templated.t @@ -0,0 +1,225 @@ +#!/usr/bin/guile -s +!# +; Basic g2p template tests +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Copyright (C) 2008 Omer Zak. +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2.1 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public License +; along with this library, in a file named COPYING; if not, write to the +; Free Software Foundation, Inc., 59 Temple Place, Suite 330, +; Boston, MA 02111-1307 USA +; +; For licensing issues, contact <w1@zak.co.il>. +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +(use-modules (guiletap)) +(use-modules (pyguile)) + +(plan 36) + +(is-ok 1 "real" "1.0" + (python-apply '("__builtin__" "repr") '(1.0) '() (list g2p_list2Tuple g2p_real2Float))) + +(is-ok 2 "int" "3" + (python-apply '("__builtin__" "repr") '(3) '() (list g2p_list2Tuple g2p_num2Int))) + +(is-ok 3 "mixed int-real" "[4, 5.0, 6, 7.0, 8]" + (python-apply '("__builtin__" "repr") '((4 5 6 7 8)) '() + (list g2p_list2Tuple (list g2p_list2List g2p_num2Int g2p_real2Float)))) + +(is-ok 4 "mixed int-real(tuple)" "(4, 5.0, 6, 7.0, 8)" + (python-apply '("__builtin__" "repr") '((4 5 6 7 8)) '() + (list g2p_list2Tuple (list g2p_list2Tuple g2p_num2Int g2p_real2Float)))) + +(is-ok 5 "list2Tuple" "(4.0, 5.0, 6.0, 7.0, 8.0)" + (python-apply '("__builtin__" "repr") '((4 5 6 7 8)) '() + (list g2p_list2Tuple (cons g2p_list2Tuple g2p_real2Float)))) + +(is-ok 6 "bool vs. int -> List" "[True, 5, 6, 7, False]" + (python-apply '("__builtin__" "repr") '((#t 5 6 7 #f)) '() + (list g2p_list2Tuple (list g2p_list2List (list g2p_leaf g2p_num2Int g2p_bool2Bool))))) + +(is-ok 7 "pair2tuple" "('a', 5)" + (python-apply '("__builtin__" "repr") '(("a" . 5)) '() + (list g2p_list2Tuple (cons g2p_pair2Tuple (cons g2p_string2String g2p_num2Int))))) + +(is-ok 8 "pair2list" "['c', 55]" + (python-apply '("__builtin__" "repr") '(("c" . 55)) '() + (list g2p_list2Tuple (cons g2p_pair2List (cons g2p_string2String g2p_num2Int))))) + +; Run python-apply under catch harness. +(define catch-test-apply + (lambda (func args kws . targ) + (catch #t + (lambda () (python-apply func args kws (car targ))) + (lambda (key . args2) (object->string (list key args2)))))) + +(is-ok 9 "bad template in g2p_apply" + "(misc-error (\"g2p_apply\" \"bad template item ~S\" (\"pooh\") #f))" + (catch-test-apply '("__builtin__" "repr") '() '() "pooh")) + +(is-ok 10 "bad template 2 in g2p_apply" + "(misc-error (\"g2p_apply\" \"bad template CAR item ~S\" (\"pooh\") #f))" + (catch-test-apply '("__builtin__" "repr") '() '() '("pooh" . "bar"))) + +(is-ok 11 "g2p_leaf in pair" "'pair'" + (python-apply '("__builtin__" "repr") '("pair") '() (list g2p_list2Tuple (cons g2p_leaf g2p_string2String)))) + +(is-ok 12 "g2p_leaf missing conversion datatype" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((#t 5 \"rude\" 7 #f))) #f))" + (catch-test-apply '("__builtin__" "repr") '((#t 5 "rude" 7 #f)) '() + (list g2p_list2Tuple (list g2p_list2List (list g2p_leaf g2p_num2Int g2p_bool2Bool))))) + +; Exercise various g2p_* functions not otherwise covered. + +(is-ok 13 "null" "None" + (python-apply '("__builtin__" "repr") '(()) '() + (list g2p_list2Tuple (list g2p_null2PyNone)))) + +(is-ok 14 "Other nulls" "[(), [], {}]" + (python-apply '("__builtin__" "repr") '((() () ())) '() + (list g2p_list2Tuple (list g2p_list2List g2p_null2Tuple0 g2p_null2List0 g2p_null2DictEmpty)))) + +(is-ok 15 "g2p_copmlex" + "[1, 2, 3.5, (4+6j)]" + (python-apply '("__builtin__" "repr") '((1 2 3.5 4+6i)) '() + (list g2p_list2Tuple (list g2p_list2List (list g2p_leaf g2p_num2Int g2p_real2Float g2p_complex2Complex))))) + +(is-ok 16 "bignums" + "[1000000, 100000000, 10000000000L, 1000000000000L]" + (python-apply '("__builtin__" "repr") '((1000000 100000000 10000000000 1000000000000)) '() + (list g2p_list2Tuple (list g2p_list2List (list g2p_leaf g2p_bignum2Long g2p_num2Int))))) + +; Exercise g2p_pair2Tuple with bad templates and data + +(is-ok 17 "bad template for g2p_pair2Tuple" + "(misc-error (\"g2p_pair2Tuple\" \"bad template ~S\" (\"pooh\") #f))" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2Tuple "pooh")))) + +(is-ok 18 "validate datatype tests for g2p_pair2Tuple" + "(1, 2)" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2Tuple (cons g2p_num2Int g2p_num2Int))))) + +(is-ok 19 "bad CAR datatype for g2p_pair2Tuple" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((1 . 2))) #f))" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2Tuple (cons g2p_bool2Bool g2p_num2Int))))) + +(is-ok 20 "bad CDR datatype for g2p_pair2Tuple" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((1 . 2))) #f))" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2Tuple (cons g2p_num2Int g2p_bool2Bool))))) + +; Exercise g2p_pair2List with bad templates and data + +(is-ok 21 "bad template for g2p_pair2List" + "(misc-error (\"g2p_pair2List\" \"bad template ~S\" (\"pooh\") #f))" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2List "pooh")))) + +(is-ok 22 "validate datatype tests for g2p_pair2List" + "[1, 2]" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2List (cons g2p_num2Int g2p_num2Int))))) + +(is-ok 23 "bad CAR datatype for g2p_pair2List" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((1 . 2))) #f))" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2List (cons g2p_bool2Bool g2p_num2Int))))) + +(is-ok 24 "bad CDR datatype for g2p_pair2List" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((1 . 2))) #f))" + (catch-test-apply '("__builtin__" "repr") '((1 . 2)) '() + (list g2p_list2Tuple (cons g2p_pair2List (cons g2p_num2Int g2p_bool2Bool))))) + +; Exercise g2p_list2Tuple and g2p_list2List with bad arguments + +(is-ok 25 "bad argument to g2p_list2Tuple" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" ((\"not a list\")) #f))" + (catch-test-apply '("__builtin__" "repr") '("not a list") '() + (list g2p_list2Tuple (list g2p_list2Tuple g2p_string2String)))) + +(is-ok 26 "bad argument to g2p_list2List" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" ((\"not a list\")) #f))" + (catch-test-apply '("__builtin__" "repr") '("not a list") '() + (list g2p_list2Tuple (list g2p_list2List g2p_string2String)))) + + +(is-ok 27 "no bad argument datatype to g2p_list2Tuple (test validation)" + "(1, 2, 3, 4, 5)" + (catch-test-apply '("__builtin__" "repr") '((1 2 3 4 5)) '() + (list g2p_list2Tuple (list g2p_list2Tuple g2p_num2Int)))) + +(is-ok 28 "bad argument datatype to g2p_list2Tuple" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((1 2 3 #f 4 5))) #f))" + (catch-test-apply '("__builtin__" "repr") '((1 2 3 #f 4 5)) '() + (list g2p_list2Tuple (list g2p_list2Tuple g2p_num2Int)))) + + +(is-ok 29 "bad argument datatype to g2p_list2List" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((6 7 #t 8 9 10))) #f))" + (catch-test-apply '("__builtin__" "repr") '((6 7 #t 8 9 10)) '() + (list g2p_list2Tuple (list g2p_list2List g2p_num2Int)))) + +(is-ok 30 "bad template (not list) to g2p_list2Tuple" + "(wrong-type-arg (\"g2p_list2Tuple\" \"Wrong type argument in position ~A: ~S\" (2 #<unspecified>) #f))" + (catch-test-apply '("__builtin__" "repr") '((1 2 3 #f 4 5)) '() + (list g2p_list2Tuple g2p_list2Tuple "fadiha"))) + + +(is-ok 31 "bad template (not list) to g2p_list2List" + "(wrong-type-arg (\"g2p_list2List\" \"Wrong type argument in position ~A: ~S\" (2 #<unspecified>) #f))" + (catch-test-apply '("__builtin__" "repr") '((6 7 #t 8 9 10)) '() + (list g2p_list2Tuple g2p_list2List "fadiha"))) + +; g2p_char2String + +(is-ok 32 "g2p_char2String" + "['a', 5, 6, 7, ' ', 'Q']" + (python-apply '("__builtin__" "repr") '((#\a 5 6 7 #\space #\Q)) '() + (list g2p_list2Tuple (list g2p_list2List (list g2p_leaf g2p_char2String g2p_num2Int g2p_bool2Bool))))) + +; g2p_symbol2String + +(is-ok 33 "g2p_symbol2String" + "['one', 'two', 'three', 'four', 'five', 'six']" + (python-apply '("__builtin__" "repr") '(("one" two #:three "four" five #:six)) '() + (list g2p_list2Tuple (list g2p_list2List (list g2p_leaf g2p_string2String g2p_symbol2String g2p_keyword2String))))) + +(python-eval "class opaq(object):\n def __init__(self,v):\n self.v=v\n def __repr__(self): return('*** opaque %s ***' % str(self.v))\n" #f) +(define opaq1 (python-eval "opaq('o p a q 1')" #t)) +(define opaq2 (python-eval "opaq(['o p a q',2])" #t)) + +(is-ok 34 "opaque data" + "[*** opaque o p a q 1 ***, 3, *** opaque ['o p a q', 2] ***]" + (python-apply '("__builtin__" "repr") (list (list opaq1 3 opaq2)) '() + (list g2p_list2Tuple (list g2p_list2List (list g2p_leaf g2p_opaque2Object g2p_num2Int))))) + +; Additional tests: g2p_list2Tuple and g2p_list2List getting data with +; item inappropriate to the single G2P_SMOB template argument. + +(is-ok 35 "list2Tuple" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((4 \"Gorilla!\" 6 7 8))) #f))" + (catch-test-apply '("__builtin__" "repr") '((4 "Gorilla!" 6 7 8)) '() + (list g2p_list2Tuple (cons g2p_list2Tuple g2p_real2Float)))) + +(is-ok 36 "list2Tuple" + "(misc-error (\"python-apply\" \"positional arguments conversion failure (~S)\" (((4 \"Chimpanzee!\" 6 7 8))) #f))" + (catch-test-apply '("__builtin__" "repr") '((4 "Chimpanzee!" 6 7 8)) '() + (list g2p_list2Tuple (cons g2p_list2List g2p_real2Float)))) + + +; End of 12_g2p_templated.t |