[go: up one dir, main page]

toml 0.3.2

A native Rust encoder and decoder of TOML-formatted files and streams. Provides implementations of the standard Serialize/Deserialize traits for TOML data to facilitate deserializing and serializing Rust structures.
Documentation
extern crate toml;

use std::str::FromStr;

use toml::Value;

#[test]
fn times() {
    fn good(s: &str) {
        let to_parse = format!("foo = {}", s);
        let value = Value::from_str(&to_parse).unwrap();
        assert_eq!(value["foo"].as_datetime().unwrap().to_string(), s);
    }

    good("1997-09-09T09:09:09Z");
    good("1997-09-09T09:09:09+09:09");
    good("1997-09-09T09:09:09-09:09");
    good("1997-09-09T09:09:09");
    good("1997-09-09");
    good("09:09:09");
    good("1997-09-09T09:09:09.09Z");
    good("1997-09-09T09:09:09.09+09:09");
    good("1997-09-09T09:09:09.09-09:09");
    good("1997-09-09T09:09:09.09");
    good("09:09:09.09");
}

#[test]
fn bad_times() {
    fn bad(s: &str) {
        let to_parse = format!("foo = {}", s);
        assert!(Value::from_str(&to_parse).is_err());
    }

    bad("199-09-09");
    bad("199709-09");
    bad("1997-9-09");
    bad("1997-09-9");
    bad("1997-09-0909:09:09");
    bad("1997-09-09T09:09:09.");
    bad("T");
    bad("T.");
    bad("TZ");
    bad("1997-09-09T09:09:09.09+");
    bad("1997-09-09T09:09:09.09+09");
    bad("1997-09-09T09:09:09.09+09:9");
    bad("1997-09-09T09:09:09.09+0909");
    bad("1997-09-09T09:09:09.09-");
    bad("1997-09-09T09:09:09.09-09");
    bad("1997-09-09T09:09:09.09-09:9");
    bad("1997-09-09T09:09:09.09-0909");

    bad("1997-00-09T09:09:09.09Z");
    bad("1997-09-00T09:09:09.09Z");
    bad("1997-09-09T30:09:09.09Z");
    bad("1997-09-09T12:69:09.09Z");
    bad("1997-09-09T12:09:69.09Z");
}