#[cfg(test)]
mod tests {
use super::super::*;
#[test]
fn test_basic_network() {
let mut network = Network::new(2, 1, None, None);
network.add_connection((0, 0), (1, 0), 0.75);
network.add_connection((0, 1), (1, 0), 0.25);
let test_inputs = vec![0.36, 0.54];
let manual_calculation = sigmoid(test_inputs[0] * 0.75 + test_inputs[1] * 0.25);
let output = network.activate(test_inputs, false);
assert_eq!(output[0], manual_calculation);
}
#[test]
fn test_network_biases() {
let mut network = Network::new(2, 1, None, None);
network.add_connection((0, 0), (1, 0), 0.75);
network.add_connection((0, 1), (1, 0), 0.25);
network.layers[1].bias[0] = 0.5;
let test_inputs = vec![0.36, 0.54];
let manual_calculation = sigmoid(test_inputs[0] * 0.75 + test_inputs[1] * 0.25 + 0.5);
let output = network.activate(test_inputs, false);
assert_eq!(output[0], manual_calculation);
}
#[test]
fn test_simple_network_with_extra_neuron() {
let mut network = Network::new(2, 1, Some(vec![1]), None);
network.add_connection((0, 0), (1, 0), 1f64);
network.add_connection((0, 1), (1, 0), 1f64);
network.add_connection((1, 0), (2, 0), 1f64);
assert_eq!(
network.activate(vec![1f64, 1f64], false)[0],
sigmoid(sigmoid(1f64 + 1f64))
);
}
}