X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=unit-tests%2Ftest-graph-container.lisp;h=0c1657b7f08985cd4d044688829611a39e637e5e;hb=7386fbb6fe617a8facb485d53798981b8d7211eb;hp=c2697da98419c16b2857e2f6b0d29dbf07878c7e;hpb=900a931f109598249ebc33bea50b65abf998ed0b;p=cl-graph.git diff --git a/unit-tests/test-graph-container.lisp b/unit-tests/test-graph-container.lisp index c2697da..0c1657b 100644 --- a/unit-tests/test-graph-container.lisp +++ b/unit-tests/test-graph-container.lisp @@ -1,4 +1,4 @@ -(in-package metabang.graph) +(in-package #:cl-graph-test) ;;; --------------------------------------------------------------------------- ;;; utilities @@ -16,62 +16,69 @@ ;;; tests ;;; --------------------------------------------------------------------------- -(deftestsuite test-graph-container () ()) +(deftestsuite graph-container-test (cl-graph-test) ()) ;;; --------------------------------------------------------------------------- -(addtest (test-graph-container) +(addtest (graph-container-test) + test-empty! + (let ((g1 (make-simple-test-graph))) + (empty! g1) + (ensure-same (size g1) 0))) + +;;; --------------------------------------------------------------------------- +;;; vertex test +;;; --------------------------------------------------------------------------- + +;;?? should be in test-graph and work for every graph container type + +(addtest (graph-container-test) + no-vertex-test + (let ((g (make-container 'graph-container))) + (loop for (src dst) in '((a b) (a c) (c d) (a d) (d e) (e f) (b f)) do + (add-edge-between-vertexes g (list src) (list dst))) + (ensure-same (size g) 14 :test '=))) + +(addtest (graph-container-test) + vertex-test + (let ((g (make-container 'graph-container :vertex-test #'equal))) + (loop for (src dst) in '((a b) (a c) (c d) (a d) (d e) (e f) (b f)) do + (add-edge-between-vertexes g (list src) (list dst))) + (ensure-same (size g) 6 :test '=))) + + +;;; --------------------------------------------------------------------------- +;;; copying +;;; --------------------------------------------------------------------------- + +(addtest (graph-container-test) test-simple-copying (let ((g1 (make-simple-test-graph)) (g2 nil)) - (setf g2 (copy-top-level g1)) + (setf g2 (copy-thing g1)) (ensure-same (size g1) (size g2)) (iterate-vertexes g1 (lambda (v) - (ensure (find-vertex g2 (value v))))) + (ensure (find-vertex g2 (element v))))) (iterate-edges g1 (lambda (e) (ensure (find-edge-between-vertexes - g2 (value (source-vertex e)) - (value (target-vertex e)))))))) + g2 (element (source-vertex e)) + (element (target-vertex e)))))))) ;;; --------------------------------------------------------------------------- ;; fails because find-edge-between-vertexes for graph containers doesn't ;; care about the graph... -(addtest (test-graph-container) +(addtest (graph-container-test) test-find-edge-between-vertexes (let ((g1 (make-simple-test-graph)) (g2 nil)) - (setf g2 (copy-top-level g1)) + (setf g2 (copy-thing g1)) (ensure (not (find-edge-between-vertexes g2 (find-vertex g1 'a) (find-vertex g1 'b)))))) ;;; --------------------------------------------------------------------------- -(addtest (test-graph-container) - test-empty! - (let ((g1 (make-simple-test-graph))) - (empty! g1) - (ensure-same (size g1) 0))) - -;;; --------------------------------------------------------------------------- -;;; vertex test -;;; --------------------------------------------------------------------------- - -;;?? should be in test-graph and work for every graph container type - -(addtest (test-graph-container) - no-vertex-test - (let ((g (make-container 'graph-container))) - (loop for (src dst) in '((a b) (a c) (c d) (a d) (d e) (e f) (b f)) do - (add-edge-between-vertexes g (list src) (list dst))) - (ensure-same (size g) 14 :test '=))) -(addtest (test-graph-container) - vertex-test - (let ((g (make-container 'graph-container :vertex-test #'equal))) - (loop for (src dst) in '((a b) (a c) (c d) (a d) (d e) (e f) (b f)) do - (add-edge-between-vertexes g (list src) (list dst))) - (ensure-same (size g) 6 :test '=)))