2022-07-13 21:22:55 +08:00
|
|
|
#![cfg(feature = "rkyv-serialize")]
|
|
|
|
|
|
|
|
use na::{
|
|
|
|
DMatrix, Isometry2, Isometry3, IsometryMatrix2, IsometryMatrix3, Matrix2x3, Matrix3x4, Point2,
|
|
|
|
Point3, Quaternion, Rotation2, Rotation3, Similarity2, Similarity3, SimilarityMatrix2,
|
|
|
|
SimilarityMatrix3, Translation2, Translation3, Unit, Vector2,
|
|
|
|
};
|
|
|
|
use rand;
|
2022-07-14 11:05:44 +08:00
|
|
|
use rkyv::{Archive, Deserialize, Infallible, Serialize};
|
2022-07-13 21:22:55 +08:00
|
|
|
|
2022-07-18 04:51:20 +08:00
|
|
|
macro_rules! test_rkyv_same_type(
|
2022-07-13 21:22:55 +08:00
|
|
|
($($test: ident, $ty: ident);* $(;)*) => {$(
|
|
|
|
#[test]
|
|
|
|
fn $test() {
|
2022-07-14 02:32:46 +08:00
|
|
|
let value: $ty<f32> = rand::random();
|
|
|
|
let bytes = rkyv::to_bytes::<_, 256>(&value).unwrap();
|
2022-07-13 21:22:55 +08:00
|
|
|
|
|
|
|
let archived = rkyv::check_archived_root::<$ty<f32>>(&bytes[..]).unwrap();
|
2022-07-18 04:51:20 +08:00
|
|
|
// Compare archived and non-archived
|
2022-07-13 21:22:55 +08:00
|
|
|
assert_eq!(archived, &value);
|
|
|
|
|
2022-07-18 04:51:20 +08:00
|
|
|
// Make sure Debug implementations are the same for Archived and non-Archived versions.
|
2022-07-14 02:32:46 +08:00
|
|
|
assert_eq!(format!("{:?}", value), format!("{:?}", archived));
|
2022-07-13 21:22:55 +08:00
|
|
|
}
|
|
|
|
)*}
|
|
|
|
);
|
2022-07-18 04:51:20 +08:00
|
|
|
macro_rules! test_rkyv_diff_type(
|
2022-07-14 11:02:17 +08:00
|
|
|
($($test: ident, $ty: ident);* $(;)*) => {$(
|
|
|
|
#[test]
|
|
|
|
fn $test() {
|
2022-07-18 04:51:20 +08:00
|
|
|
let value: $ty<String> = Default::default();
|
2022-07-14 11:02:17 +08:00
|
|
|
let bytes = rkyv::to_bytes::<_, 256>(&value).unwrap();
|
|
|
|
|
2022-07-18 04:51:20 +08:00
|
|
|
let archived = rkyv::check_archived_root::<$ty<String>>(&bytes[..]).unwrap();
|
|
|
|
let deserialized: $ty<String> = archived.deserialize(&mut Infallible).unwrap();
|
2022-07-14 11:02:17 +08:00
|
|
|
assert_eq!(deserialized, value);
|
|
|
|
}
|
|
|
|
)*}
|
|
|
|
);
|
|
|
|
|
2022-07-18 04:51:20 +08:00
|
|
|
// Tests to make sure
|
|
|
|
test_rkyv_same_type!(
|
|
|
|
rkyv_same_type_matrix3x4, Matrix3x4;
|
|
|
|
rkyv_same_type_point3, Point3;
|
|
|
|
rkyv_same_type_translation3, Translation3;
|
|
|
|
rkyv_same_type_rotation3, Rotation3;
|
|
|
|
rkyv_same_type_isometry3, Isometry3;
|
|
|
|
rkyv_same_type_isometry_matrix3, IsometryMatrix3;
|
|
|
|
rkyv_same_type_similarity3, Similarity3;
|
|
|
|
rkyv_same_type_similarity_matrix3, SimilarityMatrix3;
|
|
|
|
rkyv_same_type_quaternion, Quaternion;
|
|
|
|
rkyv_same_type_point2, Point2;
|
|
|
|
rkyv_same_type_translation2, Translation2;
|
|
|
|
rkyv_same_type_rotation2, Rotation2;
|
|
|
|
rkyv_same_type_isometry2, Isometry2;
|
|
|
|
rkyv_same_type_isometry_matrix2, IsometryMatrix2;
|
|
|
|
rkyv_same_type_similarity2, Similarity2;
|
|
|
|
rkyv_same_type_similarity_matrix2, SimilarityMatrix2;
|
2022-07-14 11:02:17 +08:00
|
|
|
);
|
2022-07-13 21:22:55 +08:00
|
|
|
|
2022-07-18 04:51:20 +08:00
|
|
|
test_rkyv_diff_type! {
|
|
|
|
rkyv_diff_type_matrix3x4, Matrix3x4;
|
|
|
|
}
|