In PHP development, the bindec() function is commonly used to convert binary strings into decimal numbers. To ensure the correctness of our code, we usually write unit tests to verify the function’s behavior. This article explains how to simulate binary input in unit tests and verify the output of the bindec() function.
bindec() is a built-in PHP function that converts a binary string into the corresponding decimal integer. For example:
<?php
echo bindec("1101"); // Outputs 13
In real-world projects, binary data may come from various sources, such as files, network streams, or user input. To ensure that bindec() functions reliably under different input scenarios, unit tests should cover boundary conditions and invalid inputs.
The following example shows how to use PHPUnit to simulate various binary inputs and verify whether the output of bindec() matches expectations.
<?php
use PHPUnit\Framework\TestCase;
<p>class BindecTest extends TestCase<br>
{<br>
/**<br>
* Provides a variety of test cases, including valid and invalid input<br>
*/<br>
public function binaryProvider()<br>
{<br>
return [<br>
['0', 0],<br>
['1', 1],<br>
['1010', 10],<br>
['11111111', 255],<br>
['100000000', 256],<br>
['invalid', 0], // Non-binary string: bindec returns 0<br>
['', 0], // Empty string returns 0<br>
];<br>
}</p>
* @dataProvider binaryProvider
*/
public function testBindecConversion($binary, $expected)
{
$result = bindec($binary);
$this->assertSame($expected, $result, "Binary input: $binary");
}
}
The binaryProvider() method defines multiple sets of test data, covering standard binary numbers, empty strings, and invalid strings.
Using the @dataProvider annotation, the test data is passed into the test method to verify bindec()'s return value one by one.
For invalid binary strings, bindec() returns 0—this is its built-in behavior.
Assuming your project structure and PHPUnit configuration are properly set up, run the following command:
php vendor/bin/phpunit tests/BindecTest.php
If all assertions pass, it means bindec() behaves correctly under various input scenarios.
This article demonstrated how to simulate binary input in PHP unit tests and feed various strings into the bindec() function using a data provider to verify its output. This approach not only applies to bindec() but is also suitable for testing other built-in or custom functions against boundary and exceptional input cases.