1
1
#![ cfg( feature = "serde-serialize" ) ]
2
2
3
3
use na:: {
4
- DMatrix , Isometry2 , Isometry3 , IsometryMatrix2 , IsometryMatrix3 , Matrix3x4 , Point2 , Point3 ,
5
- Quaternion , Rotation2 , Rotation3 , Similarity2 , Similarity3 , SimilarityMatrix2 ,
4
+ DMatrix , Isometry2 , Isometry3 , IsometryMatrix2 , IsometryMatrix3 , Matrix2x3 , Matrix3x4 , Point2 ,
5
+ Point3 , Quaternion , Rotation2 , Rotation3 , Similarity2 , Similarity3 , SimilarityMatrix2 ,
6
6
SimilarityMatrix3 , Translation2 , Translation3 , Unit , Vector2 ,
7
7
} ;
8
8
use rand;
@@ -27,6 +27,32 @@ fn serde_dmatrix() {
27
27
let serialized = serde_json:: to_string ( & v) . unwrap ( ) ;
28
28
let deserialized: DMatrix < f32 > = serde_json:: from_str ( & serialized) . unwrap ( ) ;
29
29
assert_eq ! ( v, deserialized) ;
30
+
31
+ let m = DMatrix :: from_column_slice ( 2 , 3 , & [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ) ;
32
+ let mat_str = "[[1.0, 2.0, 3.0, 4.0, 5.0, 6.0],2,3]" ;
33
+ let deserialized: DMatrix < f32 > = serde_json:: from_str ( & mat_str) . unwrap ( ) ;
34
+ assert_eq ! ( m, deserialized) ;
35
+
36
+ let m = Matrix2x3 :: from_column_slice ( & [ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 ] ) ;
37
+ let mat_str = "[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]" ;
38
+ let deserialized: Matrix2x3 < f32 > = serde_json:: from_str ( & mat_str) . unwrap ( ) ;
39
+ assert_eq ! ( m, deserialized) ;
40
+ }
41
+
42
+ #[ test]
43
+ #[ should_panic]
44
+ fn serde_dmatrix_invalid_len ( ) {
45
+ // This must fail: we attempt to deserialize a 2x3 with only 5 elements.
46
+ let mat_str = "[[1.0, 2.0, 3.0, 4.0, 5.0],2,3]" ;
47
+ let _: DMatrix < f32 > = serde_json:: from_str ( & mat_str) . unwrap ( ) ;
48
+ }
49
+
50
+ #[ test]
51
+ #[ should_panic]
52
+ fn serde_smatrix_invalid_len ( ) {
53
+ // This must fail: we attempt to deserialize a 2x3 with only 5 elements.
54
+ let mat_str = "[1.0, 2.0, 3.0, 4.0, 5.0]" ;
55
+ let _: Matrix2x3 < f32 > = serde_json:: from_str ( & mat_str) . unwrap ( ) ;
30
56
}
31
57
32
58
test_serde ! (
0 commit comments