import { QmtBridgeRestDataSource } from '../src/component/QmtBridgeRestDataSource.js'; const ds = new QmtBridgeRestDataSource({ baseUrl: 'http://x' }); let pass = 0, fail = 0; function assert(cond, msg) { if (cond) { pass++; console.log(' ✅ ' + msg); } else { fail++; console.log(' ❌ ' + msg); } } // code 归一化 assert(ds.normalizeInstrumentCode('001330', 'SZ') === '001330.SZ', '001330+SZ → 001330.SZ'); assert(ds.normalizeInstrumentCode('600519', 'SH') === '600519.SH', '600519+SH → 600519.SH'); assert(ds.normalizeInstrumentCode('001330.SZ', 'SZ') === '001330.SZ', '已带后缀原样保留'); assert(ds.normalizeInstrumentCode('601117', '') === '601117.SH', '无交易所按首位推断 6→SH'); assert(ds.normalizeInstrumentCode('000001', '') === '000001.SZ', '无交易所按首位推断 0→SZ'); assert(ds.normalizeInstrumentCode('300057', '') === '300057.SZ', '无交易所按首位推断 3→SZ'); // mapOrder:tradeDate 兜底 insertDate const o = ds.mapOrder({ m_strOrderSysID: '645009273', m_strInstrumentID: '001330', m_strInstrumentName: '博纳影业', m_strExchangeID: 'SZ', m_nOffsetFlag: 49, m_strOptName: '限价卖出', m_nOrderStatus: 56, m_nVolumeTotalOriginal: 200, m_nVolumeTraded: 200, m_nVolumeTotal: 200, m_dLimitPrice: 6, m_dTradedPrice: 6, m_dTradeAmount: 1200, m_strInsertDate: '20260901', m_strInsertTime: '101333', }); assert(o.code === '001330.SZ', 'mapOrder code 归一化: ' + o.code); assert(o.tradeDate === '20260901', 'mapOrder tradeDate 兜底 insertDate: ' + o.tradeDate); assert(o.insertDate === '20260901' && o.insertTime === '101333', 'insertDate/insertTime 保留'); // mapTrade:code 归一化 + tradeDate 保留原始 const t = ds.mapTrade({ m_strTradeID: '0103000030812084', m_strOrderSysID: '645009273', m_strInstrumentID: '001330', m_strInstrumentName: '博纳影业', m_strExchangeID: 'SZ', m_nOffsetFlag: 49, m_strOptName: '限价卖出', m_dPrice: 6, m_nVolume: 200, m_dTradeAmount: 1200, m_dCommission: 0.852, m_strTradeDate: '20260901', m_strTradeTime: '101333', }); assert(t.code === '001330.SZ', 'mapTrade code 归一化: ' + t.code); assert(t.tradeDate === '20260901', 'mapTrade tradeDate 保留: ' + t.tradeDate); console.log('\n结果: ' + pass + ' 通过, ' + fail + ' 失败'); process.exit(fail > 0 ? 1 : 0);