39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			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;
 | 
						|
}
 |