blob: ece33b26633868191aaa93b0c4901fe2231a5477 [file]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:checks/checks.dart';
import 'package:checks/context.dart';
import 'package:test/scaffolding.dart';
void main() {
group('literal', () {
group('truncates large collections', () {
const maxUntruncatedCollection = 25;
final largeList = List<int>.generate(
maxUntruncatedCollection + 1,
(i) => i,
);
test('in lists', () {
check(literal(largeList)).last.equals('...]');
});
test('in sets', () {
check(literal(largeList.toSet())).last.equals('...}');
});
test('in iterables', () {
check(literal(largeList.followedBy([]))).last.equals('...)');
});
test('without processing truncated elements', () {
final poisonedList = [...largeList, _PoisonToString()];
check(() {
literal(poisonedList);
}).returnsNormally();
});
test('in maps', () {
final map = Map<int, int>.fromIterables(largeList, largeList);
check(literal(map)).last.equals('...}');
});
});
});
}
class _PoisonToString {
@override
String toString() =>
throw StateError('Truncated entry should not be processed');
}