refc: Refactor project structure

This commit is contained in:
meiseayoung
2025-12-30 11:00:46 +08:00
parent 369655a9ea
commit 782a4e7795
106 changed files with 947 additions and 4184 deletions
+195
View File
@@ -0,0 +1,195 @@
import hono
import time
import net.http
fn main() {
println('=== V-Hono 简化集成测试 ===')
// 测试1: 基本应用创建和FastRouter
test_basic_app_creation()
// 测试2: 路由添加和匹配
test_route_management()
// 测试3: 性能验证
test_performance_validation()
// 测试4: 配置系统
test_config_system()
println('✅ V-Hono 简化集成测试完成')
}
fn test_basic_app_creation() {
println('\n📊 基本应用创建测试...')
// 创建应用
mut app := hono.Hono.new()
// 验证FastRouter默认启用
if app.use_fast_router {
println(' ✅ FastRouter默认启用')
} else {
println(' ❌ FastRouter未默认启用')
}
// 测试FastRouter开关
app.set_fast_router_enabled(false)
if !app.use_fast_router {
println(' ✅ FastRouter禁用成功')
} else {
println(' ❌ FastRouter禁用失败')
}
app.set_fast_router_enabled(true)
if app.use_fast_router {
println(' ✅ FastRouter重新启用成功')
} else {
println(' ❌ FastRouter重新启用失败')
}
}
fn test_route_management() {
println('\n📊 路由管理测试...')
mut app := hono.Hono.new()
// 添加不同类型的路由
app.get('/static', fn (mut c hono.Context) http.Response {
return c.text('static response')
})
app.get('/users/:id', fn (mut c hono.Context) http.Response {
return c.text('user response')
})
app.post('/api/:version/users', fn (mut c hono.Context) http.Response {
return c.text('api response')
})
// 验证路由统计
static_count, dynamic_count, cache_count, _ := app.get_router_stats()
println(' 路由统计: 静态=${static_count}, 动态=${dynamic_count}, 缓存=${cache_count}')
// 测试路由匹配
test_paths := ['/static', '/users/123', '/nonexistent']
expected_results := [true, true, false]
mut success_count := 0
for i, path in test_paths {
expected := expected_results[i]
match_result := app.fast_router.match_route('GET', path)
actual := match_result != none
if actual == expected {
success_count++
}
}
if success_count == test_paths.len {
println(' ✅ 路由匹配测试通过 (${success_count}/${test_paths.len})')
} else {
println(' ❌ 路由匹配测试失败 (${success_count}/${test_paths.len})')
}
}
fn test_performance_validation() {
println('\n📊 性能验证测试...')
// 创建FastRouter和HybridRouter进行对比
mut fast_router := hono.FastRouter.new()
mut hybrid_router := hono.ContextHybridRouter.new()
// 添加相同的路由
route_path := '/api/:version/users/:user_id'
test_path := '/api/v1/users/123'
fast_handler := hono.ContextHandler{
path: route_path
handler: fn (mut c hono.Context) http.Response {
return c.text('fast')
}
}
hybrid_handler := hono.ContextHandler{
path: route_path
handler: fn (mut c hono.Context) http.Response {
return c.text('hybrid')
}
}
fast_router.add_route('GET', fast_handler, '') or {
println(' ❌ FastRouter添加路由失败')
return
}
hybrid_router.add_route('GET', hybrid_handler, '')
iterations := 1000
// 测试FastRouter性能
fast_router.clear_cache()
start_time1 := time.now()
mut fast_matches := 0
for _ in 0 .. iterations {
if _ := fast_router.match_route('GET', test_path) {
fast_matches++
}
}
fast_time := time.since(start_time1)
// 测试HybridRouter性能
hybrid_router.clear_cache()
start_time2 := time.now()
mut hybrid_matches := 0
for _ in 0 .. iterations {
if _ := hybrid_router.match_route('GET', test_path) {
hybrid_matches++
}
}
hybrid_time := time.since(start_time2)
if fast_matches > 0 && hybrid_matches > 0 {
fast_avg := f64(fast_time.microseconds()) / f64(fast_matches)
hybrid_avg := f64(hybrid_time.microseconds()) / f64(hybrid_matches)
println(' FastRouter平均: ${fast_avg:.3f}μs')
println(' HybridRouter平均: ${hybrid_avg:.3f}μs')
if fast_avg < hybrid_avg {
improvement := hybrid_avg / fast_avg
println(' ✅ FastRouter性能提升: ${improvement:.2f}x')
} else {
println(' ❌ FastRouter性能未提升')
}
}
}
fn test_config_system() {
println('\n📊 配置系统测试...')
// 测试默认配置创建
config := hono.default_config()
// 验证默认值
if config.server.host == '127.0.0.1' && config.server.port == 8080 {
println(' ✅ 配置创建正确')
} else {
println(' ❌ 配置创建错误')
}
// 测试配置字段
if config.server.read_timeout == 30 && config.static.root_dir == './static' {
println(' ✅ 配置字段正确')
} else {
println(' ❌ 配置字段错误')
}
// 测试配置环境
if config.env == 'development' {
println(' ✅ 默认环境正确')
} else {
println(' ❌ 默认环境错误')
}
}