mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
parent
c6fc42be82
commit
b8a12b582d
29
common/src/comp/skillset/test.rs
Normal file
29
common/src/comp/skillset/test.rs
Normal file
@ -0,0 +1,29 @@
|
||||
use super::*;
|
||||
use crate::comp::{skillset::SkillPrerequisitesMap, Skill};
|
||||
use hashbrown::HashMap;
|
||||
|
||||
#[cfg(test)]
|
||||
use petgraph::{algo::is_cyclic_undirected, graph::UnGraph};
|
||||
|
||||
#[test]
|
||||
fn check_cyclic_skill_deps() {
|
||||
let skill_prereqs =
|
||||
SkillPrerequisitesMap::load_expect_cloned("common.skill_trees.skill_prerequisites").0;
|
||||
let mut graph = UnGraph::new_undirected();
|
||||
let mut nodes = HashMap::<Skill, _>::new();
|
||||
let mut add_node = |graph: &mut UnGraph<Skill, _>, node: Skill| {
|
||||
*nodes
|
||||
.entry(node.clone())
|
||||
.or_insert_with(|| graph.add_node(node.clone()))
|
||||
};
|
||||
|
||||
for (skill, prereqs) in skill_prereqs.iter() {
|
||||
let skill_node = add_node(&mut graph, *skill);
|
||||
for (prereq, _) in prereqs.iter() {
|
||||
let prereq_node = add_node(&mut graph, *prereq);
|
||||
graph.add_edge(prereq_node, skill_node, ());
|
||||
}
|
||||
}
|
||||
|
||||
assert!(!is_cyclic_undirected(&graph));
|
||||
}
|
Loading…
Reference in New Issue
Block a user