shaderc/src/compiler/backend/tests.rs

52 lines
1.4 KiB

#[test]
fn test_emit() {
use crate::compiler::backend::*;
use crate::compiler::*;
use crate::parser::*;
let src = "
(module Shader Logical GLSL450)
(import :std GLSL.std.450)
(bind (frag-coord:*v4f32i) (BuiltIn FragCoord))
(bind (out-color:*v4f32o) (Location 0))
(dec frag-coord:*v4f32i Input)
(dec out-color:*v4f32o Output)
(entry main Fragment OriginUpperLeft (:frag-coord :out-color))
(fun (main) :void
(store-ptr (out-color)
(v4f32i (/ (.xy (load-ptr frag-coord))
(v2f32 1920.0 1080.0))
1.0
1.0)))
";
let ast = parse(tokenize(src));
let module = meta_compile(ast.unwrap()).unwrap();
let res = spirv_meta(module);
println!("{}", res);
}
#[test]
fn test_type_parse() {
use crate::compiler::backend::*;
use Type::*;
assert_eq!(
parse_type(&"*v4f32i".to_string()),
Pointer(
Box::new(Vector(Box::new(Float(32)), 4)),
StorageClass::Input
)
);
assert_eq!(
parse_type(&"*v4f32o".to_string()),
Pointer(
Box::new(Vector(Box::new(Float(32)), 4)),
StorageClass::Output
)
);
assert_eq!(
parse_type(&"v2f32".to_string()),
Vector(Box::new(Float(32)), 2)
);
assert_eq!(parse_type(&"f32".to_string()), Float(32));
assert_eq!(parse_type(&"s32".to_string()), Int(32));
}