summaryrefslogtreecommitdiff
path: root/tests/algo2.lisp
blob: 66f7f55571f1cc3b60cbad9941431462ff37d6ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
(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))))