@@ -46,13 +46,14 @@ public void Should_convert_print_json_packet_into_string()
46
46
new JsonMessagePart { Type = JsonMessagePartType . LocationName , Text = "Text7" } ,
47
47
new JsonMessagePart { Type = JsonMessagePartType . PlayerId , Text = "8" } ,
48
48
new JsonMessagePart { Type = JsonMessagePartType . PlayerName , Text = "Text9" } ,
49
- new JsonMessagePart { Type = JsonMessagePartType . EntranceName , Text = "Text10" }
50
- }
49
+ new JsonMessagePart { Type = JsonMessagePartType . EntranceName , Text = "Text10" } ,
50
+ new JsonMessagePart { Type = JsonMessagePartType . HintStatus , Text = "Text11" , HintStatus = HintStatus . Avoid }
51
+ }
51
52
} ;
52
53
53
54
socket . PacketReceived += Raise . Event < ArchipelagoSocketHelperDelagates . PacketReceivedHandler > ( packet ) ;
54
55
55
- Assert . That ( toStringResult , Is . EqualTo ( "Text1Text2Text3Text4Text5Text6Text7Text8Text9Text10 " ) ) ;
56
+ Assert . That ( toStringResult , Is . EqualTo ( "Text1Text2Text3Text4Text5Text6Text7Text8Text9Text10Text11 " ) ) ;
56
57
}
57
58
58
59
[ Test ]
@@ -86,13 +87,14 @@ public void Should_get_parsed_data_for_print_json_packet()
86
87
new JsonMessagePart { Type = JsonMessagePartType . LocationName , Text = "Text7" } ,
87
88
new JsonMessagePart { Type = JsonMessagePartType . PlayerId , Text = "8" } ,
88
89
new JsonMessagePart { Type = JsonMessagePartType . PlayerName , Text = "Text9" } ,
89
- new JsonMessagePart { Type = JsonMessagePartType . EntranceName , Text = "Text10" }
90
- }
90
+ new JsonMessagePart { Type = JsonMessagePartType . EntranceName , Text = "Text10" } ,
91
+ new JsonMessagePart { Type = JsonMessagePartType . HintStatus , Text = "Text11" , HintStatus = HintStatus . Avoid }
92
+ }
91
93
} ;
92
94
93
95
socket . PacketReceived += Raise . Event < ArchipelagoSocketHelperDelagates . PacketReceivedHandler > ( packet ) ;
94
96
95
- Assert . That ( parts . Length , Is . EqualTo ( 10 ) ) ;
97
+ Assert . That ( parts . Length , Is . EqualTo ( 11 ) ) ;
96
98
Assert . That ( parts [ 0 ] . Text , Is . EqualTo ( "Text1" ) ) ;
97
99
Assert . That ( parts [ 0 ] . Color , Is . EqualTo ( Color . White ) ) ;
98
100
Assert . That ( parts [ 0 ] . IsBackgroundColor , Is . EqualTo ( false ) ) ;
@@ -142,7 +144,12 @@ public void Should_get_parsed_data_for_print_json_packet()
142
144
Assert . That ( parts [ 9 ] . Color , Is . EqualTo ( Color . Blue ) ) ;
143
145
Assert . That ( parts [ 9 ] . IsBackgroundColor , Is . EqualTo ( false ) ) ;
144
146
Assert . That ( parts [ 9 ] . Type , Is . EqualTo ( MessagePartType . Entrance ) ) ;
145
- }
147
+
148
+ Assert . That ( parts [ 10 ] . Text , Is . EqualTo ( "Text11" ) ) ;
149
+ Assert . That ( parts [ 10 ] . Color , Is . EqualTo ( Color . Salmon ) ) ;
150
+ Assert . That ( parts [ 10 ] . IsBackgroundColor , Is . EqualTo ( false ) ) ;
151
+ Assert . That ( parts [ 10 ] . Type , Is . EqualTo ( MessagePartType . HintStatus ) ) ;
152
+ }
146
153
147
154
[ Test ]
148
155
public void Should_mark_local_player_as_magenta ( )
@@ -1032,6 +1039,43 @@ public void ItemSendLogMessage_for_group_receiver_should_be_related_to_active_pl
1032
1039
Assert . That ( logMessage . IsRelatedToActivePlayer , Is . True ) ;
1033
1040
}
1034
1041
1042
+ [ Test ]
1043
+ public void Should_not_crash_on_parsing_unknown_message_type ( )
1044
+ {
1045
+ var socket = Substitute . For < IArchipelagoSocketHelper > ( ) ;
1046
+ var itemInfoResolver = Substitute . For < IItemInfoResolver > ( ) ;
1047
+ var players = Substitute . For < IPlayerHelper > ( ) ;
1048
+ var connectionInfo = Substitute . For < IConnectionInfoProvider > ( ) ;
1049
+
1050
+ var sut = new MessageLogHelper ( socket , itemInfoResolver , players , connectionInfo ) ;
1051
+
1052
+ ChatLogMessage logMessage = null ;
1053
+
1054
+ sut . OnMessageReceived += ( message ) =>
1055
+ logMessage = message as ChatLogMessage ;
1056
+
1057
+
1058
+ var packet = new ChatPrintJsonPacket
1059
+ {
1060
+ Data = new [ ] {
1061
+ new JsonMessagePart { Type = null , Text = "Some unknown typed text" } , // add invallid type..
1062
+ } ,
1063
+ Team = 0 ,
1064
+ Slot = 2 ,
1065
+ Message = "I dont know" ,
1066
+ MessageType = JsonMessageType . Chat
1067
+ } ;
1068
+
1069
+ Assert . DoesNotThrow ( ( ) =>
1070
+ {
1071
+ socket . PacketReceived += Raise . Event < ArchipelagoSocketHelperDelagates . PacketReceivedHandler > ( packet ) ;
1072
+
1073
+ } ) ;
1074
+
1075
+ Assert . That ( logMessage , Is . Not . Null ) ;
1076
+ Assert . That ( logMessage . ToString ( ) , Is . EqualTo ( "Some unknown typed text" ) ) ;
1077
+ }
1078
+
1035
1079
#if NET471 || NET472
1036
1080
static Dictionary < int , ReadOnlyCollection < PlayerInfo > > GetPlayerCollection ( IList < PlayerInfo > playerInfos ) =>
1037
1081
new Dictionary < int , ReadOnlyCollection < PlayerInfo > > (
0 commit comments