#[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)); }