testFailure method
void
testFailure({
- List<
({Calculable< ? errorTests,Object?> actual, Calculable<Object?> expected, String reason})> - required List<
String> errors, - required int failPos,
- required I input,
- required int pos,
Implementation
void testFailure({
List<
({
String reason,
Calculable<Object?> actual,
Calculable<Object?> expected
})>?
errorTests,
required List<String> errors,
required int failPos,
required I input,
required int pos,
}) {
for (final name in [parserName, parserNameNoResult]) {
final resultVar = allocator.allocate('result');
final stateVar = allocator.allocate('state');
final errorCountCode = getAsCode(errors.length);
final inputCode = _inputAsCode(input);
output.writeln('final $stateVar = State($inputCode);');
output.writeln('final $resultVar = $name($stateVar);');
output.writeln(
'expect($stateVar.ok, false, reason: ${getReason(input: input, subject: 'state.ok == false')});');
output.writeln(
'expect($resultVar, null, reason: ${getReason(input: input, subject: 'result == null')});');
output.writeln(
'expect($stateVar.pos, $pos, reason: ${getReason(input: input, subject: 'state.pos')});');
output.writeln(
'expect($stateVar.failPos, $failPos, reason: ${getReason(input: input, subject: 'state.failPos')});');
output.writeln(
'expect($stateVar.errorCount, $errorCountCode, reason: ${getReason(input: input, subject: 'state.errorCount')});');
for (var i = 0; i < errors.length; i++) {
final error = errors[i];
output.writeln(
'expect($stateVar.errors[$i], isA<$error>(), reason: ${getReason(input: input, subject: 'state.error')});');
}
if (errorTests != null) {
for (var resultError in errorTests) {
final actual =
resultError.actual.calculate(context, ['$stateVar.errors']);
final expected =
resultError.expected.calculate(context, ['$stateVar.errors']);
final reason = resultError.reason;
output.writeln(
'expect($actual, $expected, reason: ${getReason(input: input, subject: reason)});');
}
}
}
}