@@ -1891,4 +1891,129 @@ mod tests {
18911891 let unknown_operator = invalid_seccomp_operator_str. parse :: < LinuxSeccompOperator > ( ) ;
18921892 assert ! ( unknown_operator. is_err( ) ) ;
18931893 }
1894+
1895+ // MemoryPolicyModeType test cases
1896+ #[ test]
1897+ fn memory_policy_mode_enum_to_string ( ) {
1898+ let mode_a = MemoryPolicyModeType :: MpolDefault ;
1899+ assert_eq ! ( mode_a. to_string( ) , "MPOL_DEFAULT" ) ;
1900+
1901+ let mode_b = MemoryPolicyModeType :: MpolBind ;
1902+ assert_eq ! ( mode_b. to_string( ) , "MPOL_BIND" ) ;
1903+
1904+ let mode_c = MemoryPolicyModeType :: MpolInterleave ;
1905+ assert_eq ! ( mode_c. to_string( ) , "MPOL_INTERLEAVE" ) ;
1906+
1907+ let mode_d = MemoryPolicyModeType :: MpolWeightedInterleave ;
1908+ assert_eq ! ( mode_d. to_string( ) , "MPOL_WEIGHTED_INTERLEAVE" ) ;
1909+
1910+ let mode_e = MemoryPolicyModeType :: MpolPreferred ;
1911+ assert_eq ! ( mode_e. to_string( ) , "MPOL_PREFERRED" ) ;
1912+
1913+ let mode_f = MemoryPolicyModeType :: MpolPreferredMany ;
1914+ assert_eq ! ( mode_f. to_string( ) , "MPOL_PREFERRED_MANY" ) ;
1915+
1916+ let mode_g = MemoryPolicyModeType :: MpolLocal ;
1917+ assert_eq ! ( mode_g. to_string( ) , "MPOL_LOCAL" ) ;
1918+ }
1919+
1920+ #[ test]
1921+ fn memory_policy_mode_string_to_enum ( ) {
1922+ let mode_str = "MPOL_INTERLEAVE" ;
1923+ let mode_enum: MemoryPolicyModeType = mode_str. parse ( ) . unwrap ( ) ;
1924+ assert_eq ! ( mode_enum, MemoryPolicyModeType :: MpolInterleave ) ;
1925+
1926+ let mode_str = "MPOL_BIND" ;
1927+ let mode_enum: MemoryPolicyModeType = mode_str. parse ( ) . unwrap ( ) ;
1928+ assert_eq ! ( mode_enum, MemoryPolicyModeType :: MpolBind ) ;
1929+
1930+ let mode_str = "MPOL_DEFAULT" ;
1931+ let mode_enum: MemoryPolicyModeType = mode_str. parse ( ) . unwrap ( ) ;
1932+ assert_eq ! ( mode_enum, MemoryPolicyModeType :: MpolDefault ) ;
1933+
1934+ let mode_str = "MPOL_WEIGHTED_INTERLEAVE" ;
1935+ let mode_enum: MemoryPolicyModeType = mode_str. parse ( ) . unwrap ( ) ;
1936+ assert_eq ! ( mode_enum, MemoryPolicyModeType :: MpolWeightedInterleave ) ;
1937+
1938+ let mode_str = "MPOL_PREFERRED" ;
1939+ let mode_enum: MemoryPolicyModeType = mode_str. parse ( ) . unwrap ( ) ;
1940+ assert_eq ! ( mode_enum, MemoryPolicyModeType :: MpolPreferred ) ;
1941+
1942+ let mode_str = "MPOL_PREFERRED_MANY" ;
1943+ let mode_enum: MemoryPolicyModeType = mode_str. parse ( ) . unwrap ( ) ;
1944+ assert_eq ! ( mode_enum, MemoryPolicyModeType :: MpolPreferredMany ) ;
1945+
1946+ let mode_str = "MPOL_LOCAL" ;
1947+ let mode_enum: MemoryPolicyModeType = mode_str. parse ( ) . unwrap ( ) ;
1948+ assert_eq ! ( mode_enum, MemoryPolicyModeType :: MpolLocal ) ;
1949+
1950+ let invalid_mode_str = "INVALID_MODE" ;
1951+ let unknown_mode = invalid_mode_str. parse :: < MemoryPolicyModeType > ( ) ;
1952+ assert ! ( unknown_mode. is_err( ) ) ;
1953+ }
1954+
1955+ // MemoryPolicyFlagType test cases
1956+ #[ test]
1957+ fn memory_policy_flag_enum_to_string ( ) {
1958+ let flag_a = MemoryPolicyFlagType :: MpolFNumaBalancing ;
1959+ assert_eq ! ( flag_a. to_string( ) , "MPOL_F_NUMA_BALANCING" ) ;
1960+
1961+ let flag_b = MemoryPolicyFlagType :: MpolFRelativeNodes ;
1962+ assert_eq ! ( flag_b. to_string( ) , "MPOL_F_RELATIVE_NODES" ) ;
1963+
1964+ let flag_c = MemoryPolicyFlagType :: MpolFStaticNodes ;
1965+ assert_eq ! ( flag_c. to_string( ) , "MPOL_F_STATIC_NODES" ) ;
1966+ }
1967+
1968+ #[ test]
1969+ fn memory_policy_flag_string_to_enum ( ) {
1970+ let flag_str = "MPOL_F_NUMA_BALANCING" ;
1971+ let flag_enum: MemoryPolicyFlagType = flag_str. parse ( ) . unwrap ( ) ;
1972+ assert_eq ! ( flag_enum, MemoryPolicyFlagType :: MpolFNumaBalancing ) ;
1973+
1974+ let flag_str = "MPOL_F_RELATIVE_NODES" ;
1975+ let flag_enum: MemoryPolicyFlagType = flag_str. parse ( ) . unwrap ( ) ;
1976+ assert_eq ! ( flag_enum, MemoryPolicyFlagType :: MpolFRelativeNodes ) ;
1977+
1978+ let flag_str = "MPOL_F_STATIC_NODES" ;
1979+ let flag_enum: MemoryPolicyFlagType = flag_str. parse ( ) . unwrap ( ) ;
1980+ assert_eq ! ( flag_enum, MemoryPolicyFlagType :: MpolFStaticNodes ) ;
1981+
1982+ let invalid_flag_str = "INVALID_FLAG" ;
1983+ let unknown_flag = invalid_flag_str. parse :: < MemoryPolicyFlagType > ( ) ;
1984+ assert ! ( unknown_flag. is_err( ) ) ;
1985+ }
1986+
1987+ #[ test]
1988+ fn test_linux_memory_policy_serialization ( ) {
1989+ let memory_policy = LinuxMemoryPolicy {
1990+ mode : MemoryPolicyModeType :: MpolInterleave ,
1991+ nodes : Some ( "0-3,7" . to_string ( ) ) ,
1992+ flags : Some ( vec ! [
1993+ MemoryPolicyFlagType :: MpolFStaticNodes ,
1994+ MemoryPolicyFlagType :: MpolFRelativeNodes ,
1995+ ] ) ,
1996+ } ;
1997+
1998+ let json = serde_json:: to_string ( & memory_policy) . unwrap ( ) ;
1999+ let deserialized: LinuxMemoryPolicy = serde_json:: from_str ( & json) . unwrap ( ) ;
2000+
2001+ assert_eq ! ( deserialized. mode, MemoryPolicyModeType :: MpolInterleave ) ;
2002+ assert_eq ! ( deserialized. nodes, Some ( "0-3,7" . to_string( ) ) ) ;
2003+ assert_eq ! (
2004+ deserialized. flags,
2005+ Some ( vec![
2006+ MemoryPolicyFlagType :: MpolFStaticNodes ,
2007+ MemoryPolicyFlagType :: MpolFRelativeNodes ,
2008+ ] )
2009+ ) ;
2010+ }
2011+
2012+ #[ test]
2013+ fn test_linux_memory_policy_default ( ) {
2014+ let memory_policy = LinuxMemoryPolicy :: default ( ) ;
2015+ assert_eq ! ( memory_policy. mode, MemoryPolicyModeType :: MpolDefault ) ;
2016+ assert_eq ! ( memory_policy. nodes, None ) ;
2017+ assert_eq ! ( memory_policy. flags, None ) ;
2018+ }
18942019}
0 commit comments