1- use std:: collections:: HashSet ;
2-
31use rand:: SeedableRng as _;
42use rand:: rngs:: SmallRng ;
53use robot_name:: * ;
@@ -28,15 +26,6 @@ fn name_should_match_expected_pattern() {
2826 assert_name_matches_pattern ( robot. name ( ) ) ;
2927}
3028
31- #[ test]
32- #[ ignore]
33- fn factory_prevents_name_collisions ( ) {
34- let mut factory = RobotFactory :: new ( ) ;
35- let robot_1 = factory. new_robot ( & mut deterministic_rng ( ) ) ;
36- let robot_2 = factory. new_robot ( & mut deterministic_rng ( ) ) ;
37- assert_ne ! ( robot_1. name( ) , robot_2. name( ) ) ;
38- }
39-
4029#[ test]
4130#[ ignore]
4231fn robot_name_depends_on_rng ( ) {
@@ -56,13 +45,11 @@ fn robot_name_only_depends_on_rng() {
5645
5746#[ test]
5847#[ ignore]
59- fn many_different_robots_have_different_names ( ) {
60- // In 3,529 random robot names, there is ~99.99% chance of a name collision
61- let mut rng = deterministic_rng ( ) ;
48+ fn factory_prevents_name_collisions ( ) {
6249 let mut factory = RobotFactory :: new ( ) ;
63- let robots : Vec < _ > = ( 0 .. 3529 ) . map ( |_| factory. new_robot ( & mut rng ) ) . collect ( ) ;
64- let mut set = HashSet :: new ( ) ;
65- assert ! ( robots . iter ( ) . all ( |robot| set . insert ( robot . name( ) ) ) ) ;
50+ let robot_1 = factory. new_robot ( & mut deterministic_rng ( ) ) ;
51+ let robot_2 = factory . new_robot ( & mut deterministic_rng ( ) ) ;
52+ assert_ne ! ( robot_1 . name ( ) , robot_2 . name( ) ) ;
6653}
6754
6855#[ test]
@@ -91,19 +78,17 @@ fn new_name_is_different_from_old_name() {
9178#[ test]
9279#[ ignore]
9380fn factory_prevents_name_collision_despite_reset ( ) {
94- // To keep the same probablity as the first test with many robots, we
95- // generate 3,529 robots and reset their names, then generate another 3,529
96- // robots and check if there are collisions across these two groups.
97- let mut rng = deterministic_rng ( ) ;
9881 let mut factory = RobotFactory :: new ( ) ;
99- let mut reset_robots: Vec < _ > = ( 0 ..3529 ) . map ( |_| factory. new_robot ( & mut rng) ) . collect ( ) ;
100- for robot in & mut reset_robots {
101- robot. reset ( & mut rng) ;
102- }
103- let mut set = HashSet :: new ( ) ;
104- assert ! ( reset_robots. iter( ) . all( |robot| set. insert( robot. name( ) ) ) ) ;
10582
106- assert ! ( ( 0 ..3529 ) . all( |_| !set. contains( factory. new_robot( & mut rng) . name( ) ) ) ) ;
83+ let mut rng = deterministic_rng ( ) ;
84+ let mut robot_1 = factory. new_robot ( & mut rng) ;
85+ robot_1. reset ( & mut rng) ;
86+
87+ let mut rng = deterministic_rng ( ) ;
88+ let mut robot_2 = factory. new_robot ( & mut rng) ;
89+ robot_2. reset ( & mut rng) ;
90+
91+ assert_ne ! ( robot_1. name( ) , robot_2. name( ) ) ;
10792}
10893
10994#[ test]
0 commit comments