元ネタ
rubyで世界のナベアツさんのネタを実装してテストを書く - Qiita
これを書いたあとPHPでも書きたくなりやってみました。
テストは書いてません。
実行したらrubyでやったものと同じように出力できたのでよしとします。
仕様
最初に「これから面白いことつまりオモローなことをします」という
1から40まで数を数える
3がつく数字のときアホになる
3の倍数のときアホになる
5の倍数のとき犬になる(3と5の倍数なら犬になる)
最後に「オモロー」という
omoro_class.php
<?php
class Omoro
{
const TSUKAMI = "これから面白いことつまりオモローなことをします";
const OCHI = "オモロー";
const TSUJO_KAO_MOJI = "( ・`ω・´)";
const AHO_KAO_MOJI = "ʅ( ՞ਊ՞)ʃ≡";
const DOG_KAO_MOJI = "∪・ω・∪";
// ネタ
public function main($max_kazu = 40)
{
$this->speak(self::TSUKAMI);
for ($figure = 1; $figure <= $max_kazu; $figure++) {
sleep(1);
$kao_moji = $this->verification($figure);
$serif = $this->make_serif($figure, $kao_moji);
$this->speak($serif);
}
$this->speak(self::OCHI);
}
// セリフを作る
public function make_serif($figure, $kao_moji)
{
return $figure . $kao_moji;
}
// 判断する
private function verification($figure)
{
if ($figure % 5 == 0) {
return self::DOG_KAO_MOJI;
}
if ($figure % 3 == 0 || strpos($figure, '3') !== false) {
return self::AHO_KAO_MOJI;
}
return self::TSUJO_KAO_MOJI;
}
// 話す
private function speak($serif)
{
echo $serif . "\n";
}
}
$omoro = new Omoro();
$omoro->main(40);
テスト
テストも少しだけ書いた。
omoroTest.php
<?php
use PHPUnit\Framework\TestCase;
require('./omoro_class.php');
class omoroTest extends TestCase
{
const TSUKAMI = "これから面白いことつまりオモローなことをします";
const OCHI = "オモロー";
const TSUJO_KAO_MOJI = "( ・`ω・´)";
const AHO_KAO_MOJI = "ʅ( ՞ਊ՞)ʃ≡";
const DOG_KAO_MOJI = "∪・ω・∪";
public function testMakeSerif1()
{
$omoro = new Omoro();
$serif = $omoro->make_serif(1, self::TSUJO_KAO_MOJI);
$this->assertSame('1( ・`ω・´)', $serif);
}
public function testMakeSerif3()
{
$omoro = new Omoro();
$serif = $omoro->make_serif(3, self::AHO_KAO_MOJI);
$this->assertSame('3ʅ( ՞ਊ՞)ʃ≡', $serif);
}
public function testMakeSerifInu()
{
$omoro = new Omoro();
$serif = $omoro->make_serif(5, self::DOG_KAO_MOJI);
$this->assertSame('5∪・ω・∪', $serif);
}
public function testMakeSerif33()
{
$omoro = new Omoro();
$serif = $omoro->make_serif(33, self::AHO_KAO_MOJI);
$this->assertSame('33ʅ( ՞ਊ՞)ʃ≡', $serif);
}
}