wslplugins_rs/wsl_user_configuration/
bitflags.rs1use super::WSLUserConfiguration;
3use bitflags::bitflags;
4
5bitflags! {
6 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
22 pub struct WSLUserConfigurationFlags: i32 {
23 const CustomKernel = wslpluginapi_sys::WSLUserConfiguration_WSLUserConfigurationCustomKernel;
25 const CustomKernelCommandLine = wslpluginapi_sys::WSLUserConfiguration_WSLUserConfigurationCustomKernelCommandLine;
27 }
28}
29
30impl From<WSLUserConfiguration> for WSLUserConfigurationFlags {
31 #[inline]
32 fn from(value: WSLUserConfiguration) -> Self {
33 Self::from_bits_truncate(value.0)
34 }
35}
36
37impl WSLUserConfiguration {
38 #[inline]
40 #[must_use]
41 pub fn into_bitflags(self) -> WSLUserConfigurationFlags {
42 WSLUserConfigurationFlags::from(self)
43 }
44}
45
46impl From<WSLUserConfigurationFlags> for WSLUserConfiguration {
47 #[inline]
48 fn from(value: WSLUserConfigurationFlags) -> Self {
49 value.bits().into()
50 }
51}
52
53impl Default for WSLUserConfigurationFlags {
54 #[inline]
55 fn default() -> Self {
56 Self::empty()
57 }
58}
59
60#[cfg(test)]
61mod tests {
62 use super::*;
63 #[test]
64 fn test_default_bitflags() {
65 let default_config = WSLUserConfigurationFlags::default();
66 assert_eq!(default_config, WSLUserConfigurationFlags::empty());
67 assert!(default_config.is_empty());
68 }
69
70 #[test]
71 fn test_set_and_clear_bitflags() {
72 let mut config = WSLUserConfigurationFlags::default();
73 config.insert(WSLUserConfigurationFlags::CustomKernel);
74 assert!(config.contains(WSLUserConfigurationFlags::CustomKernel));
75 config.remove(WSLUserConfigurationFlags::CustomKernel);
76 assert!(!config.contains(WSLUserConfigurationFlags::CustomKernel));
77 }
78
79 #[test]
80 fn test_multiple_flags_bitflags() {
81 let mut config = WSLUserConfigurationFlags::default();
82 config.insert(
83 WSLUserConfigurationFlags::CustomKernel
84 | WSLUserConfigurationFlags::CustomKernelCommandLine,
85 );
86 assert!(config.contains(WSLUserConfigurationFlags::CustomKernel));
87 assert!(config.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
88 config.remove(WSLUserConfigurationFlags::CustomKernel);
89 assert!(!config.contains(WSLUserConfigurationFlags::CustomKernel));
90 assert!(config.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
91 }
92
93 #[test]
94 fn test_conversion_between_flags_and_configuration() {
95 let config = WSLUserConfiguration(3); let flags: WSLUserConfigurationFlags = config.into();
97 assert!(flags.contains(WSLUserConfigurationFlags::CustomKernel));
98 assert!(flags.contains(WSLUserConfigurationFlags::CustomKernelCommandLine));
99
100 let back_to_config: WSLUserConfiguration = flags.into();
101 assert_eq!(back_to_config, WSLUserConfiguration(3));
102 }
103}