mod deps;
mod error;
mod config;
mod event;
mod icon;
mod menu;
mod tray;
mod backend;
pub use error::{TrayError, TrayResult};
pub use config::{TrayConfig, TrayConfigBuilder};
pub use event::{TrayEvent, MenuItemId};
pub use icon::TrayIcon;
pub use menu::{Menu, MenuItem, MenuBuilder};
pub use tray::SystemTray;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_config_builder() {
let config = TrayConfig::builder()
.tooltip("Test App")
.event_channel_capacity(128)
.build();
assert_eq!(config.tooltip, "Test App");
assert_eq!(config.event_channel_capacity, 128);
}
#[test]
fn test_menu_builder() {
let menu = MenuBuilder::new()
.item("open", "打开")
.separator()
.check_item("auto_start", "开机启动", true)
.item("exit", "退出")
.build();
assert_eq!(menu.items().len(), 4);
}
#[test]
fn test_menu_item_id() {
let id1: MenuItemId = "test".into();
let id2 = MenuItemId::new("test");
assert_eq!(id1, id2);
assert_eq!(id1.as_str(), "test");
}
#[test]
fn test_tray_event_debug() {
let event = TrayEvent::Click;
assert!(format!("{:?}", event).contains("Click"));
let event = TrayEvent::MenuItemClicked(MenuItemId::new("exit"));
assert!(format!("{:?}", event).contains("exit"));
}
}