[Tͪ#n$;<:a4sX[y ,)B.MX\=j$%uuIjJ1<0濶0um]D +$[ʏ\WiF8א4VQvvФf-P\lT>Os9˓ELE*NðKfKcNK^rS>acB4S|G]@(%K75bd)? T~AP8:
p}+Pw,0a8ȴՉč,Z0 ZHf
L 8)4wَHmƵ;"BF%n`b!*6O;Кt!pGNc
؍c_ y{h~VAlD铞¢ż4߀2V*ֶcYF#O-v* ׼`,Xv}e	WWƱR=d<zXn|˸xvKlRPܘeExp=J8&V!mPd;*JM_YSkQi]h[ܓ`
EI98DK
i ` %H3GLƙmgq	+B*ѥ0%]&oN#̍b4C,*#g	0,4zSp|}I; EgKWG9zӞ3W9lKU)ǟu_ZG-rCxCx!<؀J*s-˲Xs+81$(Ik&oGjK)emFXh=AI$;4)ECCiy]?=_u󆛳,49a$25 ;<|+LH+pF&C3gSA!#vd*'g-	.3F!b5PPЮI5m$6CڹI'qGNc
؍c_>dkᡂ$G?_e!I,4>TC_GwEy(Zhȴ`lH0B\sm_rBϺ`J6&kGC{>hO5U^L-t,DTMimj%i4+1:,ގῇ`0Y
ozX,Ha'øhׯ]-ջ:mĆ	B
QҎOd (i5نy+]>*`nMc%nʬ;Dq)$m鵓ol_~xח|y[z$n!f-O2%[f8\3uonEj/zOHXik%Bܻ%e@m^L虩כ!Gy%.Hggyi5لV7`	bzshv+m5bjv5-T@]~tO0E1XwxUI`"ػoִ16o$;vR受BH +-G0tgm˺^ވf_ƗD
f*q?*CckT䔎onU4lȢt"	F*Bx7l齎F`S,2}5P<56I#U7qN3''L[aTB`YSraG	%/1_A{/'l"Dx-f	Ԑ3!AnU4lȺaBKa1mT3}G
DgQnmqXsc:uI0+gZ$Gᶊ' "[4opmKR$*&֧&Ϫ=[Lp  MxS 7 l?԰|A%K#TXI	AR1QZE QDwze@Ça-2KOxGۃc=#QLc3N$PxTԕe> zA!XvahO:8lΦ+&]D)ǳ5Ngn#8s	sQ~l@?ыi3TN2	[\рٯzHkF|lFFOsOO&$棄Ϗ$1J_K
G@VƨyoE:kl^7B+~F0(>^J\Yl6?HWMY,ڒVZ\_xߜGIfNB.Q>SmOP46L.`&v8e+k\2pd.g&˨l?a61`U/#	V@#NaNLW&HXik%Bܻ%e@M,?X^ϚeJOo@Ȗm2j/(S{~Z<s'2"h&/Ԑo fq{k0^CbqT?g|2}
ltOlRnlc$W5eT+8MxS 7 l?԰| O}bؐdt4qqǋW-K=캡E^cY{T;2YNQd}NF)w]p3oCTvFhcǪsP*ު=f`\ĺTo%sK<rAIh3Nᾣ1#ɎzzCҬ`hV	A_oFUIDvrVY(tc_+ybLgFs:tWēq$8\3uonEHʂn	ATv4_R3 }¬<r`}G#mvPS4K5ڡyI6c(3@+Rkh
|ݫ>0=/Nl,Rf,Vo?T!敦_a8F	.xlԛ+EZ_P o
rKԑ|^V$k^0b,]\Y_(3_I!G8whJ)8X9DZǌ^vhA;/`<%imNO1LϭH[|ͪdNEkAPm4&$WtNEK cQk=Ma}Ca>~}F@6r^4|E=Qc#*{O$-KlZT4Ѹ,ƒ0Kˍ.'_3Nᾣ1#Ɏzݲ7pxh@X3Nᾣ1#ɎzZխMa\Z$8gtm""$3噻=gc5"(]c?ɲT} OI-[%DQ@^w),S	ֹ9:%*qrpp=&<؉jC?7.8͡'fPqm◻	 QLzBK]Rms1F'Z1u&0(hT=URi=$pHuv*[{"ICgōA	`]M`[JB$tnkԿ~4#Rb6h+q|GӳDnrw0pO|9]sYGǋW-K=캡E^cY{T;2YNQd}N]$d7i-_ԏqM	{˜c5YiLD*rZ)$m鵓ol_~xח|y[zlb	§jP51RÃ#A!j=gJ	'RU쟈o6iV+NEhx
FDByLx2V?&3HB݊nw\x*5.niBMĊ=]0U	M'uv9z\a.cS[%i&DVnd\:\d+$/',
            $result[1]
        );
    }

    /**
     * Test for Form::readFormPaths
     *
     * @return void
     */
    public function testReadFormPaths()
    {
        $reflection = new \ReflectionClass('PMA\libraries\config\Form');
        $method = $reflection->getMethod('readFormPaths');
        $method->setAccessible(true);

        $array = array(
            "foo" => array(
                "bar" => array(
                    'test' => 1,
                    1 => ':group:end'
                )
            )
        );

        $method->invoke($this->object, $array);

        $result = $this->object->fields;

        $this->assertCount(
            2,
            $result
        );

        $this->assertEquals(
            "foo/bar/test",
            $result['test']
        );

        unset($result['test']);

        // needs regexp because the counter is static

        $keys = array_keys($result);
        $key = $keys[0];

        $this->assertRegexp(
            "/^\:group\:end\:(\d+)$/",
            $key
        );

        preg_match("/^\:group\:end\:(\d+)$/", $key, $matches);
        $digit = $matches[1];

        $this->assertEquals(
            "foo/bar/:group:end:" . $digit,
            $result[':group:end:' . $digit]
        );
    }

    /**
     * Test for Form::readTypes
     *
     * @return void
     */
    public function testReadTypes()
    {
        $reflection = new \ReflectionClass('PMA\libraries\config\Form');
        $method = $reflection->getMethod('readTypes');
        $method->setAccessible(true);

        $this->object->fields = array(
            "pma_form1" => "Servers/1/port",
            "pma_form2" => "Servers/1/connect_type",
            ":group:end:0" => "preffoo/foo/bar/test",
            "1" => "preffoo/foo/bar/:group:end:0"
        );

        $attrFieldsTypes = $reflection->getProperty('_fieldsTypes');
        $attrFieldsTypes->setAccessible(true);

        $method->invoke($this->object, null);

        $this->assertEquals(
            array(
                "pma_form1" => "integer",
                "pma_form2" => "select",
                ":group:end:0" => "group",
                "1" => "NULL"
            ),
            $attrFieldsTypes->getValue($this->object)
        );
    }

    /**
     * Test for Form::loadForm
     *
     * @return void
     */
    public function testLoadForm()
    {
        $this->object = $this->getMockBuilder('PMA\libraries\config\Form')
            ->disableOriginalConstructor()
            ->setMethods(array('readFormPaths', 'readTypes'))
            ->getMock();

        $this->object->expects($this->exactly(1))
            ->method('readFormPaths')
            ->with('testForm');

        $this->object->expects($this->exactly(1))
            ->method('readTypes');

        $this->object->loadForm('pmaform', 'testForm');

        $this->assertEquals(
            'pmaform',
            $this->object->name
        );
    }
}
