use bitflags::bitflags;
bitflags!(
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct NIFlags: i32 {
const NOFQDN = c_ares_sys::ARES_NI_NOFQDN;
const NUMERICHOST = c_ares_sys::ARES_NI_NUMERICHOST;
const NAMEREQD = c_ares_sys::ARES_NI_NAMEREQD;
const NUMERICSERV = c_ares_sys::ARES_NI_NUMERICSERV;
const TCP = c_ares_sys::ARES_NI_TCP;
const UDP = c_ares_sys::ARES_NI_UDP;
const SCTP = c_ares_sys::ARES_NI_SCTP;
const DCCP = c_ares_sys::ARES_NI_DCCP;
const NUMERICSCOPE = c_ares_sys::ARES_NI_NUMERICSCOPE;
const LOOKUPHOST = c_ares_sys::ARES_NI_LOOKUPHOST;
const LOOKUPSERVICE = c_ares_sys::ARES_NI_LOOKUPSERVICE;
}
);
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn empty() {
let flags = NIFlags::empty();
assert!(flags.is_empty());
}
#[test]
fn single() {
let flags = NIFlags::NOFQDN;
assert!(flags.contains(NIFlags::NOFQDN));
assert!(!flags.contains(NIFlags::NUMERICHOST));
}
#[test]
fn combine() {
let flags = NIFlags::NUMERICHOST | NIFlags::NUMERICSERV;
assert!(flags.contains(NIFlags::NUMERICHOST));
assert!(flags.contains(NIFlags::NUMERICSERV));
}
#[test]
fn protocol_flags() {
let tcp_flags = NIFlags::TCP | NIFlags::LOOKUPSERVICE;
assert!(tcp_flags.contains(NIFlags::TCP));
assert!(!tcp_flags.contains(NIFlags::UDP));
}
#[test]
fn debug() {
let flags = NIFlags::TCP | NIFlags::LOOKUPHOST;
let debug = format!("{flags:?}");
assert!(!debug.is_empty());
}
}