tetsunosukeのnotebook

tetsunosukeのメモです

組み込みの機能にもテストを書こう

割と有名な、PHPの文字列と数値を「==」で比較するときは気をつけましょう
っていうやつなんですけど、
こういう挙動っていつの間にかPHPがアップデートされたら治るかもしれないし、
そもそも挙動を確認するためにみんなちょっとしたスクリプトを書いてみたりするよね?

ってことで、下記のようにテストスクリプトにしちゃえばいいんんじゃないか?
ということで書いてみた。

<?php
class EqualTest extends PHPUnit_Framework_TestCase
{
    public function testEquals()
    {
        $this->assertTrue("1" == 1);
        // 数値として解釈できるところまで解釈
        $this->assertTrue("1a" == 1);
        // 数字文字列同士の比較は先頭スペースを無視 ← これ今まで知らなかったー
        $this->assertTrue("10" == "       10");
        $this->assertTrue("  10" == "       10");
        $this->assertFalse("aa" == "       aa");
        // 16進数で表記した文字列と実際の数値
        $this->assertTrue("0xA" == 10);

        $this->assertTrue("0xA" == 0xA);
        $this->assertFalse("10" == "10   ");
    }
}

新しい事実を知ることもできたのでよしとする。