getNodeMock($nodeOutput = 0.5); $synapse = new Synapse($node, $weight = 0.75); self::assertEquals($node, $synapse->getNode()); self::assertEquals($weight, $synapse->getWeight()); self::assertEquals($weight * $nodeOutput, $synapse->getOutput()); $synapse = new Synapse($node); $weight = $synapse->getWeight(); self::assertTrue($weight === -1. || $weight === 1.); } public function testSynapseWeightChange(): void { $node = $this->getNodeMock(); $synapse = new Synapse($node, $weight = 0.75); $synapse->changeWeight(1.0); self::assertEquals(1.75, $synapse->getWeight()); $synapse->changeWeight(-2.0); self::assertEquals(-0.25, $synapse->getWeight()); } /** * @return Neuron|MockObject */ private function getNodeMock(float $output = 1.) { $node = $this->getMockBuilder(Neuron::class)->getMock(); $node->method('getOutput')->willReturn($output); return $node; } }