From: Javier Sancho Date: Sun, 7 Feb 2016 15:41:08 +0000 (+0100) Subject: Testing X-Git-Url: https://git.jsancho.org/?p=bongodb.git;a=commitdiff_plain;h=9799d66d7e1538bbe2a672946ce80b49dc55ca84 Testing --- diff --git a/src/bongodb.scm b/src/bongodb.scm index c6b2571..3cffa48 100644 --- a/src/bongodb.scm +++ b/src/bongodb.scm @@ -1,4 +1,3 @@ -;;; ;;; BongoDB, an embedded document-based engine ;;; Copyright (C) 2016 by Javier Sancho Fernandez ;;; @@ -20,7 +19,12 @@ #:use-module (ice-9 receive) #:use-module (ice-9 vlist) #:use-module (srfi srfi-9) - #:use-module (srfi srfi-9 gnu)) + #:use-module (srfi srfi-9 gnu) + #:export (make-collection + collection? + count + insert + find)) ;;; Collection Definition @@ -33,11 +37,14 @@ (define (make-collection) (make-collection-record vlist-null)) +(define (count col) + (vlist-length (get-table col))) + (set-record-type-printer! collection (lambda (record port) (format port "#" - (vlist-length (get-table record))))) + (count record)))) ;;; Working with documents @@ -84,13 +91,3 @@ (lambda (key value result) (assoc-set! result key value)) '() vhash)) - - -;;; Testing - -(define (sample-test) - (let ((col (make-collection))) - (format #t "1 New collection: ~a~%" col) - (set! col (insert col '((a . 1) (b . 2)) '((a . 10) (b . 20)) '((a . 1) (b . "hello world")))) - (format #t "2 Insert 3 documents: ~a~%" col) - (format #t "3 Search (a . 1): ~a~%" (find col '((a . 1)))))) diff --git a/tests/sample.scm b/tests/sample.scm new file mode 100644 index 0000000..047a751 --- /dev/null +++ b/tests/sample.scm @@ -0,0 +1,34 @@ +;;; BongoDB, an embedded document-based engine +;;; Copyright (C) 2016 by Javier Sancho Fernandez +;;; +;;; This program 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. +;;; +;;; This program 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 . + + +(use-modules (bongodb) + (srfi srfi-64)) + +(test-begin "bongodb") + +; Definition +(define col (make-collection)) +(test-assert (collection? col)) + +; Insert +(set! col (insert col '((a . 1) (b . 2)) '((a . 10) (b . 20)) '((a . 1) (b . "hello world")))) +(test-eqv 3 (count col)) + +; Search +(test-eqv 2 (length (find col '((a . 1))))) + +(test-end "bongodb")