eva_common/
runtime_tests.rs

1use 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
33/// # Panics
34///
35/// Will panic if any test failed
36pub fn self_test() {
37    #[cfg(not(feature = "skip_self_test_serde"))]
38    test_serde().map_err(|e| failed("serde", e)).unwrap();
39}