znt/module/programplan/test/zen/sortplans.php

82 lines
2.7 KiB
PHP
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/**
title=测试 programplanZen::sortPlans();
timeout=0
cid=17795
- 执行programplanTest模块的sortPlansTest方法参数是array @0
- 执行programplanTest模块的sortPlansTest方法参数是$singlePlan 第1条的id属性 @1
- 第一个应该是子阶段,因为它在原数组中排在前面 @2
- 父阶段在前,其子阶段紧随其后 @1,2
- 验证所有5个计划都被处理 @5
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zen.class.php';
su('admin');
$programplanTest = new programplanZenTest();
// 测试步骤1空数组排序
r($programplanTest->sortPlansTest(array())) && p() && e(0);
// 测试步骤2单个计划排序
$singlePlan = array();
$plan = new stdClass();
$plan->id = 1;
$plan->parent = 0;
$singlePlan[1] = $plan;
r($programplanTest->sortPlansTest($singlePlan)) && p('1:id') && e('1');
// 测试步骤3父子关系排序子阶段在前父阶段在后的情况
$parentChildPlans = array();
$childPlan = new stdClass();
$childPlan->id = 2;
$childPlan->parent = 1;
$parentPlan = new stdClass();
$parentPlan->id = 1;
$parentPlan->parent = 0;
$parentChildPlans[2] = $childPlan; // 子阶段先加入
$parentChildPlans[1] = $parentPlan; // 父阶段后加入
$result = $programplanTest->sortPlansTest($parentChildPlans);
$keys = array_keys($result);
r($keys[0]) && p() && e('2'); // 第一个应该是子阶段,因为它在原数组中排在前面
// 测试步骤4父子关系排序父阶段在前子阶段在后的情况
$parentFirstPlans = array();
$parentPlan = new stdClass();
$parentPlan->id = 1;
$parentPlan->parent = 0;
$childPlan = new stdClass();
$childPlan->id = 2;
$childPlan->parent = 1;
$parentFirstPlans[1] = $parentPlan; // 父阶段先加入
$parentFirstPlans[2] = $childPlan; // 子阶段后加入
$result = $programplanTest->sortPlansTest($parentFirstPlans);
$keys = array_keys($result);
r(implode(',', $keys)) && p() && e('1,2'); // 父阶段在前,其子阶段紧随其后
// 测试步骤5复杂多层次排序
$complexPlans = array();
$plans = array(
array('id' => 4, 'parent' => 0), // 根节点2先处理
array('id' => 1, 'parent' => 0), // 根节点1后处理
array('id' => 2, 'parent' => 1), // 1的子节点
array('id' => 5, 'parent' => 4), // 4的子节点
array('id' => 3, 'parent' => 1), // 1的子节点
);
foreach($plans as $planData) {
$plan = new stdClass();
$plan->id = $planData['id'];
$plan->parent = $planData['parent'];
$complexPlans[$plan->id] = $plan;
}
$result = $programplanTest->sortPlansTest($complexPlans);
$keys = array_keys($result);
r(count($keys)) && p() && e('5'); // 验证所有5个计划都被处理