use naga::valid::{Capabilities, ValidationFlags, Validator};
const SHADERS: &[(&str, &str)] = &[
("shaders/edge.wgsl", include_str!("../src/shaders/edge.wgsl")),
("shaders/node.wgsl", include_str!("../src/shaders/node.wgsl")),
("shaders/halo.wgsl", include_str!("../src/shaders/halo.wgsl")),
];
#[test]
fn every_shader_parses_and_validates() {
for (path, source) in SHADERS {
let module = naga::front::wgsl::parse_str(source)
.unwrap_or_else(|e| panic!("{path} failed to parse:\n{}", e.emit_to_string(source)));
Validator::new(ValidationFlags::all(), Capabilities::empty())
.validate(&module)
.unwrap_or_else(|e| panic!("{path} failed to validate: {e:?}"));
}
}
#[test]
fn edge_and_node_use_the_same_aa_pad() {
let pad_of = |src: &str| {
src.lines()
.find_map(|l| l.trim().strip_prefix("const AA_PAD: f32 = ")?.strip_suffix(';').map(str::to_owned))
.expect("AA_PAD is declared as a top-level const")
};
assert_eq!(
pad_of(include_str!("../src/shaders/edge.wgsl")),
pad_of(include_str!("../src/shaders/node.wgsl")),
);
}