|
8 | 8 |
|
9 | 9 | use indoc::indoc; |
10 | 10 | use serde_derive::Deserialize; |
11 | | -use serde_yaml::{Deserializer, Value}; |
| 11 | +use serde_yaml::{Deserializer, Number, Value}; |
12 | 12 | use std::collections::BTreeMap; |
13 | 13 | use std::fmt::Debug; |
14 | 14 |
|
@@ -676,3 +676,30 @@ fn test_tag_resolution() { |
676 | 676 |
|
677 | 677 | test_de(yaml, &expected); |
678 | 678 | } |
| 679 | + |
| 680 | +#[test] |
| 681 | +fn test_parse_number() { |
| 682 | + let n = "111".parse::<Number>().unwrap(); |
| 683 | + assert_eq!(n, Number::from(111)); |
| 684 | + |
| 685 | + let n = "-111".parse::<Number>().unwrap(); |
| 686 | + assert_eq!(n, Number::from(-111)); |
| 687 | + |
| 688 | + let n = "-1.1".parse::<Number>().unwrap(); |
| 689 | + assert_eq!(n, Number::from(-1.1)); |
| 690 | + |
| 691 | + let n = ".nan".parse::<Number>().unwrap(); |
| 692 | + assert_eq!(n, Number::from(f64::NAN)); |
| 693 | + |
| 694 | + let n = ".inf".parse::<Number>().unwrap(); |
| 695 | + assert_eq!(n, Number::from(f64::INFINITY)); |
| 696 | + |
| 697 | + let n = "-.inf".parse::<Number>().unwrap(); |
| 698 | + assert_eq!(n, Number::from(f64::NEG_INFINITY)); |
| 699 | + |
| 700 | + let err = "null".parse::<Number>().unwrap_err(); |
| 701 | + assert_eq!(err.to_string(), "failed to parse YAML number"); |
| 702 | + |
| 703 | + let err = " 1 ".parse::<Number>().unwrap_err(); |
| 704 | + assert_eq!(err.to_string(), "failed to parse YAML number"); |
| 705 | +} |
0 commit comments