@@ -79,3 +79,37 @@ fn modify_property_shrink_and_grow() {
7979 let err = prop_mut. set_value ( long_val) . unwrap_err ( ) ;
8080 assert_eq ! ( err, FdtMutError :: ShiftingRequired ) ;
8181}
82+
83+ #[ test]
84+ fn remove_property_via_handle ( ) {
85+ let dtb = include_bytes ! ( "dtb/test_props.dtb" ) ;
86+ let mut data = dtb. to_vec ( ) ;
87+
88+ let mut fdt_mut = FdtMut :: new ( & mut data) . unwrap ( ) ;
89+ let mut node_mut = fdt_mut. find_node_mut ( "/test-props" ) . unwrap ( ) ;
90+ let prop_mut = node_mut. property_mut ( "str-prop" ) . unwrap ( ) ;
91+ prop_mut. remove ( ) ;
92+
93+ let fdt = Fdt :: new ( & data) . unwrap ( ) ;
94+ let node = fdt. find_node ( "/test-props" ) . unwrap ( ) ;
95+ assert ! ( node. property( "str-prop" ) . is_none( ) ) ;
96+ // Verify other properties remain
97+ assert ! ( node. property( "u32-prop" ) . is_some( ) ) ;
98+ }
99+
100+ #[ test]
101+ fn remove_property_via_node ( ) {
102+ let dtb = include_bytes ! ( "dtb/test_props.dtb" ) ;
103+ let mut data = dtb. to_vec ( ) ;
104+
105+ let mut fdt_mut = FdtMut :: new ( & mut data) . unwrap ( ) ;
106+ let mut node_mut = fdt_mut. find_node_mut ( "/test-props" ) . unwrap ( ) ;
107+
108+ assert ! ( node_mut. remove_property( "str-prop" ) ) ;
109+ assert ! ( !node_mut. remove_property( "str-prop" ) ) ; // Idempotent check
110+
111+ let fdt = Fdt :: new ( & data) . unwrap ( ) ;
112+ let node = fdt. find_node ( "/test-props" ) . unwrap ( ) ;
113+ assert ! ( node. property( "str-prop" ) . is_none( ) ) ;
114+ assert ! ( node. property( "u32-prop" ) . is_some( ) ) ;
115+ }
0 commit comments