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)); } }, ); }); }