Skip to content

Commit d49f39e

Browse files
committed
Improve tests
1 parent af4497b commit d49f39e

File tree

5 files changed

+115
-87
lines changed

5 files changed

+115
-87
lines changed

tests/DbgTest.php

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,44 +18,33 @@ class DbgTest extends \PHPUnit\Framework\TestCase
1818
{
1919
public function testPrintNumber()
2020
{
21-
$var = 123;
22-
$this->assertEquals('123', $this->captureOutput($var));
21+
$var = TestHelper::randomInt();
22+
23+
$this->assertEquals($var, $this->captureOutput($var));
2324
}
2425

2526
public function testPrintString()
2627
{
27-
$var = 'some string';
28+
$var = TestHelper::randomString();
29+
2830
$this->assertEquals($var, $this->captureOutput($var));
2931
}
3032

3133
public function testPrintArray()
3234
{
33-
$var = ['first', 'second', 'third'];
34-
$expected = <<<'EOT'
35-
Array
36-
(
37-
[0] => first
38-
[1] => second
39-
[2] => third
40-
)
35+
$var = TestHelper::randomArray();
36+
$expected = TestHelper::makeArrayOutput($var);
4137

42-
EOT;
4338
$this->assertEquals($expected, $this->captureOutput($var));
4439
}
4540

4641
public function testPrintArrayNonCli()
4742
{
4843
TestDebug::init();
49-
$var = ['first', 'second', 'third'];
50-
$expected = <<<'EOT'
51-
<pre>Array
52-
(
53-
[0] => first
54-
[1] => second
55-
[2] => third
56-
)
57-
</pre>
58-
EOT;
44+
45+
$var = TestHelper::randomArray();
46+
$expected = '<pre>' . TestHelper::makeArrayOutput($var) . '</pre>';
47+
5948
$this->assertEquals($expected, $this->captureOutput($var));
6049
}
6150

tests/DbgThrowTest.php

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,23 @@ class DbgThrowTest extends \PHPUnit\Framework\TestCase
2020
{
2121
public function testThrowNumber()
2222
{
23-
$var = 123;
23+
$var = TestHelper::randomInt();
24+
2425
$this->assertEquals($var, $this->captureException($var));
2526
}
2627

2728
public function testThrowString()
2829
{
29-
$var = 'some string';
30+
$var = TestHelper::randomString();
31+
3032
$this->assertEquals($var, $this->captureException($var));
3133
}
3234

3335
public function testThrowArray()
3436
{
35-
$var = ['first', 'second', 'third'];
36-
$expected = <<<'EOT'
37-
Array
38-
(
39-
[0] => first
40-
[1] => second
41-
[2] => third
42-
)
37+
$var = TestHelper::randomArray();
38+
$expected = TestHelper::makeArrayOutput($var);
4339

44-
EOT;
4540
$this->assertEquals($expected, $this->captureException($var));
4641
}
4742

tests/DbglogTest.php

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public function testLogNumberWithLogFile()
2626
'log_file' => $logfile
2727
]);
2828

29-
$var = random_int(PHP_INT_MIN, PHP_INT_MAX);
29+
$var = TestHelper::randomInt();
3030
dbglog($var);
3131

3232
$this->assertRegExp(
@@ -42,7 +42,7 @@ public function testLogStringWithLogFile()
4242
'log_file' => $logfile
4343
]);
4444

45-
$var = base64_encode(random_bytes(24));
45+
$var = TestHelper::randomString();
4646
dbglog($var);
4747

4848
$this->assertRegExp(
@@ -58,18 +58,10 @@ public function testLogArrayWithLogFile()
5858
'log_file' => $logfile
5959
]);
6060

61-
$var = ['first', 'second', 'third'];
61+
$var = TestHelper::randomArray();
6262
dbglog($var);
6363

64-
$expected = <<<'EOT'
65-
Array
66-
(
67-
[0] => first
68-
[1] => second
69-
[2] => third
70-
)
71-
72-
EOT;
64+
$expected = TestHelper::makeArrayOutput($var);
7365
$this->assertRegExp(
7466
TestHelper::makePattern($expected),
7567
file_get_contents($logfile)
@@ -83,21 +75,20 @@ public function testLogWithNoLogFile()
8375
'log_file' => null
8476
]);
8577

86-
$var = random_int(PHP_INT_MIN, PHP_INT_MAX);
78+
$var = TestHelper::randomInt();
8779
dbglog($var);
8880

8981
$this->assertEmpty(file_get_contents($logfile));
9082
}
9183

9284
public function testLogNumberWithLogger()
9385
{
94-
$fp = tmpfile();
95-
$logfile = stream_get_meta_data($fp)['uri'];
86+
$logfile = TestHelper::createTempFile();
9687
dbginit([
9788
'logger' => new Logger($logfile)
9889
]);
9990

100-
$var = random_int(PHP_INT_MIN, PHP_INT_MAX);
91+
$var = TestHelper::randomInt();
10192
dbglog($var);
10293

10394
$this->assertRegExp(
@@ -108,13 +99,12 @@ public function testLogNumberWithLogger()
10899

109100
public function testLogStringWithLogger()
110101
{
111-
$fp = tmpfile();
112-
$logfile = stream_get_meta_data($fp)['uri'];
102+
$logfile = TestHelper::createTempFile();
113103
dbginit([
114104
'logger' => new Logger($logfile)
115105
]);
116106

117-
$var = base64_encode(random_bytes(24));
107+
$var = TestHelper::randomString();
118108
dbglog($var);
119109

120110
$this->assertRegExp(
@@ -125,24 +115,16 @@ public function testLogStringWithLogger()
125115

126116
public function testLogArrayWithLogger()
127117
{
128-
$fp = tmpfile();
129-
$logfile = stream_get_meta_data($fp)['uri'];
118+
$logfile = TestHelper::createTempFile();
130119
dbginit([
131120
'logger' => new Logger($logfile)
132121
]);
133122

134-
$var = ['first', 'second', 'third'];
123+
$var = TestHelper::randomArray();
135124
dbglog($var);
136125

137-
$expected = <<<'EOT'
138-
Array
139-
(
140-
[0] => first
141-
[1] => second
142-
[2] => third
143-
)
126+
$expected = TestHelper::makeArrayOutput($var);
144127

145-
EOT;
146128
$this->assertRegExp(
147129
TestHelper::makePattern($expected),
148130
file_get_contents($logfile)
@@ -151,14 +133,13 @@ public function testLogArrayWithLogger()
151133

152134
public function testLogWithLoggerAndCustomDateFormat()
153135
{
154-
$fp = tmpfile();
155-
$logfile = stream_get_meta_data($fp)['uri'];
136+
$logfile = TestHelper::createTempFile();
156137
$dateFormat = 'Y/m/d H/i/s';
157138
dbginit([
158139
'logger' => new Logger($logfile, $dateFormat)
159140
]);
160141

161-
$var = random_int(PHP_INT_MIN, PHP_INT_MAX);
142+
$var = TestHelper::randomInt();
162143
dbglog($var);
163144

164145
$this->assertRegExp(
@@ -169,13 +150,12 @@ public function testLogWithLoggerAndCustomDateFormat()
169150

170151
public function testLogWithNoLogger()
171152
{
172-
$fp = tmpfile();
173-
$logfile = stream_get_meta_data($fp)['uri'];
153+
$logfile = TestHelper::createTempFile();
174154
dbginit([
175155
'logger' => null
176156
]);
177157

178-
$var = random_int(PHP_INT_MIN, PHP_INT_MAX);
158+
$var = TestHelper::randomInt();
179159
dbglog($var);
180160

181161
$this->assertEmpty(file_get_contents($logfile));

tests/DbgrTest.php

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,32 @@ class DbgrTest extends \PHPUnit\Framework\TestCase
2020
{
2121
public function testDebugNumber()
2222
{
23-
$var = 123;
24-
$this->assertSame('123', dbgr($var));
23+
$var = TestHelper::randomInt();
24+
25+
$this->assertEquals($var, dbgr($var));
2526
}
2627

2728
public function testDebugString()
2829
{
29-
$var = 'some string';
30+
$var = TestHelper::randomString();
31+
3032
$this->assertSame($var, dbgr($var));
3133
}
3234

3335
public function testDebugArray()
3436
{
35-
$var = ['first', 'second', 'third'];
36-
$expected = <<<'EOT'
37-
Array
38-
(
39-
[0] => first
40-
[1] => second
41-
[2] => third
42-
)
43-
44-
EOT;
37+
$var = TestHelper::randomArray();
38+
$expected = TestHelper::makeArrayOutput($var);
39+
4540
$this->assertEquals($expected, dbgr($var));
4641
}
4742

4843
public function testDebugStringUsingVardumpByInit()
4944
{
5045
dbginit(['use_vardump' => true]);
51-
$var = 'another string';
46+
47+
$var = TestHelper::randomString();
48+
5249
$this->assertSame(
5350
$this->extractDumped($this->captureVardump($var), 'string'),
5451
$this->extractDumped(dbgr($var), 'string')
@@ -57,7 +54,8 @@ public function testDebugStringUsingVardumpByInit()
5754

5855
public function testDebugStringUsingVardumpByArg()
5956
{
60-
$var = 'Some Third String';
57+
$var = TestHelper::randomString();
58+
6159
$this->assertSame(
6260
$this->extractDumped($this->captureVardump($var), 'string'),
6361
$this->extractDumped(dbgr($var, Debug::USE_VARDUMP), 'string')
@@ -67,13 +65,16 @@ public function testDebugStringUsingVardumpByArg()
6765
public function testDebugStringUsingHtmlentitiesByInit()
6866
{
6967
dbginit(['use_htmlentities' => true]);
70-
$var = '<b>Header<b>';
68+
69+
$var = '<b>' . TestHelper::randomInt() . '<b>';
70+
7171
$this->assertSame(htmlentities($var), dbgr($var));
7272
}
7373

7474
public function testDebugStringUsingHtmlentitiesByArg()
7575
{
76-
$var = '<b>Footer<b>';
76+
$var = '<b>' . TestHelper::randomInt() . '<b>';
77+
7778
$this->assertSame(htmlentities($var), dbgr($var, Debug::USE_HTMLENTITIES));
7879
}
7980

tests/TestHelper.php

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,42 @@ class TestHelper
2525
*/
2626
private static $fp;
2727

28+
/**
29+
* Generate a random int.
30+
*
31+
* @return int
32+
*/
33+
public static function randomInt(): int
34+
{
35+
return random_int(PHP_INT_MIN, PHP_INT_MAX);
36+
}
37+
38+
/**
39+
* Generate a random string.
40+
*
41+
* @return string
42+
*/
43+
public static function randomString(): string
44+
{
45+
$numChars = random_int(1, 340);
46+
return substr(base64_encode(random_bytes(256)), 0, $numChars);
47+
}
48+
49+
/**
50+
* Generate a random array.
51+
*
52+
* @return array
53+
*/
54+
public static function randomArray(): array
55+
{
56+
$entries = [];
57+
$numEntries = random_int(5, 25);
58+
while ($numEntries-- > 0) {
59+
$entries[self::randomInt()] = self::randomString();
60+
}
61+
return $entries;
62+
}
63+
2864
/**
2965
* Create temporary file.
3066
*
@@ -38,7 +74,7 @@ public static function createTempFile(): string
3874
}
3975

4076
/**
41-
* Make regexp pattern for variable.
77+
* Create regexp pattern for variable.
4278
*
4379
* @param mixed $var The variable to analyse.
4480
*
@@ -62,4 +98,31 @@ public static function makePattern($var, string $dateFormat = Logger::DATE_FORMA
6298
);
6399
return '/' . $datePattern . ': ' . preg_quote($var, '/') . '/';
64100
}
101+
102+
/**
103+
* Create expected output for an array.
104+
*
105+
* @param array $entries The array to analyse.
106+
*
107+
* @return string
108+
*/
109+
public static function makeArrayOutput(array $entries): string
110+
{
111+
$output = '';
112+
foreach ($entries as $key => $value) {
113+
$output .= <<<EOT
114+
[{$key}] => {$value}
115+
116+
EOT;
117+
}
118+
$output = rtrim($output);
119+
120+
return <<<EOT
121+
Array
122+
(
123+
{$output}
124+
)
125+
126+
EOT;
127+
}
65128
}

0 commit comments

Comments
 (0)