#!/usr/bin/env php loadLang('serverroom'); // 4. 创建测试实例 $hostTest = new hostModelTest(); // 5. 测试数据准备 // 步骤1:测试空数组 $emptyData = array(); // 步骤2:测试简单对象(只有name,会用作text) $simpleObject = new stdClass(); $simpleObject->name = '简单主机'; // 步骤3:测试有roomName的对象(优先使用name作为text) $roomObject = new stdClass(); $roomObject->roomName = '主机房名称'; $roomObject->name = '主机名称'; // 步骤4:测试有hostID的对象(会生成hostid属性) $hostWithId = new stdClass(); $hostWithId->name = '带ID主机'; $hostWithId->hostID = 123; // 步骤5:测试嵌套数组结构(会递归处理) $arrayData = array( 'beijing' => array( (object)array('roomName' => '北京机房1', 'name' => '北京主机1'), (object)array('roomName' => '北京机房2', 'name' => '北京主机2') ) ); // 步骤6:测试有children属性的对象(会递归处理children) $objectWithChildren = new stdClass(); $objectWithChildren->name = '父级对象'; $objectWithChildren->children = array( (object)array('name' => '子对象1'), (object)array('name' => '子对象2') ); // 步骤7:测试含有HTML特殊字符的文本(会被htmlspecialchars转义) $htmlObject = new stdClass(); $htmlObject->name = ''; // 6. 执行测试(必须包含至少5个测试步骤) r(count($hostTest->processTreemapTest($emptyData))) && p() && e('0'); // 步骤1:空数组输入 r($hostTest->processTreemapTest(array($simpleObject))) && p('0:text') && e('简单主机'); // 步骤2:单个简单对象 r($hostTest->processTreemapTest(array($roomObject))) && p('0:text') && e('主机名称'); // 步骤3:带roomName的对象 r($hostTest->processTreemapTest(array($hostWithId))) && p('0:hostid') && e('123'); // 步骤4:带hostID的对象 r($hostTest->processTreemapTest($arrayData)) && p('0:text') && e('北京机房1'); // 步骤5:嵌套数组结构 r($hostTest->processTreemapTest(array($objectWithChildren))[0]['children']) && p('0:text') && e('子对象1'); // 步骤6:带children属性对象 r($hostTest->processTreemapTest(array($htmlObject))) && p('0:text') && e('<script>alert("test")</script>'); // 步骤7:HTML特殊字符转义