@@ -1082,5 +1082,151 @@ TEST_CASE( "Charging sessions" ) {
10821082 REQUIRE ( checkProcessedStopTx );
10831083 }
10841084
1085+ SECTION (" StatusNotification" ) {
1086+
1087+ mocpp_deinitialize ();
1088+
1089+ mocpp_initialize (loopback, ChargerCredentials ());
1090+
1091+ bool checkProcessed = false ;
1092+ const char *checkStatus = " " ;
1093+
1094+ getOcppContext ()->getOperationRegistry ().setOnRequest (" StatusNotification" ,
1095+ [&checkProcessed, &checkStatus] (JsonObject payload) {
1096+ // process req
1097+ if (payload[" connectorId" ].as <int >() == 1 ) {
1098+ checkProcessed = true ;
1099+ REQUIRE ( !strcmp (payload[" status" ] | " _Undefined" , checkStatus) );
1100+ }
1101+ });
1102+
1103+ checkStatus = " Available" ;
1104+ loop ();
1105+ REQUIRE ( checkProcessed );
1106+
1107+ checkStatus = " Preparing" ;
1108+ checkProcessed = false ;
1109+ setConnectorPluggedInput ([] () {return true ;});
1110+ loop ();
1111+ REQUIRE ( checkProcessed );
1112+
1113+ checkStatus = " Available" ;
1114+ checkProcessed = false ;
1115+ setConnectorPluggedInput ([] () {return false ;});
1116+ loop ();
1117+ REQUIRE ( checkProcessed );
1118+
1119+ checkStatus = " Preparing" ;
1120+ checkProcessed = false ;
1121+ beginTransaction (" mIdTag" );
1122+ loop ();
1123+ REQUIRE ( checkProcessed );
1124+
1125+ checkStatus = " Available" ;
1126+ checkProcessed = false ;
1127+ endTransaction (" mIdTag" );
1128+ loop ();
1129+ REQUIRE ( checkProcessed );
1130+
1131+ checkStatus = " Preparing" ;
1132+ beginTransaction (" mIdTag" );
1133+ loop ();
1134+ checkProcessed = false ;
1135+
1136+ checkStatus = " Charging" ;
1137+ checkProcessed = false ;
1138+ setConnectorPluggedInput ([] () {return true ;});
1139+ loop ();
1140+ REQUIRE ( checkProcessed );
1141+
1142+ checkStatus = " SuspendedEV" ;
1143+ checkProcessed = false ;
1144+ setEvReadyInput ([] () {return false ;});
1145+ loop ();
1146+ REQUIRE ( checkProcessed );
1147+
1148+ checkStatus = " SuspendedEVSE" ;
1149+ checkProcessed = false ;
1150+ setEvReadyInput ([] () {return true ;});
1151+ setEvseReadyInput ([] () {return false ;});
1152+ loop ();
1153+ REQUIRE ( checkProcessed );
1154+
1155+ checkStatus = " Charging" ;
1156+ checkProcessed = false ;
1157+ setEvReadyInput ([] () {return true ;});
1158+ setEvseReadyInput ([] () {return true ;});
1159+ loop ();
1160+ REQUIRE ( checkProcessed );
1161+
1162+ checkStatus = " Finishing" ;
1163+ checkProcessed = false ;
1164+ endTransaction ();
1165+ loop ();
1166+ REQUIRE ( checkProcessed );
1167+
1168+ checkStatus = " Available" ;
1169+ checkProcessed = false ;
1170+ setConnectorPluggedInput ([] () {return false ;});
1171+ loop ();
1172+ REQUIRE ( checkProcessed );
1173+
1174+ checkStatus = " Available" ;
1175+ const char *checkStatus2 = checkStatus;
1176+ checkProcessed = false ;
1177+ mocpp_deinitialize ();
1178+ mocpp_initialize (loopback, ChargerCredentials (" test-runner1234" ));
1179+ getOcppContext ()->getOperationRegistry ().setOnRequest (" StatusNotification" ,
1180+ [&checkProcessed, &checkStatus, &checkStatus2] (JsonObject payload) {
1181+ // process req
1182+ if (payload[" connectorId" ].as <int >() == 1 ) {
1183+ checkProcessed = true ;
1184+ REQUIRE ( (!strcmp (payload[" status" ] | " _Undefined" , checkStatus) || !strcmp (payload[" status" ] | " _Undefined" , checkStatus2)) );
1185+ }
1186+ });
1187+ loop ();
1188+ REQUIRE ( checkProcessed );
1189+
1190+ checkStatus = " Charging" ;
1191+ checkStatus2 = " Preparing" ;
1192+ checkProcessed = false ;
1193+ beginTransaction (" mIdTag" );
1194+ loop ();
1195+ REQUIRE ( checkProcessed );
1196+
1197+ checkStatus = " Charging" ;
1198+ checkStatus2 = checkStatus;
1199+ checkProcessed = false ;
1200+ mocpp_deinitialize ();
1201+ mocpp_initialize (loopback, ChargerCredentials (" test-runner1234" ));
1202+ getOcppContext ()->getOperationRegistry ().setOnRequest (" StatusNotification" ,
1203+ [&checkProcessed, &checkStatus] (JsonObject payload) {
1204+ // process req
1205+ if (payload[" connectorId" ].as <int >() == 1 ) {
1206+ checkProcessed = true ;
1207+ REQUIRE ( !strcmp (payload[" status" ] | " _Undefined" , checkStatus) );
1208+ }
1209+ });
1210+ loop ();
1211+ REQUIRE ( checkProcessed );
1212+
1213+ checkStatus = " Available" ;
1214+ checkStatus2 = checkStatus;
1215+ checkProcessed = false ;
1216+ endTransaction ();
1217+ mocpp_deinitialize ();
1218+ mocpp_initialize (loopback, ChargerCredentials (" test-runner1234" ));
1219+ getOcppContext ()->getOperationRegistry ().setOnRequest (" StatusNotification" ,
1220+ [&checkProcessed, &checkStatus] (JsonObject payload) {
1221+ // process req
1222+ if (payload[" connectorId" ].as <int >() == 1 ) {
1223+ checkProcessed = true ;
1224+ REQUIRE ( !strcmp (payload[" status" ] | " _Undefined" , checkStatus) );
1225+ }
1226+ });
1227+ loop ();
1228+ REQUIRE ( checkProcessed );
1229+ }
1230+
10851231 mocpp_deinitialize ();
10861232}
0 commit comments