pub const VERTEX_COLOR_2D: &str = include_str!("../shaders/vertex_color_2d.slang");
pub const TRIANGLE: &str = include_str!("../shaders/triangle.slang");
pub const DIGITAL_CLOCK: &str = include_str!("../shaders/digital_clock.slang");
pub const PLASMA: &str = include_str!("../shaders/plasma.slang");
pub const GRADIENT: &str = include_str!("../shaders/gradient.slang");
pub const MANDELBROT: &str = include_str!("../shaders/mandelbrot.slang");
pub const TUNNEL: &str = include_str!("../shaders/tunnel.slang");
pub const METABALLS: &str = include_str!("../shaders/metaballs.slang");
pub const CHECKERBOARD: &str = include_str!("../shaders/checkerboard.slang");
pub const STARFIELD: &str = include_str!("../shaders/starfield.slang");
pub const PARTICLES: &str = include_str!("../shaders/particles.slang");
pub const SPINNING_CUBE: &str = include_str!("../shaders/spinning_cube.slang");
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_all_shaders_non_empty() {
assert!(!VERTEX_COLOR_2D.is_empty(), "VERTEX_COLOR_2D shader is empty");
assert!(!TRIANGLE.is_empty(), "TRIANGLE shader is empty");
assert!(!DIGITAL_CLOCK.is_empty(), "DIGITAL_CLOCK shader is empty");
assert!(!PLASMA.is_empty(), "PLASMA shader is empty");
assert!(!GRADIENT.is_empty(), "GRADIENT shader is empty");
assert!(!MANDELBROT.is_empty(), "MANDELBROT shader is empty");
assert!(!TUNNEL.is_empty(), "TUNNEL shader is empty");
assert!(!METABALLS.is_empty(), "METABALLS shader is empty");
assert!(!CHECKERBOARD.is_empty(), "CHECKERBOARD shader is empty");
assert!(!STARFIELD.is_empty(), "STARFIELD shader is empty");
assert!(!PARTICLES.is_empty(), "PARTICLES shader is empty");
assert!(!SPINNING_CUBE.is_empty(), "SPINNING_CUBE shader is empty");
}
#[test]
fn test_shaders_have_entry_points() {
let shaders = [
("VERTEX_COLOR_2D", VERTEX_COLOR_2D),
("TRIANGLE", TRIANGLE),
("DIGITAL_CLOCK", DIGITAL_CLOCK),
("PLASMA", PLASMA),
("GRADIENT", GRADIENT),
("MANDELBROT", MANDELBROT),
("TUNNEL", TUNNEL),
("METABALLS", METABALLS),
("CHECKERBOARD", CHECKERBOARD),
("STARFIELD", STARFIELD),
("PARTICLES", PARTICLES),
("SPINNING_CUBE", SPINNING_CUBE),
];
for (name, source) in shaders {
assert!(
source.contains("[shader(\"vertex\")]"),
"{} missing vertex shader entry point", name
);
assert!(
source.contains("[shader(\"fragment\")]"),
"{} missing fragment shader entry point", name
);
}
}
#[test]
fn test_shaders_have_main_functions() {
let shaders = [
("VERTEX_COLOR_2D", VERTEX_COLOR_2D),
("TRIANGLE", TRIANGLE),
("PLASMA", PLASMA),
];
for (name, source) in shaders {
assert!(
source.contains("vs_main"),
"{} missing vs_main function", name
);
assert!(
source.contains("fs_main"),
"{} missing fs_main function", name
);
}
}
}