tp6混合easyswoole DLL 多应用模式 修改版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

237 lines
5.0 KiB

<?php
/**
* @CreateTime: 2019/9/13 下午02:18
* @Author: huizhang <tuzisir@163.com>
* @Copyright: copyright(2019) Easyswoole all rights reserved
* @Description: SplBean 单元测试
*/
namespace EasySwoole\Spl\Test;
use EasySwoole\Spl\Test\Bean\Shops;
use PHPUnit\Framework\TestCase;
use EasySwoole\Spl\Test\Bean\TestBean;
class BeanTest extends TestCase
{
/**
* 获取类所有的public和protected 成员变量
*/
function testAllProperty() {
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd_d'=>'d_d'
]);
$this->assertEquals(
['a', 'b', 'd_d'],
$bean->allProperty()
);
}
/**
* 过滤并转换成数组数据
*/
function testToArray() {
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd_d'=>'d_d'
]);
$res = $bean->toArray(null, function ($a) {
if (in_array($a, ['d_d'])) {
return $a;
}
});
$this->assertEquals(
['d_d' => 'd_d'],
$res
);
}
/**
*获取过滤后带有字段别名的数组数据
*/
function testToArrayWithMapping() {
$bean = new TestBean([
'a'=>1,
'b'=>2,
'c'=>3,
'd_d'=>4
]);
$res = $bean->toArrayWithMapping(['a', 'b', 'd-d'], function ($val) {
return $val;
});
$this->assertEquals(
[
'a' => 1,
'b' => 2,
'd-d' => 4
],
$res
);
}
/**
* 设置类属性
*/
function testArrayToBean()
{
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd_d'=>'d_d'
]);
$this->assertEquals([
'a'=>'a',
'b'=>'b',
'd_d'=>'d_d'
],$bean->toArray());
$this->assertEquals([
'a'=>'a',
'b'=>'b',
],$bean->toArray(['a','b']));
$this->assertEquals([
'a'=>'a',
'd-d'=>'d_d'
],$bean->toArrayWithMapping(['a','d-d']));
}
/**
* 设置类成员变量
*/
function testAddProperty() {
$bean = new TestBean();
$bean->addProperty('a', 'es');
$bean->addProperty('b', 'es');
$bean->addProperty('d_d', 'es');
$this->assertEquals(
[
'a' => 'es',
'b' => 'es',
'd_d' => 'es',
],
$bean->toArray()
);
}
/**
* 获取类成员变量值
*/
function testGetProperty() {
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd_d'=>'d_d'
]);
$this->assertEquals('a', $bean->getProperty('a'));
}
/**
* 获取类成员变量集合
*/
function testJsonSerialize() {
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd_d'=>'d_d'
]);
$this->assertEquals(
[
'a'=>'a',
'b'=>'b',
'd_d'=>'d_d'
],
$bean->jsonSerialize()
);
}
/**
* 初始化操作
*/
function testInitialize() {
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd_d'=>'d_d'
]);
$this->assertEquals(
[
'a'=>'a',
'b'=>'b',
'd_d'=>'d_d'
],
$bean->jsonSerialize()
);
}
/**
* 设置keyMapping关系,也就是字段别名
*/
function testSetKeyMapping() {
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd-d'=>'d'
]);
$this->assertEquals(
[
'a'=>'a',
'b'=>'b',
'd_d'=>'d'
],
$bean->jsonSerialize()
);
}
/**
* 设置classMapping关系,也就是关联类
*/
// function testSetClassMapping() {
// return true;
// $bean = new TestBean([
// 'a'=>'a',
// 'b'=>'b',
// 'c'=>'c',
// 'd-d'=>'d'
// ]);
// $this->assertEquals(
// Shops::class,
// get_class($bean->jsonSerialize()['shops'])
// );
// }
function testRestore()
{
$bean = new TestBean([
'a'=>'a',
'b'=>'b',
'c'=>'c',
'd_d'=>'d_d'
]);
$this->assertEquals([
'a'=>2,
'b'=>null,
'd_d'=>null
],$bean->restore()->toArray());
$this->assertEquals([
'a'=>2
],$bean->restore()->toArray(null,$bean::FILTER_NOT_NULL));
$bean->restore(['a'=>2,'b'=>3]);
}
}