;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Freebase Tests ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defpackage trie-tests (:use :common-lisp trie lisp-unit)) ;;; 2015-12-02 fix case-sensivity issue, added filtering test [AF] ;;; 2014-11-15 created file [PM] ;;; AV: Avy Faingezicht ;;; PM: Peng Meng ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defpackage freebase-tests (:use :common-lisp :lisp-unit :freebase)) (in-package freebase-tests) (defun get-val (key alist) (cdr (assoc key alist :test #'equal))) (define-test search-freebase (let ((first-page (search-freebase "lisp" :cursor 0 :limit 10)) (second-page (search-freebase "lisp" :cursor 10 :limit 10)) (lots (search-freebase "lisp" :limit 100))) (assert-equal "200 OK" (get-val "status" first-page)) (assert-equal 10 (length (get-val "result" first-page))) (assert-equal 10 (get-val "cursor" first-page)) (assert-equal 10 (length (get-val "result" second-page))) (assert-equal 20 (get-val "cursor" second-page)) (assert-equal 100 (length (get-val "result" lots)))) (assert-equal 2 (length (search-freebase ""))) (assert-equal "200 OK" (cdar (search-freebase "akjsnowedre98fbqrnndet 98y97324732c398yn")))) (define-test filter-string (assert-equal nil (filter-string nil)) (assert-equal "(all category:volcano (any part-of:california part-of:france))" (filter-string '(all :category volcano (any :part-of california :part-of france)))) (assert-equal "(all adaptation_of:la traviata)" (filter-string '(all :adaptation_of "La Traviata"))) (assert-equal "(all type:/computer/programming_language parent:lisp)" (filter-string '(all :type /computer/programming_language :parent lisp))) (assert-equal "(all type:competition part_of:2008 summer olympics)" (filter-string '(all :type competition :part_of "2008 summer olympics"))) (assert-equal "(all type:/people/person /people/person/nationality:canada)" (filter-string '(all :type /people/person :/people/person/nationality "Canada"))) (assert-false (equal (search-freebase "bob" :filter (filter-string '(all :type /people/person :/people/person/nationality "Canada"))) (search-freebase "bob" :filter (filter-string '(all :type /people/person :/people/person/nationality "Mexico"))) )) )