LoginSignup
1
2

More than 3 years have passed since last update.

PHPで世界のナベアツさんのネタを実装してテストを書く

Last updated at Posted at 2020-08-02

元ネタ
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);
  }
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2