|
|
@@ -1,149 +0,0 @@
|
|
|
-#!/usr/bin/env python
|
|
|
-# -*- coding: utf-8 -*-
|
|
|
-"""
|
|
|
-测试order_book有效性检查和清空功能
|
|
|
-"""
|
|
|
-
|
|
|
-import sys
|
|
|
-import os
|
|
|
-sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
-
|
|
|
-from main import OrderBook
|
|
|
-from decimal import Decimal
|
|
|
-
|
|
|
-def test_order_book_validity():
|
|
|
- """测试order_book有效性检查"""
|
|
|
- print("=" * 60)
|
|
|
- print("测试1: OrderBook有效性检查")
|
|
|
- print("=" * 60)
|
|
|
-
|
|
|
- # 创建一个OrderBook实例
|
|
|
- ob = OrderBook(market_index=1)
|
|
|
-
|
|
|
- # 测试1.1: 空的order_book应该无效
|
|
|
- print("\n测试1.1: 空的order_book")
|
|
|
- is_valid = ob.is_valid()
|
|
|
- print(f" is_valid() = {is_valid}")
|
|
|
- assert not is_valid, "空的order_book应该无效"
|
|
|
- print(" ✓ 通过:空order_book被正确识别为无效")
|
|
|
-
|
|
|
- # 测试1.2: 只有买单的order_book应该无效
|
|
|
- print("\n测试1.2: 只有买单的order_book")
|
|
|
- ob.bids[Decimal('100')] = Decimal('10')
|
|
|
- is_valid = ob.is_valid()
|
|
|
- print(f" is_valid() = {is_valid}")
|
|
|
- assert not is_valid, "只有买单的order_book应该无效"
|
|
|
- print(" ✓ 通过:只有买单的order_book被正确识别为无效")
|
|
|
-
|
|
|
- # 测试1.3: 只有卖单的order_book应该无效
|
|
|
- print("\n测试1.3: 只有卖单的order_book")
|
|
|
- ob.bids.clear()
|
|
|
- ob.asks[Decimal('101')] = Decimal('10')
|
|
|
- is_valid = ob.is_valid()
|
|
|
- print(f" is_valid() = {is_valid}")
|
|
|
- assert not is_valid, "只有卖单的order_book应该无效"
|
|
|
- print(" ✓ 通过:只有卖单的order_book被正确识别为无效")
|
|
|
-
|
|
|
- # 测试1.4: 有买卖单但买价>=卖价的order_book应该无效
|
|
|
- print("\n测试1.4: 买价>=卖价的order_book")
|
|
|
- ob.bids[Decimal('101')] = Decimal('10')
|
|
|
- ob.asks[Decimal('101')] = Decimal('10')
|
|
|
- is_valid = ob.is_valid()
|
|
|
- print(f" is_valid() = {is_valid}")
|
|
|
- assert not is_valid, "买价>=卖价的order_book应该无效"
|
|
|
- print(" ✓ 通过:买价>=卖价的order_book被正确识别为无效")
|
|
|
-
|
|
|
- # 测试1.5: 正常的order_book应该有效
|
|
|
- print("\n测试1.5: 正常的order_book(买价<卖价)")
|
|
|
- ob.bids.clear()
|
|
|
- ob.asks.clear()
|
|
|
- ob.bids[Decimal('100')] = Decimal('10')
|
|
|
- ob.asks[Decimal('101')] = Decimal('10')
|
|
|
- is_valid = ob.is_valid()
|
|
|
- print(f" is_valid() = {is_valid}")
|
|
|
- assert is_valid, "正常的order_book应该有效"
|
|
|
- print(" ✓ 通过:正常的order_book被正确识别为有效")
|
|
|
-
|
|
|
- # 测试1.6: 多个档位的order_book应该有效
|
|
|
- print("\n测试1.6: 多个档位的order_book")
|
|
|
- ob.bids[Decimal('99')] = Decimal('20')
|
|
|
- ob.bids[Decimal('98')] = Decimal('30')
|
|
|
- ob.asks[Decimal('102')] = Decimal('20')
|
|
|
- ob.asks[Decimal('103')] = Decimal('30')
|
|
|
- is_valid = ob.is_valid()
|
|
|
- print(f" is_valid() = {is_valid}")
|
|
|
- assert is_valid, "多个档位的order_book应该有效"
|
|
|
- print(" ✓ 通过:多个档位的order_book被正确识别为有效")
|
|
|
-
|
|
|
- print("\n" + "=" * 60)
|
|
|
- print("所有有效性检查测试通过!✓")
|
|
|
- print("=" * 60)
|
|
|
-
|
|
|
-
|
|
|
-def test_order_book_update():
|
|
|
- """测试order_book更新功能"""
|
|
|
- print("\n" + "=" * 60)
|
|
|
- print("测试2: OrderBook更新功能")
|
|
|
- print("=" * 60)
|
|
|
-
|
|
|
- ob = OrderBook(market_index=1)
|
|
|
-
|
|
|
- # 测试2.1: 初始更新
|
|
|
- print("\n测试2.1: 初始更新")
|
|
|
- order_book_data = {
|
|
|
- 'bids': [
|
|
|
- {'price': '100', 'size': '10'},
|
|
|
- {'price': '99', 'size': '20'}
|
|
|
- ],
|
|
|
- 'asks': [
|
|
|
- {'price': '101', 'size': '10'},
|
|
|
- {'price': '102', 'size': '20'}
|
|
|
- ]
|
|
|
- }
|
|
|
- ob.update(order_book_data, offset=1)
|
|
|
- print(f" 更新后的统计信息: {ob.get_stats()}")
|
|
|
- assert ob.is_valid(), "更新后的order_book应该有效"
|
|
|
- print(" ✓ 通过:初始更新成功")
|
|
|
-
|
|
|
- # 测试2.2: 增量更新(删除档位)
|
|
|
- print("\n测试2.2: 增量更新(删除档位)")
|
|
|
- order_book_data = {
|
|
|
- 'bids': [
|
|
|
- {'price': '99', 'size': '0'} # 删除99的买单
|
|
|
- ]
|
|
|
- }
|
|
|
- ob.update(order_book_data, offset=2)
|
|
|
- print(f" 更新后的统计信息: {ob.get_stats()}")
|
|
|
- assert ob.is_valid(), "删除档位后的order_book应该有效"
|
|
|
- assert Decimal('99') not in ob.bids, "99的买单应该被删除"
|
|
|
- print(" ✓ 通过:增量更新成功")
|
|
|
-
|
|
|
- # 测试2.3: 清空order_book
|
|
|
- print("\n测试2.3: 清空order_book")
|
|
|
- ob.bids.clear()
|
|
|
- ob.asks.clear()
|
|
|
- print(f" 清空后的统计信息: {ob.get_stats()}")
|
|
|
- assert not ob.is_valid(), "清空后的order_book应该无效"
|
|
|
- print(" ✓ 通过:清空成功")
|
|
|
-
|
|
|
- print("\n" + "=" * 60)
|
|
|
- print("所有更新功能测试通过!✓")
|
|
|
- print("=" * 60)
|
|
|
-
|
|
|
-
|
|
|
-if __name__ == '__main__':
|
|
|
- try:
|
|
|
- test_order_book_validity()
|
|
|
- test_order_book_update()
|
|
|
- print("\n" + "=" * 60)
|
|
|
- print("所有测试通过!✓✓✓")
|
|
|
- print("=" * 60)
|
|
|
- except AssertionError as e:
|
|
|
- print(f"\n✗ 测试失败: {e}")
|
|
|
- sys.exit(1)
|
|
|
- except Exception as e:
|
|
|
- print(f"\n✗ 测试出错: {e}")
|
|
|
- import traceback
|
|
|
- traceback.print_exc()
|
|
|
- sys.exit(1)
|
|
|
-
|