#[test] fn test_raw_value_from_rust() { let raw = RawValue::from_rust(&42).unwrap();
assert_eq!(raw.get_ron(), "42");
let raw = RawValue::from_rust(&WithRawValue {
a: true,
b: from_str("4.2").unwrap(),
})
.unwrap();
assert_eq!(raw.get_ron(), "(a:true,b:4.2)");
}
#[test] fn test_raw_value_serde_json() { let raw = RawValue::from_ron("/* hi */ (None, 4.2) /* bye */").unwrap();
let ser = serde_json::to_string(&WithRawValue {
a: true,
b: raw.to_owned(),
})
.unwrap();
assert_eq!(ser, "{\"a\":true,\"b\":\"/* hi */ (None, 4.2) /* bye */\"}");
let with: WithRawValue = serde_json::from_str(&ser).unwrap();
assert_eq!(raw, &*with.b);
let err =
serde_json::from_str::<WithRawValue>("{\"a\":true,\"b\":\"/* hi */ (a:) /* bye */\"}")
.unwrap_err();
assert_eq!(
err.to_string(), "invalid RON value at 1:13: Unexpected char ')' at line 1 column 39"
);
let err = serde_json::from_str::<WithRawValue>("{\"a\":true,\"b\":42}").unwrap_err();
assert_eq!(
err.to_string(), "invalid type: integer `42`, expected any valid RON-value-string at line 1 column 16"
);
let err = serde_json::from_str::<&RawValue>("\"/* hi */ (a:) /* bye */\"").unwrap_err();
assert_eq!(
err.to_string(), "invalid RON value at 1:13: Unexpected char ')' at line 1 column 25"
);
let err = serde_json::from_str::<&RawValue>("42").unwrap_err();
assert_eq!(
err.to_string(), "invalid type: integer `42`, expected any valid borrowed RON-value-string at line 1 column 2"
);
}
#[test] fn test_raw_value_clone_into() { let raw = RawValue::from_boxed_ron(String::from("(None, 4.2)").into_boxed_str()).unwrap(); let raw2 = raw.clone();
assert_eq!(raw, raw2);
let boxed_str: Box<str> = raw2.into();
assert_eq!(&*boxed_str, "(None, 4.2)");
}
#[test] fn test_raw_value_debug_display() { let raw = RawValue::from_ron("/* hi */ (None, 4.2) /* bye */").unwrap();
let boxed_raw = Box::<RawValue>::deserialize(string).unwrap();
assert_eq!(boxed_raw.get_ron(), "4.2");
let string = serde::de::value::StringDeserializer::<Error>::new(String::from("["));
let err = Box::<RawValue>::deserialize(string).unwrap_err();
assert_eq!(
err,
Error::Message(String::from( "invalid RON value at 1:1-1:2: Unexpected end of RON"
))
);
}
assert_eq!(
ron::to_string(&Some(Some(RawValue::from_ron("None").unwrap()))).unwrap(), "Some(Some(None))"
); // Since a RawValue can contain anything, no implicit Some are allowed around it
assert_eq!(
ron::Options::default()
.with_default_extension(ron::extensions::Extensions::IMPLICIT_SOME)
.to_string(&Some(Some(RawValue::from_ron("None").unwrap())))
.unwrap(), "Some(Some(None))"
);
assert_eq!(
ron::from_str::<Option<Option<&RawValue>>>("Some(Some(None))").unwrap(),
Some(Some(RawValue::from_ron("None").unwrap()))
);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.