@@ -846,4 +846,44 @@ mod tests {
846846 fn test_get_on_non_object ( ) {
847847 assert ! ( int( 42 ) . get( "key" ) . is_none( ) ) ;
848848 }
849+
850+ #[ test]
851+ fn test_from_value_usize ( ) {
852+ // Valid positive integer
853+ assert_eq ! ( usize :: from_value( & int( 42 ) ) . unwrap( ) , 42 ) ;
854+ // Zero
855+ assert_eq ! ( usize :: from_value( & int( 0 ) ) . unwrap( ) , 0 ) ;
856+ // Negative value should fail
857+ assert ! ( usize :: from_value( & int( -1 ) ) . is_err( ) ) ;
858+ // Non-integer should fail
859+ assert ! ( usize :: from_value( & string( "42" ) ) . is_err( ) ) ;
860+ }
861+
862+ #[ test]
863+ fn test_from_value_isize ( ) {
864+ // Positive integer
865+ assert_eq ! ( isize :: from_value( & int( 42 ) ) . unwrap( ) , 42 ) ;
866+ // Negative integer
867+ assert_eq ! ( isize :: from_value( & int( -42 ) ) . unwrap( ) , -42 ) ;
868+ // Zero
869+ assert_eq ! ( isize :: from_value( & int( 0 ) ) . unwrap( ) , 0 ) ;
870+ // Non-integer should fail
871+ assert ! ( isize :: from_value( & string( "42" ) ) . is_err( ) ) ;
872+ }
873+
874+ #[ test]
875+ fn test_from_value_pathbuf ( ) {
876+ use std:: path:: PathBuf ;
877+
878+ // Valid path string
879+ let path = PathBuf :: from_value ( & string ( "/home/user/config.toml" ) ) . unwrap ( ) ;
880+ assert_eq ! ( path, PathBuf :: from( "/home/user/config.toml" ) ) ;
881+
882+ // Empty string is valid
883+ let empty = PathBuf :: from_value ( & string ( "" ) ) . unwrap ( ) ;
884+ assert_eq ! ( empty, PathBuf :: from( "" ) ) ;
885+
886+ // Non-string should fail
887+ assert ! ( PathBuf :: from_value( & int( 42 ) ) . is_err( ) ) ;
888+ }
849889}
0 commit comments