checkCodeEvaluation.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /**
  2. * Evaluates code passed amount time
  3. *
  4. * @param {() => string} codeGetterFunction
  5. * @param {number} runsAmount
  6. * @param expectedResult
  7. * @returns {{areSuccessEvaluations: boolean, errorMessage?: string}}
  8. */
  9. export function checkCodeEvaluation (
  10. codeGetterFunction: () => string,
  11. runsAmount: number,
  12. expectedResult?: any
  13. ): {
  14. areSuccessEvaluations: boolean;
  15. errorMessage?: string;
  16. } {
  17. for (let i = 0; i < runsAmount; i++) {
  18. try {
  19. const result = eval(codeGetterFunction());
  20. if (expectedResult !== undefined && result !== expectedResult) {
  21. return {
  22. areSuccessEvaluations: false,
  23. errorMessage: `Invalid evaluation result: ${result}. Expected: ${expectedResult}`
  24. };
  25. }
  26. } catch (error) {
  27. return {
  28. areSuccessEvaluations: false,
  29. errorMessage: error.message
  30. };
  31. }
  32. }
  33. return {
  34. areSuccessEvaluations: true
  35. };
  36. }