From 3c681651e10c33f3a8065b4e3b64c903c73f5252 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 17 Jul 2023 16:15:04 -0700 Subject: [PATCH] Add test of Number parsing --- tests/test_de.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/tests/test_de.rs b/tests/test_de.rs index 24845d32..840188fb 100644 --- a/tests/test_de.rs +++ b/tests/test_de.rs @@ -8,7 +8,7 @@ use indoc::indoc; use serde_derive::Deserialize; -use serde_yaml::{Deserializer, Value}; +use serde_yaml::{Deserializer, Number, Value}; use std::collections::BTreeMap; use std::fmt::Debug; @@ -676,3 +676,30 @@ fn test_tag_resolution() { test_de(yaml, &expected); } + +#[test] +fn test_parse_number() { + let n = "111".parse::().unwrap(); + assert_eq!(n, Number::from(111)); + + let n = "-111".parse::().unwrap(); + assert_eq!(n, Number::from(-111)); + + let n = "-1.1".parse::().unwrap(); + assert_eq!(n, Number::from(-1.1)); + + let n = ".nan".parse::().unwrap(); + assert_eq!(n, Number::from(f64::NAN)); + + let n = ".inf".parse::().unwrap(); + assert_eq!(n, Number::from(f64::INFINITY)); + + let n = "-.inf".parse::().unwrap(); + assert_eq!(n, Number::from(f64::NEG_INFINITY)); + + let err = "null".parse::().unwrap_err(); + assert_eq!(err.to_string(), "failed to parse YAML number"); + + let err = " 1 ".parse::().unwrap_err(); + assert_eq!(err.to_string(), "failed to parse YAML number"); +}