diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-12 04:01:10 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-12 04:01:10 +0300 |
commit | e50173c65dca2cd0e0b5cbc563b7fa36b4d164ca (patch) | |
tree | c51ac0da8d875fed9156cc67bc9b1a931650299b /src/ellinika/test-conjugation.scm | |
parent | a9fa703eecfc81b26c1d969cc13a7ce476c84d6d (diff) | |
download | ellinika-e50173c65dca2cd0e0b5cbc563b7fa36b4d164ca.tar.gz ellinika-e50173c65dca2cd0e0b5cbc563b7fa36b4d164ca.tar.bz2 |
Add tests.
Diffstat (limited to 'src/ellinika/test-conjugation.scm')
-rw-r--r-- | src/ellinika/test-conjugation.scm | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/ellinika/test-conjugation.scm b/src/ellinika/test-conjugation.scm new file mode 100644 index 0000000..83086bf --- /dev/null +++ b/src/ellinika/test-conjugation.scm @@ -0,0 +1,78 @@ +;;;; This file is part of Ellinika project. +;;;; Copyright (C) 2011 Sergey Poznyakoff +;;;; +;;;; Ellinika is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; the Free Software Foundation; either version 3 of the License, or +;;;; (at your option) any later version. +;;;; +;;;; Ellinika 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 General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU General Public License +;;;; along with this program. If not, see <http://www.gnu.org/licenses/>. + +(define-module (ellinika test-conjugation)) + +(use-modules (srfi srfi-1) + (ellinika elmorph) + (ellinika i18n) + (ellinika cgi) + (ellinika tenses) + (ellinika conjugator) + (gamma sql)) + +(ellinika-cgi-init dict-template-file-name) +(define db-connection (sql-open-connection ellinika-sql-connection)) +(sql-query db-connection "SET NAMES utf8") + + +(define transtab + '(("act" . "Ενεργητηκή φωνή") + ("pas" . "Μεσοπαθητική φωνή") + ("ind" . "Οριστική") + ("sub" . "Υποτακτική") + ("imp" . "Προστακτική"))) + +(define (term x) + (or (assoc-ref transtab x) x)) + +(define-public (test-conjugation:tense verb voice mood tense) + (for-each + (lambda (result) + (format #t "~A ~A/~A/~A: " verb (term voice) (term mood) tense) + (let ((conj (conjugation:table result))) + (cond + ((empty-conjugation? conj) + (display "#f")) + (else + (let ((att (conjugation:attested result))) + (cond + ((not att) + (display "*")) + (else + (if (not (member 'class att)) + (display "*")) + (if (not (member 'root att)) + (display "!")))) + (display conj))))) + (newline)) + (conjugator db-connection verb voice mood tense)) + (gc)) + +(define-public (test-conjugation:voice voice verb) + (for-each + (lambda (mood-tenses) + (let ((mood (car mood-tenses))) + (for-each + (lambda (tense) + (test-conjugation:tense verb voice mood tense)) + (cdr mood-tenses)))) + ellinika-tense-list)) + +(define-public (test-conjugation:verb verb) + (test-conjugation:voice "act" verb) + (test-conjugation:voice "pas" verb)) + |