mirror of https://github.com/Mai-with-u/MaiBot.git
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
"""
|
|
测试事件处理器权重排序功能
|
|
"""
|
|
|
|
import asyncio
|
|
import sys
|
|
import os
|
|
|
|
# 添加项目根目录到Python路径
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from src.plugin_system.core.event_manager import EventManager
|
|
from plugins.test_weight_sorting_plugin.plugin import TestWeightSortingPlugin
|
|
|
|
async def test_weight_sorting():
|
|
"""测试权重排序功能"""
|
|
print("开始测试事件处理器权重排序功能...")
|
|
|
|
# 获取事件管理器实例
|
|
event_manager = EventManager()
|
|
|
|
# 初始化测试事件
|
|
event_manager.register_event("test_weight_event")
|
|
|
|
# 创建并初始化测试插件
|
|
plugin = TestWeightSortingPlugin()
|
|
await plugin.initialize()
|
|
|
|
# 检查事件订阅者是否按权重排序
|
|
event = event_manager.get_event("test_weight_event")
|
|
if event:
|
|
print(f"\n事件 {event.name} 的订阅者列表:")
|
|
for i, subscriber in enumerate(event.subcribers):
|
|
weight = getattr(subscriber, 'weight', 0)
|
|
handler_name = getattr(subscriber, 'handler_name', 'unknown')
|
|
print(f" {i+1}. {handler_name} (权重: {weight})")
|
|
|
|
# 验证排序是否正确
|
|
weights = [getattr(h, 'weight', 0) for h in event.subcribers]
|
|
is_sorted = all(weights[i] >= weights[i+1] for i in range(len(weights)-1))
|
|
|
|
if is_sorted:
|
|
print("\n✅ 权重排序正确:订阅者已按权重从高到低排序")
|
|
else:
|
|
print("\n❌ 权重排序错误:订阅者未按权重排序")
|
|
print(f"当前权重顺序: {weights}")
|
|
|
|
# 测试事件触发
|
|
print("\n触发测试事件...")
|
|
results = await event_manager.trigger_event("test_weight_event", {"test": "data"})
|
|
|
|
if results:
|
|
print(f"\n事件触发完成,共执行了 {len(results.results)} 个处理器")
|
|
for result in results.results:
|
|
print(f" - {result.handler_name}: {'成功' if result.success else '失败'}")
|
|
|
|
else:
|
|
print("❌ 测试事件不存在")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_weight_sorting()) |