true, 'cdn_source' => 'jsdelivr', 'theme' => 'default', 'use_local' => false, 'debug_mode' => false ]; $errors = argon_validate_mermaid_settings($valid_settings); test_assert(empty($errors), "测试 15: 验证有效的配置(无错误)"); // 测试 16: 验证无效的 CDN 来源 $invalid_settings = ['cdn_source' => 'invalid_source']; $errors = argon_validate_mermaid_settings($invalid_settings); test_assert(!empty($errors), "测试 16: 验证无效的 CDN 来源(有错误)"); // 测试 17: 验证自定义 CDN 但 URL 为空 $invalid_settings = [ 'cdn_source' => 'custom', 'custom_cdn_url' => '' ]; $errors = argon_validate_mermaid_settings($invalid_settings); test_assert(!empty($errors), "测试 17: 验证自定义 CDN 但 URL 为空(有错误)"); // 测试 18: 验证自定义 CDN 但 URL 无效 $invalid_settings = [ 'cdn_source' => 'custom', 'custom_cdn_url' => 'not-a-url' ]; $errors = argon_validate_mermaid_settings($invalid_settings); test_assert(!empty($errors), "测试 18: 验证自定义 CDN 但 URL 无效(有错误)"); // 测试 19: 验证无效的主题名称 $invalid_settings = ['theme' => 'invalid_theme']; $errors = argon_validate_mermaid_settings($invalid_settings); test_assert(!empty($errors), "测试 19: 验证无效的主题名称(有错误)"); // 测试 20: 初始化默认配置 clear_mermaid_options(); argon_init_mermaid_config(); test_assert_equals(false, get_option('argon_enable_mermaid'), "测试 20: 初始化默认配置(enabled 为 false)"); test_assert_equals('jsdelivr', get_option('argon_mermaid_cdn_source'), "测试 20a: 初始化默认配置(cdn_source 为 jsdelivr)"); // 测试 21: 初始化不覆盖已有配置 clear_mermaid_options(); update_option('argon_enable_mermaid', true); argon_init_mermaid_config(); test_assert_equals(true, get_option('argon_enable_mermaid'), "测试 21: 初始化不覆盖已有配置"); // 测试 22: 获取所有配置选项 clear_mermaid_options(); update_option('argon_enable_mermaid', true); update_option('argon_mermaid_cdn_source', 'unpkg'); $options = argon_get_all_mermaid_options(); test_assert(is_array($options), "测试 22: 获取所有配置选项(返回数组)"); test_assert_equals(true, $options['enabled'], "测试 22a: 获取所有配置(enabled 正确)"); test_assert_equals('unpkg', $options['cdn_source'], "测试 22b: 获取所有配置(cdn_source 正确)"); // 测试 23: 批量更新配置(成功) clear_mermaid_options(); $settings = [ 'enabled' => true, 'cdn_source' => 'jsdelivr', 'theme' => 'dark' ]; $result = argon_update_mermaid_settings($settings); test_assert($result['success'], "测试 23: 批量更新配置(成功)"); test_assert(empty($result['errors']), "测试 23a: 批量更新配置(无错误)"); test_assert_equals(true, get_option('argon_enable_mermaid'), "测试 23b: 批量更新配置(enabled 已保存)"); test_assert_equals('dark', get_option('argon_mermaid_theme'), "测试 23c: 批量更新配置(theme 已保存)"); // 测试 24: 批量更新配置(失败) clear_mermaid_options(); $settings = ['cdn_source' => 'invalid_source']; $result = argon_update_mermaid_settings($settings); test_assert(!$result['success'], "测试 24: 批量更新配置(失败)"); test_assert(!empty($result['errors']), "测试 24a: 批量更新配置(有错误信息)"); // 输出测试结果 echo "\n=== 测试结果 ===\n"; echo "总计: {$tests_run} 个测试\n"; echo "通过: {$tests_passed} 个\n"; echo "失败: {$tests_failed} 个\n"; if ($tests_failed === 0) { echo "\n✓ 所有测试通过!\n"; exit(0); } else { echo "\n✗ 有测试失败!\n"; exit(1); }