@@ -329,4 +329,57 @@ mod tests {
329329 ] )
330330 ) ;
331331 }
332+
333+ #[ test]
334+ fn test_generate_module_permutations_two_closed_layers ( ) {
335+ let mut graph = Graph :: default ( ) ;
336+
337+ // Create four layers with the middle two closed
338+ let top_module = graph. get_or_add_module ( "app.top" ) . token ;
339+ let middle_top_module = graph. get_or_add_module ( "app.middle-top" ) . token ;
340+ let middle_bottom_module = graph. get_or_add_module ( "app.middle-bottom" ) . token ;
341+ let bottom_module = graph. get_or_add_module ( "app.bottom" ) . token ;
342+
343+ let mut top_layer = FxHashSet :: default ( ) ;
344+ top_layer. insert ( top_module) ;
345+
346+ let mut middle_top_layer = FxHashSet :: default ( ) ;
347+ middle_top_layer. insert ( middle_top_module) ;
348+
349+ let mut middle_bottom_layer = FxHashSet :: default ( ) ;
350+ middle_bottom_layer. insert ( middle_bottom_module) ;
351+
352+ let mut bottom_layer = FxHashSet :: default ( ) ;
353+ bottom_layer. insert ( bottom_module) ;
354+
355+ let top_level = Level :: new ( top_layer, false , false ) ;
356+ let middle_top_level = Level :: new ( middle_top_layer, false , true ) ; // Closed
357+ let middle_bottom_level = Level :: new ( middle_bottom_layer, false , true ) ; // Closed
358+ let bottom_level = Level :: new ( bottom_layer, false , false ) ;
359+
360+ let levels = vec ! [
361+ top_level,
362+ middle_top_level,
363+ middle_bottom_level,
364+ bottom_level,
365+ ] ;
366+
367+ let permutations = graph. generate_illegal_import_permutations_for_layers ( & levels) ;
368+
369+ assert_eq ! (
370+ permutations,
371+ FxHashSet :: from_iter( [
372+ ( bottom_module, middle_bottom_module) ,
373+ ( bottom_module, middle_top_module) ,
374+ ( bottom_module, top_module) ,
375+ ( middle_bottom_module, middle_top_module) ,
376+ ( middle_bottom_module, top_module) ,
377+ ( middle_top_module, top_module) ,
378+ // Permutations due to closed middle layers.
379+ ( top_module, middle_bottom_module) ,
380+ ( top_module, bottom_module) ,
381+ ( middle_top_module, bottom_module) ,
382+ ] )
383+ ) ;
384+ }
332385}
0 commit comments