use winrt_xaml::window::Window;
use winrt_xaml::error::Error;
#[test]
fn test_window_creation() {
let window = Window::new();
assert!(window.is_ok());
}
#[test]
fn test_window_title() {
let window = Window::new().unwrap();
assert_eq!(window.title(), "Window");
let _ = window.set_title("Test Window");
assert_eq!(window.title(), "Test Window");
}
#[test]
fn test_window_size() {
let window = Window::new().unwrap();
assert_eq!(window.size(), (800, 600));
window.set_size(1024, 768);
assert_eq!(window.size(), (1024, 768));
}
#[test]
fn test_window_position() {
let window = Window::new().unwrap();
let default_pos = window.position();
assert!(default_pos.0 != 0 || default_pos.1 != 0 || default_pos == (0, 0));
let _ = window.set_position(200, 300);
assert_eq!(window.position(), (200, 300));
}
#[test]
fn test_window_visibility() {
let window = Window::new().unwrap();
assert!(!window.is_visible());
}
#[test]
fn test_window_setter_methods() {
let window = Window::new().unwrap();
window.set_title("Builder Window");
window.set_size(640, 480);
window.set_position(50, 50);
assert_eq!(window.title(), "Builder Window");
assert_eq!(window.size(), (640, 480));
assert_eq!(window.position(), (50, 50));
}
#[test]
fn test_window_setter_chaining() {
let window = Window::new().unwrap();
window.set_title("First");
window.set_title("Second"); window.set_size(100, 100);
window.set_size(200, 200);
assert_eq!(window.title(), "Second");
assert_eq!(window.size(), (200, 200));
}
#[test]
fn test_window_clone() {
let window1 = Window::new().unwrap();
window1.set_title("Original");
let window2 = window1.clone();
assert_eq!(window2.title(), "Original");
window2.set_title("Modified");
assert_eq!(window1.title(), "Modified");
}
#[test]
fn test_window_state_sharing() {
let window1 = Window::new().unwrap();
let window2 = window1.clone();
window1.set_size(400, 300);
window1.set_position(10, 20);
assert_eq!(window2.size(), (400, 300));
assert_eq!(window2.position(), (10, 20));
}
#[test]
fn test_window_title_empty_string() {
let window = Window::new().unwrap();
window.set_title("");
assert_eq!(window.title(), "");
}
#[test]
fn test_window_title_unicode() {
let window = Window::new().unwrap();
window.set_title("Hello 世界 🌍");
assert_eq!(window.title(), "Hello 世界 🌍");
}
#[test]
fn test_window_size_zero() {
let window = Window::new().unwrap();
window.set_size(0, 0);
assert_eq!(window.size(), (0, 0));
}
#[test]
fn test_window_size_large() {
let window = Window::new().unwrap();
window.set_size(3840, 2160); assert_eq!(window.size(), (3840, 2160));
}
#[test]
fn test_window_position_negative() {
let window = Window::new().unwrap();
window.set_position(-100, -200);
assert_eq!(window.position(), (-100, -200));
}
#[test]
fn test_window_multiple_creation() {
let window1 = Window::new();
assert!(window1.is_ok());
let window2 = Window::new();
assert!(window2.is_ok());
let w1 = window1.unwrap();
let w2 = window2.unwrap();
w1.set_title("Window 1");
w2.set_title("Window 2");
assert_eq!(w1.title(), "Window 1");
assert_eq!(w2.title(), "Window 2");
}
#[test]
fn test_window_error_creation() {
let err = Error::window_creation("Test window error");
let msg = err.to_string();
assert!(msg.contains("Failed to create window") || msg.contains("Test window error"));
}
#[test]
fn test_window_api_exists() {
fn _check_new() {
fn _needs_result<T>(_: fn() -> Result<T, Error>) {}
_needs_result(Window::new);
}
fn _check_title() {
fn _needs_method(_: fn(&Window) -> String) {}
_needs_method(Window::title);
}
fn _check_set_title() {
fn _needs_method(_: &Window) {
}
}
fn _check_size() {
fn _needs_method(_: fn(&Window) -> (i32, i32)) {}
_needs_method(Window::size);
}
fn _check_set_size() {
let _ = Window::set_size;
}
fn _check_position() {
fn _needs_method(_: fn(&Window) -> (i32, i32)) {}
_needs_method(Window::position);
}
fn _check_set_position() {
let _ = Window::set_position;
}
fn _check_is_visible() {
fn _needs_method(_: fn(&Window) -> bool) {}
_needs_method(Window::is_visible);
}
}
#[test]
fn test_window_default_values() {
let window = Window::new().unwrap();
assert_eq!(window.title(), "Window");
assert_eq!(window.size(), (800, 600));
let _ = window.position();
assert!(!window.is_visible());
}
#[test]
fn test_window_partial_setters() {
let window = Window::new().unwrap();
let _ = window.set_title("Test");
assert_eq!(window.size(), (800, 600));
}