52 lines
1.4 KiB
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));
|
|
}
|