Nelmio\Alice\Definition\FlagBagTest::testAddingAFlagCreatesANewModifiedInstance PHP Метод

testAddingAFlagCreatesANewModifiedInstance() публичный Метод

    public function testAddingAFlagCreatesANewModifiedInstance()
    {
        $flag = new MutableFlag('flag0', new \stdClass());
        $bag1 = new FlagBag('user0');
        $bag2 = $bag1->withFlag($flag);
        $this->assertInstanceOf(FlagBag::class, $bag1);
        $this->assertNotSame($bag1, $bag2);
        $this->assertCount(0, $bag1);
        $this->assertCount(1, $bag2);
        // Mutate injected value
        $flag->setStringValue('flag1');
        $flag->getObject()->injected = true;
        // Mutate return value
        foreach ($bag1 as $flag) {
            /** @var MutableFlag $flag */
            $flag->setStringValue('flag2');
            $flag->getObject()->foo = 'bar';
        }
        $this->assertEquals((new FlagBag('user0'))->withFlag(new MutableFlag('flag0', new \stdClass())), $bag2);
    }