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 ]