PHP開発中、 bindec()関数は、バイナリ文字列を10進数に変換するためによく使用されます。コードの正しさを確保するために、通常、機能動作を検証するための単体テストを記述します。この記事では、単体テストでバイナリ入力をシミュレートし、 bindec()関数の出力結果を検証する方法を紹介します。
bindec()は、バイナリ文字列を対応する10進整数に変換するPHPビルトイン関数です。たとえば、:
<?php
echo bindec("1101"); // 出力 13
実際のプロジェクトでは、バイナリデータは、ファイル、ネットワークデータストリーム、ユーザー入力などの複数のチャネルから得られる場合があります。 Bindec()がさまざまな入力シナリオで安定して動作できるようにするために、単体テストでは境界条件と例外入力をカバーする必要があります。
次の例は、phpunitを使用して複数のバイナリ入力をシミュレートし、 Bindec()出力が予想どおりであることを確認する方法を示しています。
<?php
use PHPUnit\Framework\TestCase;
class BindecTest extends TestCase
{
/**
* さまざまなテストケースを提供します,通常の入力と異常な入力が含まれます
*/
public function binaryProvider()
{
return [
['0', 0],
['1', 1],
['1010', 10],
['11111111', 255],
['100000000', 256],
['invalid', 0], // 非バイナリ文字列 bindec 戻る0
['', 0], // 空字符串戻る0
];
}
/**
* @dataProvider binaryProvider
*/
public function testBindecConversion($binary, $expected)
{
$result = bindec($binary);
$this->assertSame($expected, $result, "Binary input: $binary");
}
}
BinaryProvider()メソッドは、通常のバイナリ数、空の文字列、違法な文字列をカバーする複数のテストデータセットを定義します。
@Dataproviderアノテーションを介してテストデータをテスト方法に渡し、 Bindec()の返品値を1つずつ確認します。
違法なバイナリ文字列の場合、 bindec()は0を返します。これは組み込みの動作です。
Project Directory構造とphPunit構成の準備が整っていると仮定すると、コマンドを実行します。
php vendor/bin/phpunit tests/BindecTest.php
すべてのアサーションが渡された場合、それはbindec()が複数の入力で正常に実行されることを意味します。
この記事では、PHPユニットテストでのバイナリ入力をシミュレーションし、データプロバイダーを介して複数の文字列をbindec()関数に渡し、出力結果を確認する方法について説明します。この方法は、 bindec()だけでなく、類似の組み込みまたはカスタム関数のボーダーおよび例外入力テストにも適しています。