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.

419 lines
10 KiB

<?php
/**
* @CreateTime: 2019/9/9 下午11:28
* @Author: huizhang <tuzisir@163.com>
* @Copyright: copyright(2019) Easyswoole all rights reserved
* @Description: SplArray 单元测试
*/
namespace EasySwoole\Spl\Test;
use PHPUnit\Framework\TestCase;
use EasySwoole\Spl\SplArray;
class ArrayTest extends TestCase {
/**
* 设置参数
*
* @return SplArray
* CreateTime: 2019/9/10 下午11:30
*/
public function testSet() {
$data = [
'fruit' => [
'apple' => 2,
'orange' => 1,
'grape' => 4
],
'color' => [
'red' => 12,
'blue' => 8,
'green' => 6
]
];
$splArrayObj = new SplArray($data);
$splArrayObj->set('fruit.apple', 3);
$this->assertEquals(3, $splArrayObj->get('fruit.apple'));
return $splArrayObj;
}
/**
* 获取参数
*
* @depends clone testSet
* @param SplArray $splArrayObj
*/
public function testGet( SplArray $splArrayObj) {
// 测试第一层的key
$this->assertEquals(
[
'red' => 12,
'blue' => 8,
'green' => 6
],
$splArrayObj->get('color')
);
// 测试第二层的key
$this->assertEquals(
12,
$splArrayObj->get('color.red')
);
}
/**
* 转字符
*
* @depends clone testSet
* CreateTime: 2019/9/10 下午11:29
*/
public function testTostring(SplArray $splArrayObj) {
$this->assertJsonStringEqualsJsonString(
json_encode($splArrayObj, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES),
$splArrayObj->__toString()
);
}
/**
* 数组的复制
*
* @depends clone testSet
* @param SplArray $splArrayObj
* CreateTime: 2019/9/10 下午11:37
*/
public function testGetArrayCopy(SplArray $splArrayObj) {
$this->assertEquals(
[
'fruit' => [
'apple' => 3,
'orange' => 1,
'grape' => 4
],
'color' => [
'red' => 12,
'blue' => 8,
'green' => 6
]
],
$splArrayObj->getArrayCopy()
);
}
/**
* 销毁数组元素
*
* @depends clone testSet
* @param $splArrayObj SplArray
* CreateTime: 2019/9/10 下午11:44
*/
public function testUnset(SplArray $splArrayObj) {
// 销毁red元素
$splArrayObj->unset('color.red');
$this->assertEquals(
[
'fruit' => [
'apple' => 3,
'orange' => 1,
'grape' => 4
],
'color' => [
'blue' => 8,
'green' => 6
]
],
$splArrayObj->getArrayCopy()
);
// 销毁color元素
$splArrayObj->unset('color');
$this->assertEquals(
[
'fruit' => [
'apple' => 3,
'orange' => 1,
'grape' => 4
]
],
$splArrayObj->getArrayCopy()
);
}
/**
* 去除某个数据项(unset和delete方法其实是实现统一效果,因考虑旧版本用户使用情况,故而保留。)
*
* @depends clone testSet
* @param SplArray $splArrayObj
*/
public function testDelete(SplArray $splArrayObj) {
$splArrayObj->delete('color');
$this->assertEquals(
[
'fruit' => [
'apple' => 3,
'orange' => 1,
'grape' => 4
]
],
$splArrayObj->getArrayCopy()
);
}
/**
* 数组值唯一
*
* CreateTime: 2019/9/10 下午11:55
* @param SplArray $splArrayObj
* @return bool
*/
public function testUnique() {
$splArrayObj = new SplArray(
[
'name1' => 'es',
'name2' => 'es'
]
);
$this->assertEquals(
['name1'=>'es']
, $splArrayObj->unique()->getArrayCopy());
}
/**
* 获取数组中重复的值
*
* @depends clone testSet
* CreateTime: 2019/9/11 上午12:22
* @return bool
*/
public function testMultiple() {
$splArrayObj = new SplArray(
[
'name1' => 'es',
'name2' => 'es'
]
);
$this->assertEquals(['name2'=>'es'], $splArrayObj->multiple()->getArrayCopy());
}
/**
* 进行排序并保持索引关系
*
* @depends clone testSet
* CreateTime: 2019/9/11 上午12:32
* @param SplArray $splArrayObj
*/
public function testAsort(SplArray $splArrayObj) {
$this->assertEquals(
[
'color' => [
'red' => 12,
'blue' => 8,
'green' => 6
],
'fruit' => [
'apple' => 3,
'orange' => 1,
'grape' => 4
]
]
,$splArrayObj->asort()->getArrayCopy()
);
}
/**
* 按照键名排序
*
* @depends clone testSet
* CreateTime: 2019/9/11 上午12:35
* @param SplArray $splArrayObj
*/
public function testKsort(SplArray $splArrayObj) {
$this->assertEquals(
[
'color' => [
'red' => 12,
'blue' => 8,
'green' => 6
],
'fruit' => [
'apple' => 3,
'orange' => 1,
'grape' => 4
]
],
$splArrayObj->ksort()->getArrayCopy()
);
}
/**
* 排序
*
* @depends clone testSet
* CreateTime: 2019/9/11 上午12:35
* @param SplArray $splArrayObj
*/
public function testSort(SplArray $splArrayObj) {
$this->assertEquals(
[
[
'red' => 12,
'blue' => 8,
'green' => 6
],
[
'apple' => 3,
'orange' => 1,
'grape' => 4
]
],
$splArrayObj->sort()->getArrayCopy()
);
}
/**
* 取得某一列
*
* @depends clone testSet
* CreateTime: 2019/9/11 上午12:35
* @param SplArray $splArrayObj
* @return bool
*/
public function testColumn(SplArray $splArrayObj) {
$this->assertEquals(
[12],
$splArrayObj->column('red')->getArrayCopy()
);
}
/**
* 交换数组中的键和值
*/
public function testFlip() {
$splArrayObj = new SplArray([
'es' => 'easyswoole'
]);
$this->assertEquals(
[
'easyswoole' => 'es'
],
$splArrayObj->flip()->getArrayCopy()
);
}
/**
* 过滤数组数据
*/
public function testFilter() {
$splArrayObj = new SplArray(
[
'apple' => 2,
'orange' => 1,
'grape' => 2,
'pear' => 4,
'banana' => 8
]
);
// 获取设置的键名
$this->assertEquals(
[
'apple' => 2,
'pear' => 4
],
$splArrayObj->filter('apple,pear', false)->getArrayCopy()
);
// 排除设置的键名
$this->assertEquals(
[
'apple' => 2,
'pear' => 4
],
$splArrayObj->filter('orange,grape,banana', true)->getArrayCopy()
);
}
/**
* 获取数组索引
*
* @depends clone testSet
* @param SplArray $splArrayObj
*/
public function testKeys(SplArray $splArrayObj) {
$this->assertEquals(
['red', 'blue', 'green'],
$splArrayObj->keys('color')
);
}
/**
* 获取数组中所有的值
*
* @depends clone testSet
* @param SplArray $splArrayObj
*/
public function testValues(SplArray $splArrayObj) {
$this->assertEquals(
[
[
'apple' => 3,
'orange' => 1,
'grape' => 4
],
[
'red' => 12,
'blue' => 8,
'green' => 6
]
],
$splArrayObj->values()->getArrayCopy()
);
}
/**
* 清空数据
*
* @depends clone testSet
* @param SplArray $splArrayObj
*/
public function testFlush(SplArray $splArrayObj) {
$this->assertEquals(
[],
$splArrayObj->flush()->getArrayCopy()
);
}
/**
* 重新加载数据
*
* @depends clone testSet
* @param SplArray $splArrayObj
*/
public function testLoadArray(SplArray $splArrayObj) {
$this->assertEquals(
[
'name' => 'easyswoole'
],
$splArrayObj->loadArray(
[
'name' => 'easyswoole'
]
)->getArrayCopy()
);
}
/**
* 转化成xml
*
* @depends clone testSet
* @param SplArray $splArrayObj
*/
public function testToXML(SplArray $splArrayObj) {
$this->assertEquals(
"<xml><fruit><apple>3</apple><orange>1</orange><grape>4</grape></fruit><color><red>12</red><blue>8</blue><green>6</green></color></xml>\n",
$splArrayObj->toXML()
);
}
}