11#![ cfg( feature = "serde-serialize" ) ]
22
33use 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 ,
66 SimilarityMatrix3 , Translation2 , Translation3 , Unit , Vector2 ,
77} ;
88use rand;
@@ -27,6 +27,32 @@ fn serde_dmatrix() {
2727 let serialized = serde_json:: to_string ( & v) . unwrap ( ) ;
2828 let deserialized: DMatrix < f32 > = serde_json:: from_str ( & serialized) . unwrap ( ) ;
2929 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 ( ) ;
3056}
3157
3258test_serde ! (
0 commit comments