@@ -21,15 +21,18 @@ fn test_linear_regression_save_safetensors_creates_file() {
2121
2222 // Train a simple model (need enough samples: n >= p + 1)
2323 // Use independent features to avoid collinearity
24- let x = Matrix :: from_vec ( 4 , 2 , vec ! [ 1.0 , 2.0 , 2.0 , 1.0 , 3.0 , 4.0 , 4.0 , 3.0 ] ) . unwrap ( ) ;
24+ let x = Matrix :: from_vec ( 4 , 2 , vec ! [ 1.0 , 2.0 , 2.0 , 1.0 , 3.0 , 4.0 , 4.0 , 3.0 ] )
25+ . expect ( "Test data should be valid" ) ;
2526 let y = Vector :: from_vec ( vec ! [ 5.0 , 4.0 , 11.0 , 10.0 ] ) ;
2627
2728 let mut model = LinearRegression :: new ( ) ;
28- model. fit ( & x, & y) . unwrap ( ) ;
29+ model. fit ( & x, & y) . expect ( "Test data should be valid" ) ;
2930
3031 // Save to SafeTensors format
3132 let path = "test_model.safetensors" ;
32- model. save_safetensors ( path) . unwrap ( ) ;
33+ model
34+ . save_safetensors ( path)
35+ . expect ( "Test data should be valid" ) ;
3336
3437 // Verify file was created
3538 assert ! (
@@ -45,21 +48,23 @@ fn test_linear_regression_save_safetensors_creates_file() {
4548fn test_safetensors_header_format ( ) {
4649 // RED PHASE: Verify SafeTensors header is 8-byte u64 little-endian
4750
48- let x = Matrix :: from_vec ( 2 , 1 , vec ! [ 1.0 , 2.0 ] ) . unwrap ( ) ;
51+ let x = Matrix :: from_vec ( 2 , 1 , vec ! [ 1.0 , 2.0 ] ) . expect ( "Test data should be valid" ) ;
4952 let y = Vector :: from_vec ( vec ! [ 3.0 , 4.0 ] ) ;
5053
5154 let mut model = LinearRegression :: new ( ) ;
52- model. fit ( & x, & y) . unwrap ( ) ;
55+ model. fit ( & x, & y) . expect ( "Test data should be valid" ) ;
5356
5457 let path = "test_header.safetensors" ;
55- model. save_safetensors ( path) . unwrap ( ) ;
58+ model
59+ . save_safetensors ( path)
60+ . expect ( "Test data should be valid" ) ;
5661
5762 // Read first 8 bytes (header)
58- let bytes = fs:: read ( path) . unwrap ( ) ;
63+ let bytes = fs:: read ( path) . expect ( "Test data should be valid" ) ;
5964 assert ! ( bytes. len( ) >= 8 , "File must be at least 8 bytes" ) ;
6065
6166 // First 8 bytes should be u64 little-endian (metadata length)
62- let header_bytes: [ u8 ; 8 ] = bytes[ 0 ..8 ] . try_into ( ) . unwrap ( ) ;
67+ let header_bytes: [ u8 ; 8 ] = bytes[ 0 ..8 ] . try_into ( ) . expect ( "Test data should be valid" ) ;
6368 let metadata_len = u64:: from_le_bytes ( header_bytes) ;
6469
6570 // Metadata length should be reasonable (not zero, not huge)
@@ -75,25 +80,29 @@ fn test_safetensors_json_metadata_structure() {
7580 // RED PHASE: Verify JSON metadata has correct structure
7681
7782 // Need at least 3 samples for 2 features (n >= p + 1)
78- let x = Matrix :: from_vec ( 3 , 2 , vec ! [ 1.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 ] ) . unwrap ( ) ;
83+ let x = Matrix :: from_vec ( 3 , 2 , vec ! [ 1.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 ] )
84+ . expect ( "Test data should be valid" ) ;
7985 let y = Vector :: from_vec ( vec ! [ 1.0 , 2.0 , 3.0 ] ) ;
8086
8187 let mut model = LinearRegression :: new ( ) ;
82- model. fit ( & x, & y) . unwrap ( ) ;
88+ model. fit ( & x, & y) . expect ( "Test data should be valid" ) ;
8389
8490 let path = "test_metadata.safetensors" ;
85- model. save_safetensors ( path) . unwrap ( ) ;
91+ model
92+ . save_safetensors ( path)
93+ . expect ( "Test data should be valid" ) ;
8694
87- let bytes = fs:: read ( path) . unwrap ( ) ;
95+ let bytes = fs:: read ( path) . expect ( "Test data should be valid" ) ;
8896
8997 // Extract metadata
90- let header_bytes: [ u8 ; 8 ] = bytes[ 0 ..8 ] . try_into ( ) . unwrap ( ) ;
98+ let header_bytes: [ u8 ; 8 ] = bytes[ 0 ..8 ] . try_into ( ) . expect ( "Test data should be valid" ) ;
9199 let metadata_len = u64:: from_le_bytes ( header_bytes) as usize ;
92100 let metadata_json = & bytes[ 8 ..8 + metadata_len] ;
93- let metadata_str = std:: str:: from_utf8 ( metadata_json) . unwrap ( ) ;
101+ let metadata_str = std:: str:: from_utf8 ( metadata_json) . expect ( "Test data should be valid" ) ;
94102
95103 // Parse JSON
96- let metadata: serde_json:: Value = serde_json:: from_str ( metadata_str) . unwrap ( ) ;
104+ let metadata: serde_json:: Value =
105+ serde_json:: from_str ( metadata_str) . expect ( "Test data should be valid" ) ;
97106
98107 // Verify "coefficients" tensor metadata
99108 assert ! (
@@ -131,28 +140,35 @@ fn test_safetensors_coefficients_serialization() {
131140
132141 // Need at least 3 samples for 2 features (n >= p + 1)
133142 // Use independent features
134- let x = Matrix :: from_vec ( 3 , 2 , vec ! [ 1.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 ] ) . unwrap ( ) ;
143+ let x = Matrix :: from_vec ( 3 , 2 , vec ! [ 1.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 ] )
144+ . expect ( "Test data should be valid" ) ;
135145 let y = Vector :: from_vec ( vec ! [ 2.0 , 3.0 , 5.0 ] ) ;
136146
137147 let mut model = LinearRegression :: new ( ) ;
138- model. fit ( & x, & y) . unwrap ( ) ;
148+ model. fit ( & x, & y) . expect ( "Test data should be valid" ) ;
139149
140150 let path = "test_coeffs.safetensors" ;
141- model. save_safetensors ( path) . unwrap ( ) ;
151+ model
152+ . save_safetensors ( path)
153+ . expect ( "Test data should be valid" ) ;
142154
143- let bytes = fs:: read ( path) . unwrap ( ) ;
155+ let bytes = fs:: read ( path) . expect ( "Test data should be valid" ) ;
144156
145157 // Extract metadata to find data offsets
146- let header_bytes: [ u8 ; 8 ] = bytes[ 0 ..8 ] . try_into ( ) . unwrap ( ) ;
158+ let header_bytes: [ u8 ; 8 ] = bytes[ 0 ..8 ] . try_into ( ) . expect ( "Test data should be valid" ) ;
147159 let metadata_len = u64:: from_le_bytes ( header_bytes) as usize ;
148160 let metadata_json = & bytes[ 8 ..8 + metadata_len] ;
149- let metadata: serde_json:: Value =
150- serde_json:: from_str ( std:: str:: from_utf8 ( metadata_json) . unwrap ( ) ) . unwrap ( ) ;
161+ let metadata: serde_json:: Value = serde_json:: from_str (
162+ std:: str:: from_utf8 ( metadata_json) . expect ( "Test data should be valid" ) ,
163+ )
164+ . expect ( "Test data should be valid" ) ;
151165
152166 // Get coefficients data offsets
153- let offsets = metadata[ "coefficients" ] [ "data_offsets" ] . as_array ( ) . unwrap ( ) ;
154- let start = offsets[ 0 ] . as_u64 ( ) . unwrap ( ) as usize + 8 + metadata_len;
155- let end = offsets[ 1 ] . as_u64 ( ) . unwrap ( ) as usize + 8 + metadata_len;
167+ let offsets = metadata[ "coefficients" ] [ "data_offsets" ]
168+ . as_array ( )
169+ . expect ( "Test data should be valid" ) ;
170+ let start = offsets[ 0 ] . as_u64 ( ) . expect ( "Test data should be valid" ) as usize + 8 + metadata_len;
171+ let end = offsets[ 1 ] . as_u64 ( ) . expect ( "Test data should be valid" ) as usize + 8 + metadata_len;
156172
157173 // Read coefficient bytes
158174 let coeff_bytes = & bytes[ start..end] ;
@@ -167,7 +183,9 @@ fn test_safetensors_coefficients_serialization() {
167183 // Verify we can parse F32 values
168184 let n_coeffs = coeff_bytes. len ( ) / 4 ;
169185 for i in 0 ..n_coeffs {
170- let f32_bytes: [ u8 ; 4 ] = coeff_bytes[ i * 4 ..( i + 1 ) * 4 ] . try_into ( ) . unwrap ( ) ;
186+ let f32_bytes: [ u8 ; 4 ] = coeff_bytes[ i * 4 ..( i + 1 ) * 4 ]
187+ . try_into ( )
188+ . expect ( "Test data should be valid" ) ;
171189 let _value = f32:: from_le_bytes ( f32_bytes) ; // Should not panic
172190 }
173191
@@ -188,23 +206,27 @@ fn test_safetensors_roundtrip() {
188206 1.0 , 0.0 , 0.0 , 0.0 , 1.0 , 0.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 , 0.0 , 1.0 , 0.0 , 1.0 ,
189207 ] ,
190208 )
191- . unwrap ( ) ;
209+ . expect ( "Test data should be valid" ) ;
192210 let y = Vector :: from_vec ( vec ! [ 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ) ;
193211
194212 // Train original model
195213 let mut model_original = LinearRegression :: new ( ) ;
196- model_original. fit ( & x, & y) . unwrap ( ) ;
214+ model_original
215+ . fit ( & x, & y)
216+ . expect ( "Test data should be valid" ) ;
197217
198218 // Get original coefficients and intercept
199219 let original_coeffs = model_original. coefficients ( ) ;
200220 let original_intercept = model_original. intercept ( ) ;
201221
202222 // Save to SafeTensors
203223 let path = "test_roundtrip.safetensors" ;
204- model_original. save_safetensors ( path) . unwrap ( ) ;
224+ model_original
225+ . save_safetensors ( path)
226+ . expect ( "Test data should be valid" ) ;
205227
206228 // Load from SafeTensors
207- let model_loaded = LinearRegression :: load_safetensors ( path) . unwrap ( ) ;
229+ let model_loaded = LinearRegression :: load_safetensors ( path) . expect ( "Test data should be valid" ) ;
208230
209231 // Verify coefficients match (within floating-point tolerance)
210232 let loaded_coeffs = model_loaded. coefficients ( ) ;
@@ -269,7 +291,7 @@ fn test_safetensors_corrupted_header_error() {
269291
270292 // Create file with invalid header (less than 8 bytes)
271293 let path = "test_corrupted.safetensors" ;
272- fs:: write ( path, [ 1 , 2 , 3 ] ) . unwrap ( ) ;
294+ fs:: write ( path, [ 1 , 2 , 3 ] ) . expect ( "Test data should be valid" ) ;
273295
274296 let result = LinearRegression :: load_safetensors ( path) ;
275297 assert ! (
0 commit comments