From b723ff2d068d7c51aacd642993d9fa0fd27a0c29 Mon Sep 17 00:00:00 2001 From: sofia Date: Wed, 23 Jul 2025 15:17:23 +0300 Subject: [PATCH] Upodate e2e tests --- examples/test.reid | 7 --- graphics.reid | 153 --------------------------------------------- reid/tests/e2e.rs | 103 +++++++++++++++--------------- 3 files changed, 54 insertions(+), 209 deletions(-) delete mode 100644 examples/test.reid delete mode 100644 graphics.reid diff --git a/examples/test.reid b/examples/test.reid deleted file mode 100644 index 6120537..0000000 --- a/examples/test.reid +++ /dev/null @@ -1,7 +0,0 @@ -fn foo() -> f32 { return 1.0; } - -fn main() -> u8 { - let mut a = 0; - a = (foo() * 1.0) as u8; - return a; -} \ No newline at end of file diff --git a/graphics.reid b/graphics.reid deleted file mode 100644 index cf115b9..0000000 --- a/graphics.reid +++ /dev/null @@ -1,153 +0,0 @@ -struct StringBuffer { - buffer: [char; 64], -} - -struct SDL_Thing {} // TODO: replace with proper dummy structs now that we can cast -struct SDL_FRect { x: f32, y: f32, w: f32, h: f32 } -struct SDL_Rect { x: i32, y: i32, w: i32, h: i32 } -extern fn SDL_malloc(size: u64) -> *SDL_Thing; -extern fn SDL_Init(flags: u32) -> bool; -extern fn SDL_Quit(); -extern fn SDL_CreateWindowAndRenderer(title: *char, width: i32, height: i32, flags: i32, - window_out: &mut *SDL_Thing, renderer_out: &mut *SDL_Thing) -> bool; -extern fn SDL_Delay(ms: u32); -extern fn SDL_SetRenderDrawColor(renderer: *SDL_Thing, r: u8, g: u8, b: u8, a: u8); -extern fn SDL_RenderClear(renderer: *SDL_Thing); -extern fn SDL_RenderPresent(renderer: *SDL_Thing); -extern fn SDL_HasEvent(event_type: u32) -> bool; -extern fn SDL_PumpEvents(); -extern fn SDL_FlushEvents(min_type: u32, max_type: u32); -extern fn SDL_GetTicks() -> u64; -extern fn SDL_snprintf(text: &mut StringBuffer, maxlen: u64, fmt: *char, var: u64) -> i32; -extern fn SDL_SetWindowTitle(window: *SDL_Thing, title: &StringBuffer) -> bool; -extern fn SDL_CreateTexture(renderer: *SDL_Thing, - pixel_format: u32, texture_access: u32, width: u32, height: u32) -> *SDL_Thing; -extern fn SDL_RenderTexture(renderer: *SDL_Thing, - texture: *SDL_Thing, srcfrect: &SDL_FRect, dstfrect: &SDL_FRect) -> bool; -extern fn SDL_UpdateTexture(texture: *SDL_Thing, rect: &SDL_Rect, pixels: *u8, pitch: u32) -> bool; -extern fn SDL_Log(fmt: *char, string_var: *char); -extern fn SDL_GetError() -> *char; -extern fn SDL_GetWindowSize(window: *SDL_Thing, w: &mut i32, h: &mut i32) -> bool; - -struct GameState { - renderer: *SDL_Thing, - window: *SDL_Thing, - render_texture: *SDL_Thing, - frame_counter: u64, - pixels: *u8, - pixels_w: u32, - pixels_h: u32, -} - -fn main() -> i32 { - let SDL_INIT_VIDEO = 32; - let SDL_WINDOW_RESIZABLE = 32; - let SDL_PIXELFORMAT_RGBA8888 = 373694468; - let SDL_PIXELFORMAT_ABGR8888 = 376840196; - let SDL_TEXTUREACCESS_STREAMING = 1; - - let init_success = SDL_Init(SDL_INIT_VIDEO); - if init_success == false { - SDL_Log("SDL init failed: %s", SDL_GetError()); - return 1; - } - - let mut window = placeholder_ptr(); - let mut renderer = placeholder_ptr(); - let gfx_init_success = SDL_CreateWindowAndRenderer( - "graphical reid program", 640, 480, SDL_WINDOW_RESIZABLE, - &mut window, &mut renderer - ); - if gfx_init_success == false { - SDL_Log("SDL renderer and window creation failed: %s", SDL_GetError()); - return 1; - } - - let width = 256; - let height = 256; - let render_texture = SDL_CreateTexture(renderer, - SDL_PIXELFORMAT_ABGR8888, SDL_TEXTUREACCESS_STREAMING, width, height); - - let pixels_len = (width * height * 4) as u64; - let pixels = SDL_malloc(pixels_len) as *u8; - let mut game_state = GameState { - renderer: renderer, - window: window, - render_texture: render_texture, - frame_counter: 0, - pixels: pixels, - pixels_w: width, - pixels_h: height, - }; - - frame_loop(game_state); - - // TODO: maybe clean up resources here but also it's a bit of a waste of energy - SDL_Quit(); - return 0; -} - -fn frame_loop(game_state: GameState) -> GameState { - SDL_PumpEvents(); - if SDL_HasEvent(256) { // SDL_EVENT_QUIT - return game_state; - } - SDL_FlushEvents(0, 4294967296); - - let mut screen_width = 0; - let mut screen_height = 0; - SDL_GetWindowSize(game_state.window, &mut screen_width, &mut screen_height); - - let renderer = game_state.renderer; - SDL_SetRenderDrawColor(renderer, 0, 50, 90, 255); - SDL_RenderClear(renderer); - - let w = game_state.pixels_w; - let h = game_state.pixels_h; - draw_pixels(game_state.pixels, 0, 0, w, h, game_state.frame_counter); - let texture_area = SDL_Rect { x: 0, y: 0, w: w as i32, h: h as i32 }; - if SDL_UpdateTexture(game_state.render_texture, &texture_area, game_state.pixels, 4 * w) == false { - SDL_Log("UpdateTexture error: %s", SDL_GetError()); - } - let src = SDL_FRect { x: 0.0, y: 0.0, w: w as f32, h: h as f32 }; - let dst = SDL_FRect { x: 0.0, y: 0.0, w: screen_width as f32, h: screen_height as f32 }; - if SDL_RenderTexture(renderer, game_state.render_texture, &src, &dst) == false { - SDL_Log("RenderTexture error: %s", SDL_GetError()); - } - - SDL_RenderPresent(renderer); - SDL_Delay(16); - - game_state.frame_counter = game_state.frame_counter + 1; - let mut s = StringBuffer {}; - SDL_snprintf(&mut s, 64, "graphical reid program frame %u", game_state.frame_counter); - SDL_SetWindowTitle(game_state.window, &s); - - return frame_loop(game_state); -} - -fn placeholder_ptr() -> *SDL_Thing { - return SDL_malloc(1); -} - -fn draw_pixels(pixels: *u8, x: u32, y: u32, w: u32, h: u32, frame_counter: u64) -> i32 { - if y >= h { - return 0; - } - let index = (x + y * w) * 4; - - pixels[index + 0] = x as u8; - pixels[index + 1] = y as u8; - pixels[index + 2] = frame_counter as u8; - pixels[index + 3] = 255; - - let mut new_x = x + 1; - let mut new_y = y; - if new_x >= w { - new_x = 0; - new_y = y + 1; - } - - draw_pixels(pixels, new_x, new_y, w, h, frame_counter); - return 0; -} diff --git a/reid/tests/e2e.rs b/reid/tests/e2e.rs index f33001f..840208e 100644 --- a/reid/tests/e2e.rs +++ b/reid/tests/e2e.rs @@ -18,62 +18,67 @@ fn test(source: &str, name: &str) { )); } -pub static ARRAY: &str = include_str!("../../examples/array.reid"); -pub static FIBONACCI: &str = include_str!("../../examples/fibonacci.reid"); -pub static HELLO_WORLD: &str = include_str!("../../examples/hello_world.reid"); -pub static MUTABLE: &str = include_str!("../../examples/mutable.reid"); -pub static STRINGS: &str = include_str!("../../examples/strings.reid"); -pub static STRUCTS: &str = include_str!("../../examples/struct.reid"); -pub static ARRAY_STRUCTS: &str = include_str!("../../examples/array_structs.reid"); -pub static BORROW: &str = include_str!("../../examples/borrow.reid"); -pub static ARITHMETIC: &str = include_str!("../../examples/arithmetic.reid"); - +#[test] +fn arithmetic_compiles_well() { + test(include_str!("../../examples/arithmetic.reid"), "test"); +} #[test] fn array_compiles_well() { - test(ARRAY, "array"); + test(include_str!("../../examples/array.reid"), "test"); } - -#[test] -fn fibonacci_compiles_well() { - test(FIBONACCI, "fibonacci"); -} - -#[test] -fn hello_world_compiles_well() { - test(HELLO_WORLD, "hello_world"); -} - -#[test] -fn mutable_compiles_well() { - test(MUTABLE, "mutable"); -} - -#[test] -fn strings_compiles_well() { - test(STRINGS, "strings"); -} - -#[test] -fn arrays_compiles_well() { - test(ARRAY, "array"); -} - -#[test] -fn struct_compiles_well() { - test(STRUCTS, "struct"); -} - #[test] fn array_structs_compiles_well() { - test(ARRAY_STRUCTS, "array_structs"); + test(include_str!("../../examples/array_structs.reid"), "test"); } - #[test] -fn borrow_structs_compiles_well() { - test(BORROW, "borrow"); +fn borrow_compiles_well() { + test(include_str!("../../examples/borrow.reid"), "test"); } - #[test] -fn arithmetic_structs_compiles_well() { - test(ARITHMETIC, "arithmetic"); +fn borrow_hard_compiles_well() { + test(include_str!("../../examples/borrow_hard.reid"), "test"); +} +#[test] +fn cast_compiles_well() { + test(include_str!("../../examples/cast.reid"), "test"); +} +#[test] +fn char_compiles_well() { + test(include_str!("../../examples/char.reid"), "test"); +} +#[test] +fn div_mod_compiles_well() { + test(include_str!("../../examples/div_mod.reid"), "test"); +} +#[test] +fn fibonacci_compiles_well() { + test(include_str!("../../examples/fibonacci.reid"), "test"); +} +#[test] +fn float_compiles_well() { + test(include_str!("../../examples/float.reid"), "test"); +} +#[test] +fn hello_world_compiles_well() { + test(include_str!("../../examples/hello_world.reid"), "test"); +} +#[test] +fn mutable_compiles_well() { + test(include_str!("../../examples/mutable.reid"), "test"); +} +#[test] +fn ptr_compiles_well() { + test(include_str!("../../examples/ptr.reid"), "test"); +} +#[test] +fn std_test_compiles_well() { + test(include_str!("../../examples/std_test.reid"), "test"); +} +#[test] +fn strings_compiles_well() { + test(include_str!("../../examples/strings.reid"), "test"); +} +#[test] +fn struct_compiles_well() { + test(include_str!("../../examples/struct.reid"), "test"); }