use html_view::ViewerOptions;
use std::path::PathBuf;
#[test]
fn test_builder_width() {
let result = ViewerOptions::new().width(800).show();
assert!(result.is_err());
}
#[test]
fn test_builder_individual_dimensions() {
let _builder = ViewerOptions::new();
let _with_width = ViewerOptions::new().width(800);
let _with_height = ViewerOptions::new().height(600);
let _with_x = ViewerOptions::new().x(100);
let _with_y = ViewerOptions::new().y(50);
}
#[test]
fn test_builder_size_chaining() {
let _opts1 = ViewerOptions::new().size(800, 600);
let _opts2 = ViewerOptions::new().width(800).height(600);
}
#[test]
fn test_builder_position_chaining() {
let _opts1 = ViewerOptions::new().position(100, 50);
let _opts2 = ViewerOptions::new().x(100).y(50);
}
#[test]
fn test_builder_working_dir() {
let dir = PathBuf::from("/tmp");
let _builder = ViewerOptions::new().working_dir(dir.clone());
}
#[test]
fn test_builder_allow_remote_content() {
let _builder = ViewerOptions::new().allow_remote_content();
}
#[test]
fn test_builder_allowed_domains() {
let domains = vec!["example.com".to_string(), "test.com".to_string()];
let _builder = ViewerOptions::new().allowed_domains(domains);
}
#[test]
fn test_builder_fixed_size() {
let _builder = ViewerOptions::new().fixed_size();
}
#[test]
fn test_builder_non_blocking() {
let _builder = ViewerOptions::new().non_blocking();
}
#[test]
fn test_builder_base_dir() {
let dir = PathBuf::from("/tmp");
let _builder = ViewerOptions::new().base_dir(dir.clone());
}
#[test]
fn test_builder_method_chaining() {
let _builder = ViewerOptions::new()
.width(800)
.height(600)
.x(100)
.y(50)
.title("Test")
.working_dir(PathBuf::from("/tmp"))
.allow_remote_content()
.fixed_size()
.non_blocking()
.devtools()
.timeout(30);
}
#[test]
fn test_builder_show_file() {
let path = PathBuf::from("/tmp/test.html");
let result = ViewerOptions::new().width(800).show_file(path);
assert!(result.is_err());
}
#[test]
fn test_builder_show_app_dir() {
let root = PathBuf::from("/tmp/app");
let result = ViewerOptions::new()
.width(800)
.show_app_dir(root, Some("index.html".to_string()));
assert!(result.is_err());
}
#[test]
fn test_builder_show_url() {
let url = url::Url::parse("https://example.com").unwrap();
let result = ViewerOptions::new().width(800).show_url(url);
assert!(result.is_err());
}
#[test]
fn test_builder_real_world_pattern_1() {
let result = ViewerOptions::new()
.width(640)
.height(480)
.title("My App")
.show_html("<h1>Hello</h1>");
assert!(result.is_err()); }
#[test]
fn test_builder_real_world_pattern_2() {
let result = ViewerOptions::new()
.non_blocking()
.devtools()
.timeout(5)
.show_html("<h1>Debug Window</h1>");
assert!(result.is_ok())
}
#[test]
fn test_builder_real_world_pattern_3() {
let result = ViewerOptions::new()
.transparent()
.no_decorations()
.always_on_top()
.fixed_size()
.width(400)
.height(300)
.show_html("<div style='background: rgba(255,255,255,0.9)'>Floating</div>");
assert!(result.is_err());
}
#[test]
fn test_builder_real_world_pattern_4() {
let url = url::Url::parse("https://example.com").unwrap();
let result = ViewerOptions::new()
.allowed_domains(vec!["example.com".to_string()])
.show_url(url);
assert!(result.is_err());
}
#[test]
fn test_builder_ergonomics_comparison() {
let mut opts_old = ViewerOptions::inline_html("<h1>Test</h1>");
opts_old.window.width = Some(800);
opts_old.window.height = Some(600);
opts_old.window.title = Some("Test".to_string());
opts_old.behaviour.enable_devtools = true;
let result_new = ViewerOptions::new()
.width(800)
.height(600)
.title("Test")
.devtools()
.show_html("<h1>Test</h1>");
assert!(result_new.is_err()); }
#[test]
fn test_builder_base_dir_with_inline_html() {
let dir = PathBuf::from("/tmp/assets");
let result = ViewerOptions::new()
.base_dir(dir.clone())
.show_html(r#"<img src="logo.png">"#);
assert!(result.is_err());
}
#[test]
fn test_all_builder_methods_compile() {
let _builder = ViewerOptions::new()
.width(800)
.height(600)
.size(800, 600)
.x(100)
.y(50)
.position(100, 50)
.title("Test")
.transparent()
.no_decorations()
.always_on_top()
.fixed_size()
.devtools()
.allow_navigation()
.allow_remote_content()
.allowed_domains(vec!["example.com".to_string()])
.timeout(30)
.working_dir(PathBuf::from("/tmp"))
.enable_notifications()
.enable_dialogs()
.non_blocking()
.base_dir(PathBuf::from("/tmp"));
}