From e16f6e816fb7ed7d60c3e2eb1c7394c7b64470e5 Mon Sep 17 00:00:00 2001 From: Dmitry Shubin Date: Mon, 28 Jun 2010 01:45:05 +0400 Subject: [PATCH] gdbm: add unit tests --- extra/gdbm/gdbm-tests.factor | 67 ++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 extra/gdbm/gdbm-tests.factor diff --git a/extra/gdbm/gdbm-tests.factor b/extra/gdbm/gdbm-tests.factor new file mode 100644 index 0000000000..ab3cb912f6 --- /dev/null +++ b/extra/gdbm/gdbm-tests.factor @@ -0,0 +1,67 @@ +! Copyright (C) 2010 Dmitry Shubin. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors continuations gdbm gdbm.ffi io.directories +io.files.temp kernel sequences sets tools.test ; +IN: gdbm.tests + +: db-path ( -- filename ) "test.db" temp-file ; + +: CLEANUP ( -- ) [ db-path delete-file ] ignore-errors ; + +: test.db ( -- gdbm ) db-path >>name ; + +: with-test.db ( quot -- ) test.db swap with-gdbm ; inline + + +CLEANUP + + +[ + test.db reader >>role [ ] with-gdbm +] [ gdbm-file-open-error = ] must-fail-with + +[ f ] [ [ "foo" gdbm-exists ] with-test.db ] unit-test + +[ ] [ [ "foo" 41 gdbm-insert ] with-test.db ] unit-test + +[ + [ "foo" 42 gdbm-insert ] with-test.db +] [ gdbm-cannot-replace = ] must-fail-with + +[ ] +[ + [ + "foo" 42 gdbm-replace + "bar" 43 gdbm-replace + "baz" 44 gdbm-replace + ] with-test.db +] unit-test + +[ 42 t ] [ [ "foo" gdbm-fetch* ] with-test.db ] unit-test + +[ f f ] [ [ "unknown" gdbm-fetch* ] with-test.db ] unit-test + +[ + [ + 300 gdbm-set-cache-size 300 gdbm-set-cache-size + ] with-test.db +] [ gdbm-option-already-set = ] must-fail-with + +[ t ] +[ + V{ } + [ + gdbm-first-key + [ gdbm-next-key* ] [ [ swap push ] 2keep ] do while drop + ] with-test.db + V{ "foo" "bar" "baz" } set= + +] unit-test + +[ f ] +[ + test.db newdb >>role [ "foo" gdbm-exists ] with-gdbm +] unit-test + + +CLEANUP