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
|
module MindTest (suite) where
import Test.Tasty
import Test.Tasty.HUnit
import Mind
suite :: TestTree
suite = testGroup "mind tests" $
[ neuronIndexTests
, networkTests
]
neuronIndexTests :: TestTree
neuronIndexTests = testGroup "neuron index tests" $
[ testCase "get input index" $ getNeuronIndex (Input 4) @?= 4
, testCase "get internal index" $ getNeuronIndex (Internal 12) @?= 12
, testCase "get output index" $ getNeuronIndex (Output 0) @?= 0
]
networkTests :: TestTree
networkTests = testGroup "network tests" $
[ testCase "create empty network" $
(createEmptyNetwork 3 2 1) @?= Network 3 [[], []] [[]]
, testCase "output network connection" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Input 0) (Output 0) (negate 1.0))
@?= (Just $ Network 3 [[], []] [[Edge (Input 0, (negate 1.0))]])
, testCase "internal network connection" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Internal 0) (Internal 1) (negate 1.0))
@?= (Just $ Network 3 [[], [Edge (Internal 0, negate 1.0)]] [[]])
, testCase "internal self-connection" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Internal 0) (Internal 0) (negate 1.0))
@?= (Just $ Network 3 [[Edge (Internal 0, negate 1.0)], []] [[]])
, testCase "internal source out of range" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Internal 5) (Internal 0) (negate 1.0))
@?= Nothing
, testCase "internal sink out of range" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Internal 1) (Internal (negate 1)) (negate 1.0))
@?= Nothing
, testCase "input source out of range" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Input (negate 1)) (Internal 0) (negate 1.0))
@?= Nothing
, testCase "input sink" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Input 0) (Input 0) (negate 1.0))
@?= Nothing
, testCase "output source" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Output 0) (Output 0) (negate 1.0))
@?= Nothing
, testCase "output sink out of range" $
let network = Network 3 [[], []] [[]]
in (connectNeurons network (Input 0) (Output 4) (negate 1.0))
@?= Nothing
]
|