guru_sdk/guru_app/test/random/pseudo_random_test.dart

39 lines
1.3 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:guru_utils/random/pseudo_random.dart'; // 导入PseudoRandom类的路径
void main() {
group('PseudoRandom', () {
test('nextInt generates random integers', () {
final prng = PseudoRandom(42);
final numbers = List.generate(5, (_) => prng.nextInt());
expect(numbers, isNotEmpty);
expect(numbers, isNot(containsDuplicates(numbers)));
});
test('nextBool generates random booleans', () {
final prng = PseudoRandom(42);
final bools = List.generate(5, (_) => prng.nextBool());
expect(bools, isNotEmpty);
expect(bools, contains(true));
expect(bools, contains(false));
});
test('shuffle shuffles a list', () {
final prng = PseudoRandom(42);
final originalList = [1, 2, 3, 4, 5];
final shuffledList = List.from(originalList);
prng.shuffle(shuffledList);
expect(shuffledList, isNotEmpty);
expect(shuffledList, isNot(equals(originalList)));
expect(shuffledList.length, equals(originalList.length));
expect(shuffledList, containsAll(originalList));
});
});
}
// 辅助函数:检查给定的列表是否包含重复元素
bool containsDuplicates(List list) {
return list.length != list.toSet().length;
}