test: Add nyacc cpp match tests; two fail.
[mes.git] / tests / match.test
index 10a4fccba6adce5169f95050cd4bb9779b38965b..d1b7c8728bd7f5fced9a5c529d45c7d836c9ed4c 100755 (executable)
@@ -1,6 +1,7 @@
 #! /bin/sh
 # -*-scheme-*-
-echo ' ()' | cat $($(dirname $0)/../scripts/include.mes $0) $0 /dev/stdin | $(dirname $0)/../scripts/mes $MES_FLAGS "$@"
+MES=${MES-$(dirname $0)/../scripts/mes}
+echo ' ()' | cat $(dirname $0)/../module/mes/base-0.mes $0 /dev/stdin | $MES $MES_FLAGS "$@"
 #paredit:||
 exit $?
 !#
@@ -10,7 +11,7 @@ exit $?
 ;;; Mes --- Maxwell Equations of Software
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
-;;; match.test: This file is part of Mes.
+;;; This file is part of Mes.
 ;;;
 ;;; Mes is free software; you can redistribute it and/or modify it
 ;;; under the terms of the GNU General Public License as published by
@@ -25,16 +26,6 @@ exit $?
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with Mes.  If not, see <http://www.gnu.org/licenses/>.
 
-(mes-use-module (mes base-0))
-(mes-use-module (mes base))
-(mes-use-module (mes quasiquote))
-(mes-use-module (mes let))
-(mes-use-module (srfi srfi-0))
-(mes-use-module (mes scm))
-(mes-use-module (mes syntax))
-(mes-use-module (mes record-0))
-(mes-use-module (mes record))
-(mes-use-module (srfi srfi-9))
 (mes-use-module (mes match))
 (mes-use-module (mes test))
 
@@ -97,5 +88,30 @@ exit $?
      (_ "no match: (1 2)"))
    '(1 2)))
 
-(result 'report)
+(pass-if-equal "match nyacc 0"
+               '(rest)
+               (match '(first rest)
+                 ((first . rest)
+                  rest)))
 
+(pass-if-equal "match nyacc 1"
+               '(#\. rest)
+               (match '(first #\. rest)
+                 (('first . rest)
+                  rest)))
+
+(let ((tkl0-simple '((ident . type) rest)))
+  (pass-if-equal "match nyacc simple"
+                 (cons (cdar tkl0-simple) (cdr tkl0-simple))
+                 (match tkl0-simple
+                   ((('ident . val) . rest)
+                    (cons val rest)))))
+
+(let ((tkl0 '((ident . "type") #\. #\] (arg . "0") #\[ (ident . "g_cells"))))
+  (pass-if-equal "match nyacc tkl0"
+                 (cdr tkl0)
+                 (match tkl0
+                   ((('ident . val) . rest)
+                    rest))))
+
+(result 'report (if mes? 2 0))