use super::ParsedDisplay;
use alloc::string::String;
use rusl::string::unix_str::UnixString;
pub(super) fn connect_addresses(p: &ParsedDisplay) -> Option<UnixString> {
let ParsedDisplay {
protocol, display, ..
} = p;
if protocol.is_none() || protocol.as_deref() == Some("unix") {
let file_name = alloc::format!("/tmp/.X11-unix/X{display}\0");
Some(UnixString::try_from_string(file_name).unwrap())
} else {
None
}
}
#[cfg(test)]
mod tests {
use super::super::*;
#[test]
fn basic_test() {
let pd = parse_display(Some(":0")).unwrap();
let ci = pd.connect_instruction();
let ci = ci.unwrap();
assert_eq!(ci, UnixString::try_from_str("/tmp/.X11-unix/X0\0").unwrap());
}
#[test]
fn try_over_unix_hostname() {
let pd = parse_display(Some("unix/host:0")).unwrap();
let ci = pd.connect_instruction();
let ci = ci.unwrap();
assert_eq!(ci, UnixString::try_from_str("/tmp/.X11-unix/X0\0").unwrap());
}
}