Skip to content

Instantly share code, notes, and snippets.

@araiguma
Last active November 6, 2017 06:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save araiguma/5f9934caebf93edb11f23f159dbf1228 to your computer and use it in GitHub Desktop.
Save araiguma/5f9934caebf93edb11f23f159dbf1228 to your computer and use it in GitHub Desktop.
Unit test of Araiguma\Common\Validator\Length
<?php
namespace Test;
use \Phalcon\Validation;
use \Araiguma\Common\Validator\Length;
use \Phalcon\Validation\Message;
class LengthTest extends \UnitTestCase
{
/**
* @var \Validation
*/
private $validation;
/**
* 初期設定
*/
public function setUp()
{
parent::setUp();
$this->validation = new Validation();
}
/**
* デストラクタ
*/
public function __destruct()
{
}
public function provider_for_バリデーションの確認テスト()
{
return array(
array(array(), 0, 1, 0, 'valがないはOK'),
array(array('val'=>null), 0, 1, 0, 'nullもOK'),
array(array('val'=>""), 0, 1, 0, '""は0文字なのでOK'),
array(array('val'=>""), 1, 1, 1, '""は0文字なのでNG'),
array(array('val'=>"a"), 1, 1, 0, '"a"は1文字なのでOK'),
array(array('val'=>"a"), 0, 3, 0, '"a"は1文字なのでOK'),
array(array('val'=>"a"), 2, 4, 1, '"a"は1文字なのでNG'),
array(array('val'=>0), 0, 1, 0, '0は1文字なのでOK'),
array(array('val'=>1), 0, 1, 0, '1は1文字なのでOK'),
array(array('val'=>"aaa"), 0, 5, 0, '範囲内なのでOK'),
array(array('val'=>"あああ"), 3, 5, 1, '全角は1文字を長さ2で扱うのでNG'),
array(array('val'=>"aaa"), 3, 3, 0, '範囲外なのでOK'),
array(array('val'=>"aaa"), 4, 5, 1, '範囲外なのでNG'),
array(array('val'=>"aaa"), 0, 2, 1, '範囲外なのでNG'),
array(array('val'=>1111), 0, 5, 0, '1111は4文字とするのでOK'),
array(array('val'=>1111), 5, 5, 1, '1111は4文字とするのでNG'),
array(array('val'=>1111), 0, 3, 1, '1111は4文字とするのでNG'),
array(array('val'=>true), 0, 4, 0, 'trueは文字とみる。OK'),
array(array('val'=>true), 5, 5, 1, 'trueは文字とみる。NG'),
array(array('val'=>true), 0, 3, 1, 'trueは文字とみる。NG'),
array(array('val'=>false), 0, 4, 0, 'falseは文字とみる。OK'),
array(array('val'=>false), 5, 5, 1, 'falseは文字とみる。NG'),
array(array('val'=>false), 0, 3, 1, 'falseは文字とみる。NG'),
);
}
/**
* @dataProvider provider_for_バリデーションの確認テスト
* @test
*/
public function バリデーションの確認テスト($arr, $min, $max, $errCount, $message)
{
$this->validation->add(
'val',
new Length($min, $max)
);
$messages = $this->validation->validate($arr);
$this->assertSame(count($messages),$errCount, $message);
}
public function provider_for_マルチバイトの確認テスト()
{
return array(
array(array('val'=>"a"), 1, 1, 0, '文字列の範囲内なのでOK'),
array(array('val'=>"あ"), 1, 1, 0, '全角も一文字として扱うのでOK'),
array(array('val'=>"あ"), 1, 2, 0, '文字列の範囲内なのでOK'),
array(array('val'=>"aaaあ"), 4, 4, 0, '文字列の範囲内なのでOK'),
array(array('val'=>"aaaあ"), 5, 10, 1, '文字列の範囲内なのでOK'),
);
}
/**
* @dataProvider provider_for_マルチバイトの確認テスト
* @test
*/
public function マルチバイトの確認テスト($arr, $min, $max, $errCount, $message)
{
$this->validation->add(
'val',
new Length($min, $max, true)
);
$messages = $this->validation->validate($arr);
$this->assertSame(count($messages),$errCount, $message);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment