Skip to content

Commit

Permalink
Adjusted all tests to take into account the new parameter TimeBetween…
Browse files Browse the repository at this point in the history
…TestSuitesExecution of TcUnit.
  • Loading branch information
sagatowski committed Mar 6, 2021
1 parent 3b58944 commit e8aedf5
Show file tree
Hide file tree
Showing 13 changed files with 75 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[(* Make sure to only run test logic if it's time for this test to execute *)
IF TEST_ORDERED('TestLongTime') THEN
GVL.timedfb_testLongTime := GVL.timedfb_testLongTime + 1;
GVL.timedfb_testLongTime := GVL.timedfb_testLongTime + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbTimedFunctionBlock(bExecute := TRUE);
(* Check if we get a timeout or if we get the result we want *)
Expand Down Expand Up @@ -54,7 +54,7 @@ END_VAR]]></Declaration>
<ST><![CDATA[(* Make sure to only run test logic if it's time for this test to execute
Note that this test will fail, as we will not run it long enough to get the correct result! *)
IF TEST_ORDERED('TestShortTime') THEN
GVL.timedfb_testshortTime := GVL.timedfb_testshortTime + 1;
GVL.timedfb_testshortTime := GVL.timedfb_testshortTime + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbTimedFunctionBlock(bExecute := TRUE);
(* Check if we get a timeout or if we get the result we want *)
Expand Down Expand Up @@ -82,7 +82,7 @@ END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[// Make sure to only run test logic if it's time for this test to execute
IF TEST_ORDERED('TestVariant100') THEN
GVL.statemachinefb_testvariant100 := GVL.statemachinefb_testvariant100 + 1;
GVL.statemachinefb_testvariant100 := GVL.statemachinefb_testvariant100 + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbStateMachineFunctionBlock(bStart := TRUE, nVariant := 100);
(* Check if we get a timeout or if we get the result we want *)
Expand All @@ -108,10 +108,10 @@ VAR CONSTANT
EXPECTED_RESULT : INT := 100;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[// Make sure to only run test logic if it's time for this test to execute
// Note that this test will fail, as we will not run it long enough to get the correct result! *)
<ST><![CDATA[(* Make sure to only run test logic if it's time for this test to execute
Note that this test will fail, as we will not run it long enough to get the correct result! *)
IF TEST_ORDERED('TestVariant20') THEN
GVL.statemachinefb_testvariant20 := GVL.statemachinefb_testvariant20 + 1;
GVL.statemachinefb_testvariant20 := GVL.statemachinefb_testvariant20 + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbStateMachineFunctionBlock(bStart := TRUE, nVariant := 20);
(* Check if we get a timeout or if we get the result we want *)
Expand All @@ -138,7 +138,7 @@ VAR CONSTANT
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TEST('TestVariant50');
GVL.statemachinefb_testvariant50 := GVL.statemachinefb_testvariant50 + 1;
GVL.statemachinefb_testvariant50 := GVL.statemachinefb_testvariant50 + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbStateMachineFunctionBlock(bStart := TRUE, nVariant := 50);
(* Check if we get a timeout or if we get the result we want *)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.18">
<GVL Name="GVL" Id="{2ee23b30-e6fe-4c1b-b0ea-d35d6a0d8c22}">
<Declaration><![CDATA[{attribute 'qualified_only'}
VAR_GLOBAL
fbDiagnosticMessageDiagnosticCodeParser_Test_WhenEmergencyErrorCodeExpectEmergencyErrorCode : ULINT;
fbDiagnosticMessageDiagnosticCodeParser_Test_WhenManufacturerSpecificExpectManufacturerSpecific : ULINT;
fbDiagnosticMessageDiagnosticCodeParser_Test_WhenProfileSpecificExpectProfileSpecific : ULINT;
fbDiagnosticMessageDiagnosticCodeParser_Test_WhenReservedForFutureUseExpectReservedForFutureUse : ULINT;
fbDiagnosticMessageFlagsParser_Test_WhenInfoMessageExpectInfoMessageGlobalTimestampAndZeroParameters : ULINT;
fbDiagnosticMessageFlagsParser_Test_WhenWarningMessageExpectWarningMessageLocalTimestampAndTwoParameters : ULINT;
fbDiagnosticMessageFlagsParser_Test_WhenErrorMessageExpectErrorMessageLocalTimestampAndFourParameters : ULINT;
fbDiagnosticMessageFlagsParser_Test_WhenReservedForFutureUseMessageExpectReservedForFutureUseMessageLocalTimestampAnd33Parameters : ULINT;
fbDiagnosticMessageParser_Test_TestWithEmergencyMessage : ULINT;
fbDiagnosticMessageParser_Test_TestWithManufacturerSpecificMessage : ULINT;
fbDiagnosticMessageParser_Test_TestWithUnspecifiedMessageMessage : ULINT;
fbDiagnosticMessageParser_Test_TestWithUnspecifiedMessageMessage_ParameterVariant : ULINT;
fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityLowExpectTextIdentity0 : ULINT;
fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityHighExpectTextIdentity65535 : ULINT;
fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityMedExpectTextIdentity34500 : ULINT;
fbDiagnosticMessageTimeStampParser_Test_TestWithTimestampZeroTimeExpectCurrentTime : ULINT;
fbDiagnosticMessageTimeStampParser_Test_TestWithValidTimestampExpectSameTimestamp : ULINT;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@
<Compile Include="DUTs\ST_FLAGS.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="GVLs\GVL.TcGVL">
<SubType>Code</SubType>
<LinkAlways>true</LinkAlways>
</Compile>
<Compile Include="PlcTask.TcTTO">
<SubType>Code</SubType>
</Compile>
Expand Down Expand Up @@ -87,6 +91,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="DUTs" />
<Folder Include="GVLs" />
<Folder Include="Test" />
<Folder Include="POUs" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ VAR CONSTANT
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenEmergencyErrorCodeExpectEmergencyErrorCode') THEN
GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenEmergencyErrorCodeExpectEmergencyErrorCode := GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenEmergencyErrorCodeExpectEmergencyErrorCode + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageDiagnosticCodeParser(anDiagnosticCodeBuffer := canDiagnosticCodeBuffer_EmergencyErrorCode,
stDiagnosticCode => stDiagnosticCode);
Expand Down Expand Up @@ -72,7 +72,7 @@ VAR CONSTANT
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenManufacturerSpecificExpectManufacturerSpecific') THEN
GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenManufacturerSpecificExpectManufacturerSpecific := GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenManufacturerSpecificExpectManufacturerSpecific + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageDiagnosticCodeParser(anDiagnosticCodeBuffer := canDiagnosticCodeBuffer_ManufacturerSpecific,
stDiagnosticCode => stDiagnosticCode);
Expand Down Expand Up @@ -113,6 +113,7 @@ VAR CONSTANT
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenProfileSpecificExpectProfileSpecific') THEN
GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenProfileSpecificExpectProfileSpecific := GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenProfileSpecificExpectProfileSpecific + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageDiagnosticCodeParser(anDiagnosticCodeBuffer := canDiagnosticCodeBuffer_ProfileSpecific,
stDiagnosticCode => stDiagnosticCode);
Expand Down Expand Up @@ -153,6 +154,7 @@ VAR CONSTANT
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenReservedForFutureUseExpectReservedForFutureUse') THEN
GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenReservedForFutureUseExpectReservedForFutureUse := GVL.fbDiagnosticMessageDiagnosticCodeParser_Test_WhenReservedForFutureUseExpectReservedForFutureUse + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageDiagnosticCodeParser(anDiagnosticCodeBuffer := canDiagnosticCodeBuffer_ReservedForFutureUse,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenErrorMessageExpectErrorMessageLocalTimestampAndFourParameters') THEN
GVL.fbDiagnosticMessageFlagsParser_Test_WhenErrorMessageExpectErrorMessageLocalTimestampAndFourParameters := GVL.fbDiagnosticMessageFlagsParser_Test_WhenErrorMessageExpectErrorMessageLocalTimestampAndFourParameters + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN ErrorMessage
fbDiagnosticMessageFlagsParser(anFlagsBuffer := canFlagsBuffer_ErrorMessage,
Expand Down Expand Up @@ -65,6 +66,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenInfoMessageExpectInfoMessageGlobalTimestampAndZeroParameters') THEN
GVL.fbDiagnosticMessageFlagsParser_Test_WhenInfoMessageExpectInfoMessageGlobalTimestampAndZeroParameters := GVL.fbDiagnosticMessageFlagsParser_Test_WhenInfoMessageExpectInfoMessageGlobalTimestampAndZeroParameters + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageFlagsParser(anFlagsBuffer := canFlagsBuffer_InfoMessage,
Expand Down Expand Up @@ -103,6 +105,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenReservedForFutureUseMessageExpectReservedForFutureUseMessageLocalTimestampAnd33Parameters') THEN
GVL.fbDiagnosticMessageFlagsParser_Test_WhenReservedForFutureUseMessageExpectReservedForFutureUseMessageLocalTimestampAnd33Parameters := GVL.fbDiagnosticMessageFlagsParser_Test_WhenReservedForFutureUseMessageExpectReservedForFutureUseMessageLocalTimestampAnd33Parameters + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN ReservedForFutureUseMessage
fbDiagnosticMessageFlagsParser(anFlagsBuffer := canFlagsBuffer_ReservedForFutureUseMessage,
Expand Down Expand Up @@ -141,6 +144,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenWarningMessageExpectWarningMessageLocalTimestampAndTwoParameters') THEN
GVL.fbDiagnosticMessageFlagsParser_Test_WhenWarningMessageExpectWarningMessageLocalTimestampAndTwoParameters := GVL.fbDiagnosticMessageFlagsParser_Test_WhenWarningMessageExpectWarningMessageLocalTimestampAndTwoParameters + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN WarningMessage
fbDiagnosticMessageFlagsParser(anFlagsBuffer := canFlagsBuffer_WarningMessage,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('TestWithEmergencyMessage') THEN
GVL.fbDiagnosticMessageParser_Test_TestWithEmergencyMessage := GVL.fbDiagnosticMessageParser_Test_TestWithEmergencyMessage + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
stDiagnosticMessage_EmergencyMessage.sTimeStamp := DCTIME64_TO_STRING(in := F_GetCurDcTaskTime64());
Expand Down Expand Up @@ -182,6 +183,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('TestWithManufacturerSpecificMessage') THEN
GVL.fbDiagnosticMessageParser_Test_TestWithManufacturerSpecificMessage := GVL.fbDiagnosticMessageParser_Test_TestWithManufacturerSpecificMessage + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageParser(anDiagnosticMessageBuffer := canDiagnosticBuffer_ManufacturerSpecificMessage,
Expand Down Expand Up @@ -291,6 +293,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('TestWithUnspecifiedMessageMessage') THEN
GVL.fbDiagnosticMessageParser_Test_TestWithUnspecifiedMessageMessage := GVL.fbDiagnosticMessageParser_Test_TestWithUnspecifiedMessageMessage + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageParser(anDiagnosticMessageBuffer := canDiagnosticBuffer_UnspecifiedMessage,
Expand Down Expand Up @@ -400,6 +403,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('TestWithUnspecifiedMessageMessage_ParameterVariant') THEN
GVL.fbDiagnosticMessageParser_Test_TestWithUnspecifiedMessageMessage_ParameterVariant := GVL.fbDiagnosticMessageParser_Test_TestWithUnspecifiedMessageMessage_ParameterVariant + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageParser(anDiagnosticMessageBuffer := canDiagnosticBuffer_UnspecifiedMessage_ParameterVariant,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenTextIdentityHighExpectTextIdentity65535') THEN
GVL.fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityHighExpectTextIdentity65535 := GVL.fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityHighExpectTextIdentity65535 + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageTextIdentityParser(anTextIdentityBuffer := canTextIdentityBuffer_IdentityHigh,
Expand Down Expand Up @@ -53,6 +54,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenTextIdentityLowExpectTextIdentity0') THEN
GVL.fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityLowExpectTextIdentity0 := GVL.fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityLowExpectTextIdentity0 + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageTextIdentityParser(anTextIdentityBuffer := canTextIdentityBuffer_IdentityLow,
Expand Down Expand Up @@ -82,6 +84,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('WhenTextIdentityMedExpectTextIdentity34500') THEN
GVL.fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityMedExpectTextIdentity34500 := GVL.fbDiagnosticMessageTextIdentityParser_Test_WhenTextIdentityMedExpectTextIdentity34500 + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageTextIdentityParser(anTextIdentityBuffer := canTextIdentityBuffer_IdentityMed,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('TestWithTimestampZeroTimeExpectCurrentTime') THEN
GVL.fbDiagnosticMessageTimeStampParser_Test_TestWithTimestampZeroTimeExpectCurrentTime := GVL.fbDiagnosticMessageTimeStampParser_Test_TestWithTimestampZeroTimeExpectCurrentTime + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageTimeStampParser(anTimeStampBuffer := canTimeStampBuffer_TimeStampZeroTime,
Expand Down Expand Up @@ -65,6 +66,7 @@ VAR
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF TEST_ORDERED('TestWithValidTimestampExpectSameTimestamp') THEN
GVL.fbDiagnosticMessageTimeStampParser_Test_TestWithValidTimestampExpectSameTimestamp := GVL.fbDiagnosticMessageTimeStampParser_Test_TestWithValidTimestampExpectSameTimestamp + 1; // Only for testing the framework. Ignore this.
// @TEST-RUN
fbDiagnosticMessageTimeStampParser(anTimeStampBuffer := canTimeStampBuffer_TimeStampValidTime,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
This is the main program for execution of the unit tests.
The program executes the test suites one after the other, with a delay of T#0MS between
each other (that is, as soon as one test suite has finished executing, the next
one starts to execute immediately after). This delay is defined in the call to
RUN_IN_SEQUENCE(T#0MS).
one starts to execute immediately after). This delay is defined in the parameter
GVL_Param_TcUnit.TimeBetweenTestSuitesExecution (default T#0MS).
Within each test suite, the program also executes each test one after the other, which
is achieved by calling the TEST_ORDERED() for every test. The test-order is defined
by the order of which the tests are being called.
Expand All @@ -22,7 +22,7 @@ VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[TcUnit.RUN_IN_SEQUENCE(T#0MS);]]></ST>
<ST><![CDATA[TcUnit.RUN_IN_SEQUENCE();]]></ST>
</Implementation>
</POU>
</TcPlcObject>
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@
<PlaceholderReference Include="TcUnit">
<DefaultResolution>TcUnit, * (www.tcunit.org)</DefaultResolution>
<Namespace>TcUnit</Namespace>
<Parameters>
<Parameter xmlns="">
<Key>TIMEBETWEENTESTSUITESEXECUTION</Key>
<Value>TIME#5s0ms</Value>
</Parameter>
</Parameters>
</PlaceholderReference>
</ItemGroup>
<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[// Make sure to only run test logic if it's time for this test to execute
IF TEST_ORDERED('TestVariant100') THEN
GVL.statemachinefb_testvariant100 := GVL.statemachinefb_testvariant100 + 1;
GVL.statemachinefb_testvariant100 := GVL.statemachinefb_testvariant100 + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbStateMachineFunctionBlock(bStart := TRUE, nVariant := 100);
(* Check if we get a timeout or if we get the result we want *)
Expand Down Expand Up @@ -52,7 +52,7 @@ END_VAR]]></Declaration>
<ST><![CDATA[// Make sure to only run test logic if it's time for this test to execute
// Note that this test will fail, as we will not run it long enough to get the correct result! *)
IF TEST_ORDERED('TestVariant20') THEN
GVL.statemachinefb_testvariant20 := GVL.statemachinefb_testvariant20 + 1;
GVL.statemachinefb_testvariant20 := GVL.statemachinefb_testvariant20 + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbStateMachineFunctionBlock(bStart := TRUE, nVariant := 20);
(* Check if we get a timeout or if we get the result we want *)
Expand Down Expand Up @@ -80,7 +80,7 @@ END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[// Make sure to only run test logic if it's time for this test to execute
IF TEST_ORDERED('TestVariant50') THEN
GVL.statemachinefb_testvariant50 := GVL.statemachinefb_testvariant50 + 1;
GVL.statemachinefb_testvariant50 := GVL.statemachinefb_testvariant50 + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbStateMachineFunctionBlock(bStart := TRUE, nVariant := 50);
(* Check if we get a timeout or if we get the result we want *)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[(* Make sure to only run test logic if it's time for this test to execute *)
IF TEST_ORDERED('TestLongTime') THEN
GVL.timedfb_testLongTime := GVL.timedfb_testLongTime + 1;
GVL.timedfb_testLongTime := GVL.timedfb_testLongTime + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbTimedFunctionBlock(bExecute := TRUE);
(* Check if we get a timeout or if we get the result we want *)
Expand Down Expand Up @@ -51,7 +51,7 @@ END_VAR]]></Declaration>
<ST><![CDATA[(* Make sure to only run test logic if it's time for this test to execute
Note that this test will fail, as we will not run it long enough to get the correct result! *)
IF TEST_ORDERED('TestShortTime') THEN
GVL.timedfb_testshortTime := GVL.timedfb_testshortTime + 1;
GVL.timedfb_testshortTime := GVL.timedfb_testshortTime + 1; // Only for testing the framework. Ignore this.
fbTon(IN := TRUE); // Maximum time we will run the test
fbTimedFunctionBlock(bExecute := TRUE);
(* Check if we get a timeout or if we get the result we want *)
Expand Down
Loading

0 comments on commit e8aedf5

Please sign in to comment.