Skip to content

Commit b716fff

Browse files
committed
Add test case for two closed layers
1 parent 10d41fb commit b716fff

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

rust/src/graph/higher_order_queries.rs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)