wslplugins_rs/wsl_user_configuration/
flagset.rs1use super::WSLUserConfiguration;
3use flagset::{flags, FlagSet};
4
5flags! {
6 #[derive(Hash)]
22 pub enum WSLUserConfigurationFlags: i32 {
23 CustomKernel = wslpluginapi_sys::WSLUserConfiguration_WSLUserConfigurationCustomKernel,
25 CustomKernelCommandLine =
27 wslpluginapi_sys::WSLUserConfiguration_WSLUserConfigurationCustomKernelCommandLine,
28 }
29}
30
31impl From<WSLUserConfiguration> for FlagSet<WSLUserConfigurationFlags> {
32 #[inline]
33 fn from(value: WSLUserConfiguration) -> Self {
34 Self::new_truncated(value.0)
35 }
36}
37
38impl From<FlagSet<WSLUserConfigurationFlags>> for WSLUserConfiguration {
39 #[inline]
40 fn from(value: FlagSet<WSLUserConfigurationFlags>) -> Self {
41 Self::from(value.bits())
42 }
43}
44
45impl WSLUserConfiguration {
46 #[inline]
48 #[must_use]
49 pub fn into_flagset(self) -> FlagSet<WSLUserConfigurationFlags> {
50 FlagSet::from(self)
51 }
52}
53
54#[cfg(test)]
55mod tests {
56 use super::*;
57
58 #[test]
59 fn test_default_flagset() {
60 let default_config = FlagSet::<WSLUserConfigurationFlags>::default();
61 assert_eq!(default_config, FlagSet::default());
62 assert!(default_config.is_empty());
63 }
64
65 #[test]
66 fn test_set_and_clear_flagset() {
67 let mut config = FlagSet::<WSLUserConfigurationFlags>::default();
68 config |= WSLUserConfigurationFlags::CustomKernel;
69 assert!(config.contains(WSLUserConfigurationFlags::CustomKernel));
70 config &= !WSLUserConfigurationFlags::CustomKernel;
71 assert!(!config.contains(WSLUserConfigurationFlags::CustomKernel));
72 }
73
74 #[test]
75 fn test_multiple_flags_flagset() {
76 let mut config = FlagSet::<WSLUserConfigurationFlags>::default();
77 config |= WSLUserConfigurationFlags::CustomKernel
78 | WSLUserConfigurationFlags::CustomKernelCommandLine;
79 assert!(config.contains(WSLUserConfigurationFlags::CustomKernel));
80 assert!(config.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
81 config &= !WSLUserConfigurationFlags::CustomKernel;
82 assert!(!config.contains(WSLUserConfigurationFlags::CustomKernel));
83 assert!(config.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
84 }
85
86 #[test]
87 fn test_conversion_between_flags_and_configuration() {
88 let config = WSLUserConfiguration(3); let flags: FlagSet<WSLUserConfigurationFlags> = config.into();
90 assert!(flags.contains(WSLUserConfigurationFlags::CustomKernel));
91 assert!(flags.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
92
93 let back_to_config: WSLUserConfiguration = flags.into();
94 assert_eq!(back_to_config, WSLUserConfiguration(3));
95 }
96}