clifford_codegen/spec/
bundled.rs1pub const EUCLIDEAN2: &str = include_str!("../../algebras/euclidean2.toml");
7
8pub const EUCLIDEAN3: &str = include_str!("../../algebras/euclidean3.toml");
10
11#[cfg(test)]
12mod tests {
13 use super::*;
14 use crate::spec::parse_spec;
15
16 #[test]
17 fn parse_euclidean2_spec() {
18 let spec = parse_spec(EUCLIDEAN2).unwrap();
19
20 assert_eq!(spec.name, "euclidean2");
21 assert_eq!(spec.module_path, Some("euclidean::dim2".to_string()));
22 assert_eq!(spec.signature.p, 2);
23 assert_eq!(spec.signature.q, 0);
24 assert_eq!(spec.signature.r, 0);
25 assert_eq!(spec.signature.dim(), 2);
26 assert_eq!(spec.signature.num_blades(), 4);
27
28 assert!(spec.types.iter().any(|t| t.name == "Scalar"));
30 assert!(spec.types.iter().any(|t| t.name == "Vector"));
31 assert!(spec.types.iter().any(|t| t.name == "Bivector"));
32 assert!(spec.types.iter().any(|t| t.name == "Rotor"));
33
34 let rotor = spec.types.iter().find(|t| t.name == "Rotor").unwrap();
36 assert_eq!(rotor.grades, vec![0, 2]);
37 assert_eq!(rotor.fields.len(), 2);
38 }
39
40 #[test]
41 fn parse_euclidean3_spec() {
42 let spec = parse_spec(EUCLIDEAN3).unwrap();
43
44 assert_eq!(spec.name, "euclidean3");
45 assert_eq!(spec.module_path, Some("euclidean::dim3".to_string()));
46 assert_eq!(spec.signature.p, 3);
47 assert_eq!(spec.signature.q, 0);
48 assert_eq!(spec.signature.r, 0);
49 assert_eq!(spec.signature.dim(), 3);
50 assert_eq!(spec.signature.num_blades(), 8);
51
52 assert!(spec.types.iter().any(|t| t.name == "Scalar"));
54 assert!(spec.types.iter().any(|t| t.name == "Vector"));
55 assert!(spec.types.iter().any(|t| t.name == "Bivector"));
56 assert!(spec.types.iter().any(|t| t.name == "Trivector"));
57 assert!(spec.types.iter().any(|t| t.name == "Rotor"));
58
59 let vector = spec.types.iter().find(|t| t.name == "Vector").unwrap();
61 assert_eq!(vector.grades, vec![1]);
62 assert_eq!(vector.fields.len(), 3);
63
64 let bivector = spec.types.iter().find(|t| t.name == "Bivector").unwrap();
66 assert_eq!(bivector.grades, vec![2]);
67 assert_eq!(bivector.fields.len(), 3);
68
69 let rotor = spec.types.iter().find(|t| t.name == "Rotor").unwrap();
71 assert_eq!(rotor.grades, vec![0, 2]);
72 assert_eq!(rotor.fields.len(), 4);
73 }
74}