public void ShouldProvideCallChainWhenDiscardRecursion() { var script = @" var funcRoot, funcA, funcB, funcC, funcD; var funcRoot = function() { funcA(); }; var funcA = function() { funcB(); }; var funcB = function() { funcC(); }; var funcC = function() { funcD(); }; var funcD = function() { funcRoot(); }; funcRoot(); "; RecursionDepthOverflowException exception = null; try { new Engine(cfg => cfg.LimitRecursion()).Execute(script); } catch (RecursionDepthOverflowException ex) { exception = ex; } }
public void ShouldProvideCallChainWhenDiscardRecursion() { var script = @" var funcRoot, funcA, funcB, funcC, funcD; var funcRoot = function() { funcA(); }; var funcA = function() { funcB(); }; var funcB = function() { funcC(); }; var funcC = function() { funcD(); }; var funcD = function() { funcRoot(); }; funcRoot(); "; RecursionDepthOverflowException exception = null; try { new Engine(cfg => cfg.LimitRecursion()).Execute(script); } catch (RecursionDepthOverflowException ex) { exception = ex; } Assert.NotNull(exception); Assert.Equal("funcRoot->funcA->funcB->funcC->funcD", exception.CallChain); Assert.Equal("funcRoot", exception.CallExpressionReference); }
public void LogError(RecursionDepthOverflowException error) { Output?.LogError(error); }
public void LogError(RecursionDepthOverflowException error) { AppendText("Stack overflow", Color.DarkRed); }