use crate::{Braid, InvLink, Link, PDCodeX};
impl Link {
pub fn test_data(name: &str) -> Link {
let pd: &[PDCodeX] = match name {
"3_1" => &[[1,5,2,4],[3,1,4,6],[5,3,6,2]],
"4_1" => &[[4,2,5,1],[8,6,1,5],[6,3,7,4],[2,7,3,8]],
"5_1" => &[[2,8,3,7],[4,10,5,9],[6,2,7,1],[8,4,9,3],[10,6,1,5]],
"5_2" => &[[1,5,2,4],[3,9,4,8],[5,1,6,10],[7,3,8,2],[9,7,10,6]],
"6_1" => &[[1,7,2,6],[3,10,4,11],[5,3,6,2],[7,1,8,12],[9,4,10,5],[11,9,12,8]],
"6_2" => &[[1,8,2,9],[3,11,4,10],[5,1,6,12],[7,2,8,3],[9,7,10,6],[11,5,12,4]],
"6_3" => &[[4,2,5,1],[8,4,9,3],[12,9,1,10],[10,5,11,6],[6,11,7,12],[2,8,3,7]],
"7_1" => &[[1,9,2,8],[3,11,4,10],[5,13,6,12],[7,1,8,14],[9,3,10,2],[11,5,12,4],[13,7,14,6]],
"7_2" => &[[2,10,3,9],[4,14,5,13],[6,12,7,11],[8,2,9,1],[10,8,11,7],[12,6,13,5],[14,4,1,3]],
"7_3" => &[[1,9,2,8],[3,11,4,10],[5,1,6,14],[7,13,8,12],[9,3,10,2],[11,5,12,4],[13,7,14,6]],
"8_19" => &[[2,14,3,13],[5,11,6,10],[7,15,8,14],[9,5,10,4],[11,7,12,6],[12,2,13,1],[15,9,16,8],[16,4,1,3]],
"14n_19265" => &[[1,19,2,18],[19,1,20,28],[20,13,21,14],[12,17,13,18],[16,21,17,22],[5,15,6,14],[15,5,16,4],[6,27,7,28],[2,7,3,8],[26,3,27,4],[25,23,26,22],[11,9,12,8],[23,10,24,11],[9,24,10,25]],
"18nh_05566876" => &[[1,30,2,31],[3,27,4,26],[5,12,6,13],[7,29,8,28],[9,35,10,34],[11,4,12,5],[13,8,14,9],[14,36,15,35],[17,24,18,25],[18,32,19,31],[21,3,22,2],[23,16,24,17],[25,22,26,23],[27,7,28,6],[29,21,30,20],[32,16,33,15],[33,11,34,10],[36,20,1,19]],
"18nh_37144251" => &[[1,12,2,13],[4,34,5,33],[6,29,7,30],[9,17,10,16],[11,9,12,8],[14,31,15,32],[15,2,16,3],[17,11,18,10],[18,23,19,24],[20,28,21,27],[22,35,23,36],[24,4,25,3],[26,5,27,6],[28,22,29,21],[30,13,31,14],[32,25,33,26],[34,19,35,20],[36,8,1,7]],
"L2a1" => &[[4,1,3,2],[2,3,1,4]],
"L4a1" => &[[6,1,7,2],[8,3,5,4],[2,5,3,6],[4,7,1,8]],
"unknot_l_twist" => &[[1,1,2,2]],
"unknot_l_twist2" => &[[1,1,2,4],[3,3,4,2]],
"unknot_r_twist" => &[[1,2,2,1]],
"unknot_lr_twist" => &[[1,1,2,4],[2,3,3,4]],
"unlink2" => &[[1,4,2,3],[2,4,1,3]],
"unlink2_r2" => &[[1,3,2,4],[3,2,4,1]],
_ => panic!("no test data for `{name}`"),
};
Link::from_pd_code(pd.iter().copied())
}
}
impl Braid {
pub fn test_data(name: &str) -> Braid {
let word: &[i32] = match name {
"3_1" => &[1, 1, 1],
"4_1" => &[1, -2, 1, -2],
"5_1" => &[1, 1, 1, 1, 1],
"5_2" => &[1, 1, 1, 2, -1, 2],
"6_1" => &[1, 1, 2, -1, -3, 2, -3],
"6_2" => &[1, 1, 1, -2, 1, -2],
"6_3" => &[1, 1, -2, 1, -2, -2],
_ => panic!("no test data for `{name}`"),
};
Braid::from_iter(word.iter().copied())
}
}
impl InvLink {
pub fn test_data(name: &str) -> InvLink {
let pd: &[PDCodeX] = match name {
"3_1" => &[[1,5,2,4],[3,1,4,6],[5,3,6,2]],
"4_1" => &[[2,7,3,8],[4,2,5,1],[6,3,7,4],[8,6,1,5]],
"6_3" => &[[3,13,4,12],[6,9,7,10],[8,1,9,2],[10,5,11,6],[11,3,12,2],[13,5,14,4],[14,7,1,8]],
"4_1a" => &[[1,5,8,6],[7,4,6,3],[5,1,4,2],[3,8,2,7]],
"4_1b" => &[[8,2,7,3],[6,1,5,8],[4,6,3,7],[2,5,1,4]],
"5_1" => &[[1,9,2,8],[4,14,5,13],[5,3,6,2],[6,12,7,11],[9,1,10,16],[10,8,11,7],[14,4,15,3],[15,13,16,12]],
"5_2a" => &[[3,11,4,10],[5,9,6,8],[6,2,7,1],[9,5,10,4],[11,3,12,2],[12,8,1,7]],
"5_2b" => &[[1,7,2,6],[4,10,5,9],[5,3,6,2],[7,1,8,12],[10,4,11,3],[11,9,12,8]],
"6_1a" => &[[12,2,11,3],[10,4,9,5],[8,1,7,12],[6,8,5,9],[4,10,3,11],[2,7,1,6]],
"6_1b" => &[[12,8,11,9],[10,5,9,4],[8,12,7,1],[6,2,5,3],[4,11,3,10],[2,6,1,7]],
"6_2a" => &[[1,9,2,8],[2,16,3,15],[5,12,6,13],[7,5,8,4],[9,1,10,16],[11,6,12,7],[13,11,14,10],[14,4,15,3]],
"6_2b" => &[[2,16,3,15],[6,12,7,11],[7,5,8,4],[8,1,9,2],[12,6,13,5],[13,11,14,10],[14,4,15,3],[16,9,1,10]],
"6_3a" => &[[14,5,13,4],[13,16,12,15],[11,7,10,8],[10,16,9,1],[7,11,6,12],[4,15,3,14],[3,6,2,5],[2,8,1,9]],
"6_3b" => &[[1,10,16,9],[16,12,15,13],[15,3,14,4],[12,7,11,6],[9,2,8,1],[8,11,7,10],[6,2,5,3],[5,13,4,14]],
"7_1" => &[[2,10,3,9],[3,23,4,22],[7,19,8,18],[8,6,9,5],[11,15,12,14],[12,2,13,1],[15,11,16,10],[16,24,17,23],[19,7,20,6],[20,18,21,17],[21,5,22,4],[24,14,1,13]],
"7_2a" => &[[1,9,16,10],[16,2,15,3],[14,4,13,5],[12,6,11,7],[9,1,8,2],[8,10,7,11],[6,12,5,13],[4,14,3,15]],
"7_2b" => &[[1,9,16,10],[15,11,14,12],[14,4,13,5],[11,15,10,16],[9,1,8,2],[7,3,6,4],[6,12,5,13],[3,7,2,8]],
"7_3a" => &[[19,3,18,4],[18,12,17,13],[17,5,16,6],[15,7,14,8],[12,20,11,1],[10,4,9,5],[9,13,8,14],[7,15,6,16],[3,19,2,20],[2,10,1,11]],
"7_3b" => &[[2,10,3,9],[3,19,4,18],[7,15,8,14],[8,6,9,5],[10,2,11,1],[12,20,13,19],[15,7,16,6],[16,14,17,13],[17,5,18,4],[20,12,1,11]],
"7_4a" => &[[16,10,15,11],[15,3,14,4],[13,5,12,6],[10,16,9,1],[8,2,7,3],[7,11,6,12],[5,13,4,14],[2,8,1,9]],
"7_4b" => &[[1,5,14,6],[13,7,12,8],[11,1,10,2],[9,3,8,4],[7,13,6,14],[5,11,4,12],[3,9,2,10]],
"7_5a" => &[[1,11,20,12],[20,2,19,3],[17,13,16,14],[16,6,15,7],[13,17,12,18],[11,1,10,2],[9,5,8,6],[8,14,7,15],[5,9,4,10],[4,18,3,19]],
"7_5b" => &[[1,11,2,10],[4,18,5,17],[5,3,6,2],[6,16,7,15],[8,14,9,13],[11,1,12,20],[12,10,13,9],[14,8,15,7],[18,4,19,3],[19,17,20,16]],
"7_6a" => &[[15,3,14,4],[13,5,12,6],[11,14,10,13],[10,16,9,1],[7,11,6,12],[5,8,4,7],[3,15,2,16],[2,8,1,9]],
"7_6b" => &[[16,3,15,2],[14,10,13,11],[13,5,12,6],[10,16,9,1],[8,4,7,5],[7,11,6,12],[4,15,3,14],[2,8,1,9]],
"7_7a" => &[[1,10,16,9],[15,3,14,4],[14,10,13,11],[12,7,11,6],[9,2,8,1],[8,4,7,5],[6,13,5,12],[3,15,2,16]],
"7_7b" => &[[14,7,13,6],[12,8,11,9],[10,3,9,2],[8,4,7,5],[6,1,5,14],[4,12,3,13],[2,11,1,10]],
"8_21a" => &[[1,12,20,11],[20,16,19,17],[19,3,18,4],[16,12,15,13],[15,7,14,8],[11,2,10,1],[10,6,9,7],[9,13,8,14],[6,2,5,3],[5,17,4,18]],
"8_21b" => &[[1,17,20,18],[20,12,19,13],[16,7,15,6],[15,11,14,12],[14,18,13,19],[11,7,10,8],[10,2,9,3],[6,17,5,16],[5,1,4,2],[4,8,3,9]],
"9_46a" => &[[20,13,19,12],[19,3,18,4],[16,1,15,20],[15,7,14,8],[12,17,11,16],[10,3,9,2],[9,13,8,14],[6,11,5,10],[5,17,4,18],[2,7,1,6]],
"9_46b" => &[[3,9,4,8],[4,17,5,18],[6,11,7,12],[9,3,10,2],[10,15,11,16],[13,19,14,18],[14,7,15,8],[16,1,17,2],[19,13,20,12],[20,5,1,6]],
"unknot_r_twist" => &[[1,2,2,1]],
"unknot_l_twist" => &[[1,1,2,2]],
"unknot_l_twist2" => &[[1,1,2,4],[3,3,4,2]],
_ => panic!("no test data for `{name}`"),
};
InvLink::from_symmetric_pd_code(pd.iter().copied())
}
}