#!/usr/bin/env php version = $pivot->version; $pivotSpec->pivot = $pivot->id; $pivotSpec->mode = 'text'; $pivotSpec->sql = $pivot->sql; $pivotSpec->name = $this->jsonEncode($pivot->name); if(isset($pivot->desc)) $pivotSpec->desc = $this->jsonEncode($pivot->desc); if(isset($pivot->settings)) $pivotSpec->settings = $this->jsonEncode($pivot->settings); if(isset($pivot->filters)) $pivotSpec->filters = $this->jsonEncode($pivot->filters); if(isset($pivot->fields)) $pivotSpec->fields = $this->jsonEncode($pivot->fields); if(isset($pivot->langs)) $pivotSpec->langs = $this->jsonEncode($pivot->langs); if(isset($pivot->vars)) $pivotSpec->vars = $this->jsonEncode($pivot->vars); if(!isset($pivot->driver)) $pivotSpec->driver = 'mysql'; if(!isset($pivot->settings)) $pivotSpec->settings = ''; if(!isset($pivot->filters)) $pivotSpec->filters = null; if(!isset($pivot->fields)) $pivotSpec->fields = null; if(!isset($pivot->langs)) $pivotSpec->langs = null; if(!isset($pivot->vars)) $pivotSpec->vars = null; unset($pivot->driver); unset($pivot->name); unset($pivot->desc); unset($pivot->sql); unset($pivot->settings); unset($pivot->filters); unset($pivot->fields); unset($pivot->langs); unset($pivot->vars); $drills = isset($pivot->drills) ? $pivot->drills : array(); unset($pivot->drills); return array($pivot, $pivotSpec, $drills); } } $biTest = new mockBiTest(); } // 4. 强制要求:必须包含至少5个测试步骤 // 步骤1:基础pivot对象处理 $basicPivot = array( 'id' => 1, 'version' => '1.0', 'sql' => 'SELECT * FROM zt_user', 'name' => array('zh-cn' => '用户统计', 'en' => 'User Statistics') ); r(count($biTest->preparePivotObjectTest($basicPivot))) && p() && e('3'); // 步骤1:基础pivot对象处理,验证返回数组长度 // 步骤2:包含所有可选字段的pivot对象处理 $fullPivot = array( 'id' => 2, 'version' => '2.0', 'sql' => 'SELECT account, realname FROM zt_user', 'name' => array('zh-cn' => '完整用户', 'en' => 'Full User'), 'desc' => array('zh-cn' => '描述', 'en' => 'Description'), 'settings' => array('pageSize' => 20), 'filters' => array('status' => 'active'), 'fields' => array('account', 'realname'), 'langs' => array('zh-cn' => '中文'), 'vars' => array('limit' => 100), 'driver' => 'mysql' ); r($biTest->preparePivotObjectTest($fullPivot)[1]->name) && p() && e('{"zh-cn":"\u5b8c\u6574\u7528\u6237","en":"Full User"}'); // 步骤2:完整pivot对象处理,验证pivotSpec的name字段 // 步骤3:数组输入转换为对象 $arrayPivot = array( 'id' => 3, 'version' => '1.5', 'sql' => 'SELECT id FROM zt_task', 'name' => array('zh-cn' => '任务列表') ); r($biTest->preparePivotObjectTest($arrayPivot)[0]->id) && p() && e('3'); // 步骤3:数组输入转换为对象,验证第一个元素的id // 步骤4:不包含可选字段的最小pivot对象 $minimalPivot = array( 'id' => 4, 'version' => '1.0', 'sql' => 'SELECT * FROM zt_bug', 'name' => array('zh-cn' => '缺陷统计') ); r($biTest->preparePivotObjectTest($minimalPivot)[1]->settings) && p() && e('0'); // 步骤4:最小pivot对象处理,验证settings为空 // 步骤5:包含drills字段的pivot对象处理 $pivotWithDrills = array( 'id' => 5, 'version' => '1.0', 'sql' => 'SELECT * FROM zt_story', 'name' => array('zh-cn' => '需求统计'), 'drills' => array( array('field' => 'status', 'type' => 'group'), array('field' => 'stage', 'type' => 'filter') ) ); r(count($biTest->preparePivotObjectTest($pivotWithDrills)[2])) && p() && e('2'); // 步骤5:包含drills字段的pivot对象,验证drills数组长度