[Tͪ#n$;<:a4sX[y ,)odP;GӠ?hk'Bzy 4P99V-y1|AWI}`APЧx#^0	vHL*pa|oum]D +~bC'|Ư8W5hz<-tyoѓ}/eޝ""/椢Li7x"0X5Ir̒3T1UJAR@J*V3*.N&A}>]5Mؾp(M8!UzTelGe&yQauvB?^z}^[7~̽.[)XH9ܸNOteIu)3*.N&A}oZNI3)6{ΣKqܿ
 *	A9	-#O@:N4=ZWn;G$et?nRM4 drNNqð5'4;"k_+({p#L£Ma4
&-5L!'KڀDH>vTf{R|)v&!Pr!sb~Gy%.HgI70ߑ8)m Oj#5Fw(%\bq ZY'2eqٍ?&'HiΪ_ƍn}4{ވN[?Q4)UhV	A_oFzVGr#a(N{Rߺ)}"}<=NDXٙu0ƨ%v ^꺘ʇmgoOTcD3]wLvbºEӘp DQRLj"e6bpiҔrmXɽUdW1X~ |!$x
"As)9*]a,If.ș"iƄ7ěi3::4$kV<22('$zbp_2):{xwϔ?|jM8f.ș"iƄ7ěI1Ohp.n-##Q~]p(${eT:5*W
#3 d
OpcNc,w7P>&9`*^X=W3RAr0R#Ąr(p|jHuŖȩKk4?/u&A!HTdMW\)ܵC_azm,7żH,$"-8HQo$L ZZ(]Y~܁b	eN)4&2񻐪tc	6Wԋ+ɯ&lƲT$ ӎ(zLeOG6v8NQ$/+-y<}Dx4̮
'	8L"(u|rk؃n;N$sǭ5XivaFX},OG5$mP9^)0.A|5B=+4R )Bt=-mS` 4jX3!h%ߦTA=4%7֟@ҜΩa)p9{G3߲/+-y<}DxyBڮwBvR*ؑ-]< ;L^36yE@i6͌P>2NqF?idae\2xQ1f_F[68pj9V0H&jHdZj|" c<zNH~耩H9oiA~}~@+gͶ;檈.ZOKZSwr-'GDSX/+-y<}Dx4̮
'	8L"(uFT{ս`XKƨ3^`|',ɸ]w+B5&ƌsBȇytG);<z8.[68pj9T15(r"N3>V)Bt=-mS` J")zK
U,=ЅeOlSi/~m)6 um?"%~sȢwqʿ$&SOӯ%&s(zvi,Xv}e	WWƱR=dub{CmʢoG$ʩTFk2`rgFg*jx*k 8c^Jx89:JI1'Mq[g?ï!ȼVO}nF{w49-(6-z֬=Fz@I{0i!$NB_
GJ*˩J=I:J-A!r9-(6-z֬x-oE[Drl"&R02ȕC,R
fDģIӭI ]])?Y1g"/&H6QZpD!ɨb旌iqo"
NF3pBIwݰGf2^FZD<$>E%[-e3į/Y@؉f'.)0]Ʌ$y'52ro޶J
8ʪԉ'E>Qو|Fuh,Ķ_^¬YwtǣN=nTʑ7؋ 7n0c:w6˥%7PTKg.FkIRHbM""ԭF$luAh1[s	(@/G(*cv1n[6/| aNqìm9j&01:1q;{ :`>DYijK
,WP#|%}ht.B00DBsLZiHTv\ɏ%s%rL̦pځ;l_4o3;Bl(>RL酦ϲiնH-w^AՖ[P]uȲ0AݠSߦesov9]Lj^JŽ|ѽH޶ƣH?yc]bMf(TFV&AB{a0`'	!9^時)cAĐz{qǋW-K=캡渗uBV؍J?iwGJXa>B'hȽbǗ~`FPRLE"-fdq9]m285{pO~eg	4A6ޠDrGO?w°qF"[AݓY6o^_>dDf&Rc>	̗55衎4GǂwSo@x%vqwrӐR'|nٸܭ6j`o CdH!Mf!%U	uSׁ!UYL|̓v@?#\@[Ls`FAj%SO16G!]oBNn^JeK˽\~Uv{`4r ݣ~ay[~9d=Ŕ3Nᾣ1#Ɏz3]]<E6IL}ӣUxwϔ?|jM83Nᾣ1#Ɏzw:⻎i6^܏}Zl
|I5t&F˭g;RfQE&ߕFV^T6&pҼ(BD	y-Ag^-XƐP1ZY3+ Rg	IZz<_rZ]1]}gjz m
y[
$ns_1g\ . 9&#QWuW2gn/(S{OCI,Is|kQʀ%}jv*BzNqwrӐRny())
            ->method('getColumnNames')
            ->will($this->returnValue(array("id", "col1", "col2")));
        $dbi->expects($this->any())
            ->method('tryQuery')
            ->will($this->returnValue(true));
        $dbi->expects($this->any())
            ->method('getTables')
            ->will(
                $this->returnValue(array("PMA_table", "PMA_table1", "PMA_table2"))
            );
        $dbi->expects($this->any())->method('escapeString')
            ->will($this->returnArgument(0));

    }

    /**
     * Test for PMA_centralColumnsGetParams
     *
     * @return void
     */
    public function testPMACentralColumnsGetParams()
    {
        $this->assertSame(
            array(
                'user' => 'pma_user',
                'db' => 'phpmyadmin',
                'table' => 'pma_central_columns'
            ),
            PMA_centralColumnsGetParams()
        );
    }

    /**
     * Test for PMA_getColumnsList
     *
     * @return void
     */
    public function testPMAGetColumnsList()
    {
        $GLOBALS['dbi']->expects($this->exactly(2))
            ->method('fetchResult')
            ->willReturnOnConsecutiveCalls(
                $this->_columnData,
                array_slice($this->_columnData, 1, 2)
            );

        $this->assertEquals(
            $this->_modifiedColumnData,
            PMA_getColumnsList('phpmyadmin')
        );
        $this->assertEquals(
            array_slice($this->_modifiedColumnData, 1, 2),
            PMA_getColumnsList('phpmyadmin', 1, 2)
        );
    }

    /**
     * Test for PMA_getCentralColumnsCount
     *
     * @return void
     */
    function testPMAGetCentralColumnsCount()
    {
        $GLOBALS['dbi']->expects($this->once())
            ->method('fetchResult')
            ->with(
                "SELECT count(db_name) FROM `pma_central_columns` "
                . "WHERE db_name = 'phpmyadmin';",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue(array(3))
            );

        $this->assertEquals(
            3,
            PMA_getCentralColumnsCount('phpmyadmin')
        );
    }

    /**
     * Test for PMA_syncUniqueColumns
     *
     * @return void
     */
    public function testPMASyncUniqueColumns()
    {
        $_REQUEST['db'] = 'PMA_db';
        $_REQUEST['table'] = 'PMA_table';

        $this->assertTrue(
            PMA_syncUniqueColumns(array('PMA_table'))
        );
    }

    /**
     * Test for PMA_deleteColumnsFromList
     *
     * @return void
     */
    public function testPMADeleteColumnsFromList()
    {
        $_REQUEST['db'] = 'PMA_db';
        $_REQUEST['table'] = 'PMA_table';

        // when column exists in the central column list
        $GLOBALS['dbi']->expects($this->at(4))
            ->method('fetchResult')
            ->with(
                "SELECT col_name FROM `pma_central_columns` "
                . "WHERE db_name = 'PMA_db' AND col_name IN ('col1');",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue(array('col1'))
            );

        $GLOBALS['dbi']->expects($this->at(7))
            ->method('tryQuery')
            ->with(
                "DELETE FROM `pma_central_columns` "
                . "WHERE db_name = 'PMA_db' AND col_name IN ('col1');",
                $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue(array('col1'))
            );

        $this->assertTrue(
            PMA_deleteColumnsFromList(array("col1"), false)
        );

        // when column does not exist in the central column list
        $this->assertInstanceOf(
            'PMA\libraries\Message', PMA_deleteColumnsFromList(array('column1'), false)
        );

        $this->assertInstanceOf(
            'PMA\libraries\Message', PMA_deleteColumnsFromList(array('PMA_table'))
        );
    }

    /**
     * Test for PMA_makeConsistentWithList
     *
     * @return void
     */
    public function testPMAMakeConsistentWithList()
    {
        $GLOBALS['dbi']->expects($this->any())
            ->method('fetchResult')
            ->will(
                $this->returnValue($this->_columnData)
            );
        $GLOBALS['dbi']->expects($this->any())
            ->method('fetchValue')
            ->will(
                $this->returnValue('PMA_table=CREATE table `PMA_table` (id integer)')
            );
        $this->assertTrue(
            PMA_makeConsistentWithList("phpmyadmin", array('PMA_table'))
        );
    }

    /**
     * Test for PMA_getCentralColumnsFromTable
     *
     * @return void
     */
    public function testPMAGetCentralColumnsFromTable()
    {
        $db = 'PMA_db';
        $table = 'PMA_table';

        $GLOBALS['dbi']->expects($this->once())
            ->method('fetchResult')
            ->with(
                "SELECT col_name FROM `pma_central_columns` "
                . "WHERE db_name = 'PMA_db' AND col_name IN ('id','col1','col2');",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue(array('id','col1'))
            );
        $this->assertEquals(
            array("id", "col1"),
            PMA_getCentralColumnsFromTable($db, $table)
        );
    }

    /**
     * Test for PMA_getCentralColumnsFromTable with $allFields = true
     *
     * @return void
     */
    public function testPMAGetCentralColumnsFromTableWithAllFields()
    {
        $db = 'PMA_db';
        $table = 'PMA_table';

        $GLOBALS['dbi']->expects($this->once())
            ->method('fetchResult')
            ->with(
                "SELECT * FROM `pma_central_columns` "
                . "WHERE db_name = 'PMA_db' AND col_name IN ('id','col1','col2');",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue(array_slice($this->_columnData, 0, 2))
            );
        $this->assertEquals(
            array_slice($this->_modifiedColumnData, 0, 2),
            PMA_getCentralColumnsFromTable($db, $table, true)
        );
    }

    /**
     * Test for PMA_updateOneColumn
     *
     * @return void
     */
    public function testPMAUpdateOneColumn()
    {
        $this->assertTrue(
            PMA_updateOneColumn(
                "phpmyadmin", "", "", "", "", "", "", "", "", ""
            )
        );
        $this->assertTrue(
            PMA_updateOneColumn(
                "phpmyadmin", "col1", "", "", "", "", "", "", "", ""
            )
        );
    }

    /**
     * Test for PMA_updateMultipleColumn
     *
     * @return void
     */
    public function testPMAUpdateMultipleColumn()
    {
        $_POST['db'] = 'phpmyadmin';
        $_POST['orig_col_name'] = array("col1","col2");
        $_POST['field_name'] = array("col1","col2");
        $_POST['field_default_type'] = array("","");
        $_POST['col_extra'] = array("","");
        $_POST['field_length'] = array("","");
        $_POST['field_attribute'] = array("","");
        $_POST['field_type'] = array("","");
        $_POST['field_collation'] = array("","");
        $this->assertTrue(
            PMA_updateMultipleColumn()
        );

    }

    /**
     * Test for PMA_getHTMLforEditingPage
     *
     * @return void
     */
    public function testPMAGetHTMLforEditingPage()
    {
        $GLOBALS['dbi']->expects($this->any())
            ->method('fetchResult')
            ->with(
                "SELECT * FROM `pma_central_columns` "
                . "WHERE db_name = 'phpmyadmin' AND col_name IN ('col1','col2');",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue($this->_columnData)
            );
        $result = PMA_getHTMLforEditingPage(
            array("col1", "col2"), 'phpmyadmin'
        );
        $this->assertContains(
            '<form',
            $result
        );
        $header_cells = array(
        __('Name'), __('Type'), __('Length/Values'), __('Default'),
        __('Collation'), __('Attributes'), __('Null'), __('A_I')
        );
        $this->assertContains(
            PMA_getCentralColumnsEditTableHeader($header_cells), $result
        );
        $list_detail_cols = PMA_findExistingColNames(
            'phpmyadmin', "'col1','col2'", true
        );
        $this->assertContains(
            PMA_getHTMLforCentralColumnsEditTableRow(
                $list_detail_cols[0], false, 0
            ), $result
        );
        $this->assertContains(
            PMA_getCentralColumnsEditTableFooter(), $result
        );

    }

    /**
     * Test for PMA_getHTMLforTableNavigation
     *
     * @return void
     */
    public function testPMAGetHTMLforTableNavigation()
    {
        $result = PMA_getHTMLforTableNavigation(0, 0, 'phpmyadmin');
        $this->assertContains(
            '<table',
            $result
        );
        $this->assertContains(
            __('Search this table'),
            $result
        );
        $result_1 = PMA_getHTMLforTableNavigation(25, 10, 'phpmyadmin');
        $this->assertContains(
            '<form action="db_central_columns.php" method="post">'
            . PMA_URL_getHiddenInputs(
                'phpmyadmin'
            ),
            $result_1
        );
        $this->assertContains(
            '<input type="submit" name="navig"'
            . ' class="ajax" '
            . 'value="&lt" />',
            $result_1
        );
        $this->assertContains(
            PMA\libraries\Util::pageselector(
                'pos', 10, 2, 3
            ),
            $result_1
        );
        $this->assertContains(
            '<input type="submit" name="navig"'
            . ' class="ajax" '
            . 'value="&gt" />',
            $result_1
        );
    }

    /**
     * Test for PMA_getCentralColumnsTableHeader
     *
     * @return void
     */
    public function testPMAGetCentralColumnsTableHeader()
    {
        $this->assertContains(
            '<thead',
            PMA_getCentralColumnsTableHeader(
                'column_heading', __('Click to sort'), 2
            )
        );
    }

    /**
     * Test for PMA_getCentralColumnsListRaw
     *
     * @return void
     */
    public function testPMAGetCentralColumnsListRaw()
    {
        $GLOBALS['dbi']->expects($this->once())
            ->method('fetchResult')
            ->with(
                "SELECT * FROM `pma_central_columns` "
                . "WHERE db_name = 'phpmyadmin';",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue($this->_columnData)
            );
        $this->assertEquals(
            json_encode($this->_modifiedColumnData),
            PMA_getCentralColumnsListRaw('phpmyadmin', '')
        );
    }

    /**
     * Test for PMA_getCentralColumnsListRaw with a table name
     *
     * @return void
     */
    public function testPMAGetCentralColumnsListRawWithTable()
    {
        $GLOBALS['dbi']->expects($this->once())
            ->method('fetchResult')
            ->with(
                "SELECT * FROM `pma_central_columns` "
                . "WHERE db_name = 'phpmyadmin' AND col_name "
                . "NOT IN ('id','col1','col2');",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue($this->_columnData)
            );
        $this->assertEquals(
            json_encode($this->_modifiedColumnData),
            PMA_getCentralColumnsListRaw('phpmyadmin', 'table1')
        );

    }

    /**
     * Test for PMA_getHTMLforAddNewColumn
     *
     * @return void
     */
    public function testPMAGetHTMLforAddNewColumn()
    {
        $result = PMA_getHTMLforAddNewColumn('phpmyadmin');
        $this->assertContains(
            '<form',
            $result
        );
        $this->assertContains(
            '<table',
            $result
        );
        $this->assertContains(
            __('Add new column'),
            $result
        );
        $this->assertContains(
            PMA_URL_getHiddenInputs('phpmyadmin'),
            $result
        );
    }

    /**
     * Test for PMA_configErrorMessage
     *
     * @return void
     */
    public function testPMAConfigErrorMessage()
    {
        $this->assertInstanceOf(
            'PMA\libraries\Message',
            PMA_configErrorMessage()
        );
    }

    /**
     * Test for PMA_findExistingColNames
     *
     * @return void
     */
    public function testPMAFindExistingColNames()
    {
        $GLOBALS['dbi']->expects($this->once())
            ->method('fetchResult')
            ->with(
                "SELECT * FROM `pma_central_columns` WHERE db_name = 'phpmyadmin'"
                . " AND col_name IN ('col1');",
                null, null, $GLOBALS['controllink']
            )
            ->will(
                $this->returnValue(array_slice($this->_columnData, 1, 1))
            );
        $this->assertEquals(
            array_slice($this->_modifiedColumnData, 1, 1),
            PMA_findExistingColNames('phpmyadmin', "'col1'", true)
        );
    }

    /**
     * Test for PMA_getHTMLforTableDropdown
     *
     * @return void
     */
    public function testPMAGetHTMLforTableDropdown()
    {
        $db = 'PMA_db';
        $result = PMA_getHTMLforTableDropdown($db);
        $this->assertContains(
            '<select name="table-select" id="table-select"',
            $result
        );
        $this->assertContains(
            '<option value="PMA_table"',
            $result
        );
    }

    /**
     * Test for PMA_getHTMLforColumnDropdown
     *
     * @return void
     */
    public function testPMAGetHTMLforColumnDropdown()
    {
        $db = 'PMA_db';
        $selected_tbl = 'PMA_table';
        $result = PMA_getHTMLforColumnDropdown($db, $selected_tbl);
        $this->assertEquals(
            '<option value="id">id</option><option value="col1">col1</option>'
            . '<option value="col2">col2</option>',
            $result
        );
    }

    /**
     * Test for PMA_getHTMLforAddCentralColumn
     *
     * @return void
     */
    public function testPMAGetHTMLforAddCentralColumn()
    {
        $result = PMA_getHTMLforAddCentralColumn(20, 0, 'phpmyadmin');
        $this->assertContains(
            '<table',
            $result
        );
        $this->assertContains(
            '<form',
            $result
        );
        $this->assertContains(
            PMA_URL_getHiddenInputs('phpmyadmin')
            . '<input type="hidden" name="add_column" value="add">'
            . '<input type="hidden" name="pos" value="0" />'
            . '<input type="hidden" name="total_rows" value="20"/>',
            $result
        );
    }

    /**
     * Test for PMA_getCentralColumnsTableFooter
     *
     * @return void
     */
    public function testPMAGetCentralColumnsTableFooter()
    {
        $pmaThemeImage = "pmaThemeImage";
        $text_dir = "text_dir";
        if (!defined("PMA_USR_BROWSER_AGENT")) {
            define("PMA_USR_BROWSER_AGENT", "other");
        }
        $result = PMA_getCentralColumnsTableFooter($pmaThemeImage, $text_dir);
        $this->assertContains(
            '<input type="checkbox" id="tableslistcontainer_checkall" class="checkall_box"',
            $result
        );
        $this->assertContains("With selected:", $result);
        $this->assertContains(
            '<button class="mult_submit change_central_columns"',
            $result
        );
    }
}
