X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=unit-tests%2Ftest-graph-container.lisp;h=95ba3c0064fc9a8214b80ae348242fd337629447;hb=fbbd5f255d84d9f24a47907cc68d048b18907a5c;hp=87d943a7687e18db5e33060d5a891819731327db;hpb=b9b77eaf8b04ffe94412d5ff49cacae2d19ebb65;p=cl-graph.git diff --git a/unit-tests/test-graph-container.lisp b/unit-tests/test-graph-container.lisp index 87d943a..95ba3c0 100644 --- a/unit-tests/test-graph-container.lisp +++ b/unit-tests/test-graph-container.lisp @@ -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 '=)))