goud_engine/core/providers/impls/
null_window.rs1use crate::core::error::GoudResult;
4use crate::core::providers::window::WindowProvider;
5
6pub struct NullWindowProvider {
9 should_close: bool,
10}
11
12impl NullWindowProvider {
13 pub fn new() -> Self {
15 Self {
16 should_close: false,
17 }
18 }
19}
20
21impl Default for NullWindowProvider {
22 fn default() -> Self {
23 Self::new()
24 }
25}
26
27impl WindowProvider for NullWindowProvider {
28 fn name(&self) -> &str {
29 "null"
30 }
31
32 fn init(&mut self) -> GoudResult<()> {
33 Ok(())
34 }
35
36 fn shutdown(&mut self) {}
37
38 fn should_close(&self) -> bool {
39 self.should_close
40 }
41
42 fn set_should_close(&mut self, value: bool) {
43 self.should_close = value;
44 }
45
46 fn poll_events(&mut self) {}
47
48 fn swap_buffers(&mut self) {}
49
50 fn get_size(&self) -> (u32, u32) {
51 (0, 0)
52 }
53
54 fn get_framebuffer_size(&self) -> (u32, u32) {
55 (0, 0)
56 }
57}
58
59#[cfg(test)]
60mod tests {
61 use super::*;
62
63 #[test]
64 fn test_null_window_construction() {
65 let provider = NullWindowProvider::new();
66 assert_eq!(provider.name(), "null");
67 }
68
69 #[test]
70 fn test_null_window_default() {
71 let provider = NullWindowProvider::default();
72 assert_eq!(provider.name(), "null");
73 }
74
75 #[test]
76 fn test_null_window_init_shutdown() {
77 let mut provider = NullWindowProvider::new();
78 assert!(provider.init().is_ok());
79 provider.shutdown();
80 }
81
82 #[test]
83 fn test_null_window_should_close() {
84 let mut provider = NullWindowProvider::new();
85 assert!(!provider.should_close());
86 provider.set_should_close(true);
87 assert!(provider.should_close());
88 }
89
90 #[test]
91 fn test_null_window_size() {
92 let provider = NullWindowProvider::new();
93 assert_eq!(provider.get_size(), (0, 0));
94 assert_eq!(provider.get_framebuffer_size(), (0, 0));
95 }
96
97 #[test]
98 fn test_null_window_poll_and_swap() {
99 let mut provider = NullWindowProvider::new();
100 provider.poll_events();
101 provider.swap_buffers();
102 assert!(!provider.should_close());
104 }
105}