@Test
	public void testNeuronWeightedSynapse() {
		AbstractNeuron<Integer, ISynapse<?, Integer>> neuron = new AbstractNeuron<Integer, ISynapse<?, Integer>>(
				5) {
			@Override
			protected Integer computeValueFromInputs(
					Set<ISynapse<?, Integer>> inputs) {
				return getValue();
			}
		};
		InputReader<INeuron<Integer, ?>, Double> reader = new InputReader<INeuron<Integer, ?>, Double>() {

			@Override
			public Double readInput(INeuron<Integer, ?> neuron) {
				return neuron.getValue().doubleValue();
			}
		};
		{
			ISynapse<INeuron<Integer, ?>, Double> synapse = SynapseFactory
					.produceNeuronWeightedSynapse(neuron, 0, reader);
			assertEquals(0, synapse.getValue(), 0);
		}

		{
			ISynapse<INeuron<Integer, ?>, Double> synapse = SynapseFactory
					.produceNeuronWeightedSynapse(neuron, 1, reader);
			assertEquals(5, synapse.getValue().doubleValue(), 0);
		}

		{
			ISynapse<INeuron<Integer, ?>, Double> synapse = SynapseFactory
					.produceNeuronWeightedSynapse(neuron, 10, reader);
			assertEquals(50, synapse.getValue().doubleValue(), 0);
		}
	}