aboutsummaryrefslogtreecommitdiff
path: root/src/ellinika/test-conjugation.scm
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-06-12 04:01:10 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-06-12 04:01:10 +0300
commite50173c65dca2cd0e0b5cbc563b7fa36b4d164ca (patch)
treec51ac0da8d875fed9156cc67bc9b1a931650299b /src/ellinika/test-conjugation.scm
parenta9fa703eecfc81b26c1d969cc13a7ce476c84d6d (diff)
downloadellinika-e50173c65dca2cd0e0b5cbc563b7fa36b4d164ca.tar.gz
ellinika-e50173c65dca2cd0e0b5cbc563b7fa36b4d164ca.tar.bz2
Add tests.
Diffstat (limited to 'src/ellinika/test-conjugation.scm')
-rw-r--r--src/ellinika/test-conjugation.scm78
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))
+

Return to:

Send suggestions and report system problems to the System administrator.