@@ -199,6 +199,14 @@ public void SetResultsDestinationFolder(string folder)
199199 ResultsDestinationFolder = folder ;
200200 }
201201 public string GetResultsDestinationFolder => ResultsDestinationFolder ;
202+
203+ public void SetAlgorithmDirect ( IAlgorithm algorithm )
204+ {
205+ Algorithm = algorithm ;
206+ }
207+
208+ public void CallSetAlgorithmState ( string error , string stack ) => SetAlgorithmState ( error , stack ) ;
209+
202210 protected override void Run ( )
203211 {
204212 throw new NotImplementedException ( ) ;
@@ -224,6 +232,33 @@ protected override void AddToLogStore(string message)
224232 }
225233 }
226234
235+ [ Test ]
236+ public void RuntimeErrorSetsAlgorithmRunTimeErrorAndStatus ( )
237+ {
238+ var handler = new BaseResultsHandlerTestable ( AlgorithmId ) ;
239+ var algorithm = new QCAlgorithm ( ) ;
240+ handler . SetAlgorithmDirect ( algorithm ) ;
241+
242+ handler . CallSetAlgorithmState ( "Something went wrong" , "stack trace here" ) ;
243+
244+ Assert . IsNotNull ( algorithm . RunTimeError ) ;
245+ Assert . AreEqual ( "Something went wrong" , algorithm . RunTimeError . Message ) ;
246+ Assert . AreEqual ( AlgorithmStatus . RuntimeError , algorithm . Status ) ;
247+ }
248+
249+ [ Test ]
250+ public void RuntimeErrorDoesNotOverwriteExistingRunTimeError ( )
251+ {
252+ var handler = new BaseResultsHandlerTestable ( AlgorithmId ) ;
253+ var algorithm = new QCAlgorithm ( ) ;
254+ handler . SetAlgorithmDirect ( algorithm ) ;
255+
256+ handler . CallSetAlgorithmState ( "First error" , "" ) ;
257+ handler . CallSetAlgorithmState ( "Second error" , "" ) ;
258+
259+ Assert . AreEqual ( "First error" , algorithm . RunTimeError . Message ) ;
260+ }
261+
227262 private struct SampleParams
228263 {
229264 public string ChartName { get ; set ; }
0 commit comments