isSchemaValid method

  1. @override
Future<String?> isSchemaValid(
  1. DartBlockProgram neoTechCore
)
override

Implementation

@override
Future<String?> isSchemaValid(DartBlockProgram neoTechCore) async {
  if (sampleFunctionCalls.isEmpty) {
    return 'At least 1 sample function call is required.';
  }
  final copy = neoTechCore.copy();
  for (final sampleFunctionCall in sampleFunctionCalls) {
    try {
      copy.mainFunction.statements.clear();
      copy.mainFunction.statements.add(sampleFunctionCall);
      final solutionExecutor = DartBlockExecutor(copy);
      await solutionExecutor.execute();
      if (solutionExecutor.thrownException != null) {
        return "The function call '${sampleFunctionCall.toString()}' is invalid: ${solutionExecutor.thrownException.toString()}";
      }
      // FunctionCallValue.init(sampleFunctionCall).getValue(solutionExecutor);
    } on Exception catch (ex) {
      return "The function call '${sampleFunctionCall.toString()}' is invalid: ${ex.toString()}";
    }
  }
  return null;
}