1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Test for parsing of Routine parameters
*
* @package PhpMyAdmin-test
*/
/*
* Needed for PMA_Util::unQuote() and PMA_SQP_parse()
*/
require_once 'libraries/Util.class.php';
require_once 'libraries/sqlparser.lib.php';
/*
* Include to test.
*/
require_once 'libraries/rte/rte_routines.lib.php';
/**
* Test for parsing of Routine parameters
*
* @package PhpMyAdmin-test
*/
class PMA_RTN_ParameterParser_Test extends PHPUnit_Framework_TestCase
{
/**
* Test for PMA_RTN_parseRoutineDefiner
*
* @param string $source Source
* @param array $target Expected output
*
* @return void
*
* @dataProvider definerProvider
*/
public function testParseDefiner($source, $target)
{
PMA_RTN_setGlobals();
$this->assertEquals(
$target,
PMA_RTN_parseRoutineDefiner(PMA_SQP_parse($source))
);
}
/**
* Data provider for testParseDefiner
*
* @return array
*/
public function definerProvider()
{
return array(
array('CREATE PROCEDURE FOO() SELECT NULL', ''),
array(
'CREATE DEFINER=`root`@`localhost` PROCEDURE FOO() SELECT NULL',
'root@localhost'
),
array(
'CREATE DEFINER=`root\\`@`localhost` PROCEDURE FOO() SELECT NULL',
'root\\@localhost'
),
);
}
/**
* Test for PMA_RTN_parseOneParameter
*
* @param string $source Source
* @param array $target Expected output
*
* @return void
*
* @dataProvider paramProvider
*/
public function testParseOneParameter($source, $target)
{
PMA_RTN_setGlobals();
$this->assertEquals($target, PMA_RTN_parseOneParameter($source));
}
/**
* Data provider for testParseOneParameter
*
* @return array
*/
public function paramProvider()
{
return array(
array('`foo` TEXT', array('', 'foo', 'TEXT', '', '')),
array('`foo` INT(20)', array('', 'foo', 'INT', '20', '')),
array('DECIMAL(5,5)', array('', '', 'DECIMAL', '5,5', '')),
array(
'IN `fo``fo` INT UNSIGNED',
array('IN', 'fo`fo', 'INT', '', 'UNSIGNED')
),
array(
'OUT bar VARCHAR(1) CHARSET utf8',
array('OUT', 'bar', 'VARCHAR', '1', 'utf8')
),
array(
'`"baz\'\'` ENUM(\'a\', \'b\') CHARSET latin1',
array('', '"baz\'\'', 'ENUM', '\'a\',\'b\'', 'latin1')
),
array(
'INOUT `foo` DECIMAL(5,2) UNSIGNED ZEROFILL',
array('INOUT', 'foo', 'DECIMAL', '5,2', 'UNSIGNED ZEROFILL')
),
array(
'`foo``s func` SET(\'test\'\'esc"\', \'more\\\'esc\')',
array(
'', 'foo`s func', 'SET', '\'test\'\'esc"\',\'more\\\'esc\'', ''
)
)
);
}
}
?>
|