evaluate method

  1. @override
Future<DartBlockEvaluation> evaluate(
  1. DartBlockProgram solutionCore,
  2. DartBlockProgram answerCore
)
override

Implementation

@override
Future<DartBlockEvaluation> evaluate(
  DartBlockProgram solutionCore,
  DartBlockProgram answerCore,
) async {
  final List<FunctionDefinition> correctFunctionDefinitions = [];
  final List<FunctionDefinition> missingFunctionDefinitions = [];
  final List<(FunctionDefinition, FunctionDefinition)>
  wrongFunctionDefinitions = [];

  for (final functionDefinition in functionDefinitions) {
    final answerFunctionDefinition = answerCore.customFunctions
        .firstWhereOrNull(
          (element) =>
              element.getAsFunctionDefinition().name ==
              functionDefinition.name,
        )
        ?.getAsFunctionDefinition();
    if (answerFunctionDefinition != null) {
      if (answerFunctionDefinition == functionDefinition) {
        correctFunctionDefinitions.add(functionDefinition);
      } else {
        wrongFunctionDefinitions.add((
          functionDefinition,
          answerFunctionDefinition,
        ));
      }
    } else {
      missingFunctionDefinitions.add(functionDefinition);
    }
  }

  return DartBlockFunctionDefinitionEvaluation.init(
    correctFunctionDefinitions,
    missingFunctionDefinitions,
    wrongFunctionDefinitions,
  );
}