eva_common/
runtime_tests.rs1use crate::Error;
2#[allow(unused_imports)]
3use serde::Deserialize;
4
5#[cfg(not(feature = "skip_self_test_serde"))]
6#[allow(clippy::unreadable_literal)]
7fn test_serde() -> crate::EResult<()> {
8 #[derive(Deserialize)]
9 struct Test {
10 number: crate::value::Value,
11 }
12 for json_val in [
13 serde_json::json!({"number":1234567890}),
14 serde_json::json!({"number":1234567890.123}),
15 ] {
16 let val: Test = Test::deserialize(crate::value::to_value(json_val).unwrap()).unwrap();
17 if let crate::value::Value::Map(_) = val.number {
18 return Err(Error::core("serde_json arbitrary_precision MUST be off"));
19 }
20 }
21 Ok(())
22}
23
24#[allow(dead_code)]
25fn failed(test: &str, e: Error) {
26 panic!(
27 "eva_common::self.test::{} failed: {}",
28 test,
29 e.message().unwrap_or_default()
30 )
31}
32
33pub fn self_test() {
37 #[cfg(not(feature = "skip_self_test_serde"))]
38 test_serde().map_err(|e| failed("serde", e)).unwrap();
39}