public function testDefaultBuilder() { //create Entity in default state. this is enough to pass it //to the builder $object_1 = new Identifier(-1, 'order'); $object_2 = new Identifier(-2, 'order'); $this->assertNotEquals($object_1, $object_2); //scenario: call it twice with same object $builder = new EntityBuilder(); $result_1 = $builder->getEntity($object_1); $this->assertEquals($object_1, $result_1); //same result when we call it again (should be cached, but we can only test //this when we override the protected build() method of the builder). $result_2 = $builder->getEntity($object_1); $this->assertEquals($object_1, $result_2); $this->assertEquals($result_1, $result_2, 'obviously'); $this->assertEquals('izzum\\statemachine\\EntityBuilder', $builder->toString()); //scenario: call it with different objects $builder = new EntityBuilder(); $result_1 = $builder->getEntity($object_1); $this->assertEquals($object_1, $result_1); //different result when we call it again $result_2 = $builder->getEntity($object_2); $this->assertEquals($object_2, $result_2); $this->assertContains('EntityBuilder', $builder . '', '__toString()'); }