alt/apps/client/test/contracts/alt_contracts_test.dart
toki 47109b4e42 feat: monthly aggregation and backtest multi-timeframe coverage
- Add monthly bars aggregation in worker (services/worker/internal/marketdata/aggregation/)
- Support monthly timeframe in operator runner and output
- Add monthly aggregation test data and test cases
- Update contracts (proto, Dart, Go) for monthly timeframe support
- Sync parser_map, socket handlers, and worker client across services
- Add code review and plan logs for multi-timeframe coverage milestones
2026-06-19 19:51:05 +09:00

91 lines
3.2 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:alt_client/src/contracts/alt_contracts.dart';
import 'package:alt_client/src/generated/alt/v1/common.pb.dart';
import 'package:alt_client/src/generated/alt/v1/market.pb.dart';
import 'package:alt_client/src/generated/alt/v1/backtest.pb.dart';
import 'package:alt_client/src/generated/alt/v1/paper_trading.pb.dart';
import 'package:alt_client/src/generated/alt/v1/live_trading.pb.dart';
void main() {
group('ALT contracts parser map helper tests', () {
test(
'altParserMap contains all expected parsers and passes round-trip parsing',
() {
final parsers = altParserMap();
final expectedMessages = [
HelloRequest(),
HelloResponse(),
ListInstrumentsRequest(),
ListInstrumentsResponse(),
ListBarsRequest(),
ListBarsResponse(),
AggregateMonthlyBarsRequest(),
AggregateMonthlyBarsResponse(),
MonthlyProvenance(),
StartBacktestRequest(),
StartBacktestResponse(),
GetBacktestRunRequest(),
GetBacktestRunResponse(),
GetBacktestResultRequest(),
GetBacktestResultResponse(),
BacktestResult(),
ListBacktestRunsRequest(),
ListBacktestRunsResponse(),
GetBacktestRunDetailRequest(),
GetBacktestRunDetailResponse(),
CompareBacktestRunsRequest(),
CompareBacktestRunsResponse(),
StartPaperTradingRequest(),
StartPaperTradingResponse(),
GetPaperTradingStateRequest(),
GetPaperTradingStateResponse(),
PaperTradingState(),
GetLiveBrokerCapabilitiesRequest(),
GetLiveBrokerCapabilitiesResponse(),
LiveBrokerCapability(),
SubmitLiveOrderRequest(),
SubmitLiveOrderResponse(),
CancelLiveOrderRequest(),
CancelLiveOrderResponse(),
GetLiveOrderRequest(),
GetLiveOrderResponse(),
GetLiveRiskPolicyRequest(),
GetLiveRiskPolicyResponse(),
LiveRiskPolicy(),
GetLiveKillSwitchRequest(),
GetLiveKillSwitchResponse(),
SetLiveKillSwitchRequest(),
SetLiveKillSwitchResponse(),
LiveKillSwitchState(),
LiveRiskDecision(),
SyncLiveAccountRequest(),
SyncLiveAccountResponse(),
GetLiveAccountSnapshotRequest(),
GetLiveAccountSnapshotResponse(),
LiveAccountSnapshot(),
LiveCashBalance(),
LivePositionSnapshot(),
];
expect(parsers.length, equals(expectedMessages.length));
for (final msg in expectedMessages) {
final qualifiedName = msg.info_.qualifiedMessageName;
expect(
parsers.containsKey(qualifiedName),
isTrue,
reason: 'Map should contain parser for $qualifiedName',
);
final parser = parsers[qualifiedName]!;
final serialized = msg.writeToBuffer();
final parsed = parser(serialized);
expect(parsed.info_.qualifiedMessageName, equals(qualifiedName));
expect(parsed.writeToBuffer(), equals(serialized));
}
},
);
});
}