(defpackage ffnn/tests/algo2 (:use :cl :ffnn :ffnn.algo2 :rove)) (in-package :ffnn/tests/algo2) (deftest check-sum-one-row (testing "sum-one-row" (dolist (case '((foo ((foo) () (bar)) ((foo) (foo) (bar)) 1 (3 1)) (foo ((bar) () (bar)) ((bar) (bar) (foo)) 1 (-1 1)) (foo ((bar) () (bar)) ((bar) (bar) (bar)) 1 (1 3)) (foo ((foo) () (bar)) ((foo) (foo) (bar)) nil (1 1)))) (destructuring-bind (item input memory index expected) case (ok (equal (ffnn.algo2::sum-one-row item input memory index) expected)))))) (deftest check-sum-one-memory (testing "Sum one memory" (ok (equal (ffnn.algo2::sum-one-memory 'foo '(((foo) (foo)) ((bar) (bar))) ;; Input '(((foo) (foo)) ((bar) (bar))) ;; Memory :rectified-polynomial (ffnn.algo2::make-rectified-polynomial 2) :target-row 0 :target-col 0 :start-row 0 :start-col 0) 12)) (ok (equal (ffnn.algo2::sum-one-memory 'foo '(((foo) (foo)) ((baz) (baz))) '(((foo) (foo)) ((foo) (foo))) :rectified-polynomial (ffnn.algo2::make-rectified-polynomial 2) :target-row 0 :target-col 0 :start-row 0 :start-col 0) 0)))) (deftest check-sum-all-memories (let ((memories '((((foo) (foo) (foo)) (() () ()) (() () ())) (((foo) () ()) (() (foo) ()) (() () (foo))) (((foo) () ()) ((foo) () ()) ((foo) () ()))))) (testing "Sum all memories" (ok (equal (sum-all-memories 'foo '((() (foo) (foo)) ((bar) (bar) ()) (() () ())) memories 0 0) 34)) (ok (equal (sum-all-memories 'foo '(((foo) (bar)) ((qux) (foo))) memories 0 0) 12))))) (deftest check-scan-all-memories (let ((layer1-memories '((((foo) (foo) (foo)) (() () ()) (() () ())) (((foo) () ()) (() (foo) ()) (() () (foo))) (((foo) () ()) ((foo) () ()) ((foo) () ())))) (layer2-memories '(((() () ()) (() () ()) (() () ())) ((() () ()) (() () ()) (() () ())) ((() () ()) (() () ()) (() () ()))))) (ok (equal (scan-all-memories 'foo (scan-all-memories 'foo '((() (foo) (foo)) ((bar) (bar) ()) (() () ())) *layer1-memories*) *layer2-memories*) 12))))