| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- extern crate url;
- use url::{Url, Host};
- use url::format::{PathFormatter, UserInfoFormatter};
- #[test]
- fn path_formatting() {
- let data = [
- (vec![], "/"),
- (vec![""], "/"),
- (vec!["test", "path"], "/test/path"),
- (vec!["test", "path", ""], "/test/path/")
- ];
- for &(ref path, result) in &data {
- assert_eq!(PathFormatter {
- path: path
- }.to_string(), result.to_string());
- }
- }
- #[test]
- fn host() {
- // libstd’s `Display for Ipv6Addr` serializes 0:0:0:0:0:0:_:_ and 0:0:0:0:0:ffff:_:_
- // using IPv4-like syntax, as suggested in https://tools.ietf.org/html/rfc5952#section-4
- // but https://url.spec.whatwg.org/#concept-ipv6-serializer specifies not to.
- // Not [::0.0.0.2] / [::ffff:0.0.0.2]
- assert_eq!(Host::parse("[0::2]").unwrap().to_string(), "[::2]");
- assert_eq!(Host::parse("[0::ffff:0:2]").unwrap().to_string(), "[::ffff:0:2]");
- }
- #[test]
- fn userinfo_formatting() {
- // Test data as (username, password, result) tuples.
- let data = [
- ("", None, ""),
- ("", Some(""), ":@"),
- ("", Some("password"), ":password@"),
- ("username", None, "username@"),
- ("username", Some(""), "username:@"),
- ("username", Some("password"), "username:password@")
- ];
- for &(username, password, result) in &data {
- assert_eq!(UserInfoFormatter {
- username: username,
- password: password
- }.to_string(), result.to_string());
- }
- }
- #[test]
- fn relative_scheme_url_formatting() {
- let data = [
- ("http://example.com/", "http://example.com/"),
- ("http://addslash.com", "http://addslash.com/"),
- ("http://@emptyuser.com/", "http://emptyuser.com/"),
- ("http://:@emptypass.com/", "http://:@emptypass.com/"),
- ("http://user@user.com/", "http://user@user.com/"),
- ("http://user:pass@userpass.com/", "http://user:pass@userpass.com/"),
- ("http://slashquery.com/path/?q=something", "http://slashquery.com/path/?q=something"),
- ("http://noslashquery.com/path?q=something", "http://noslashquery.com/path?q=something")
- ];
- for &(input, result) in &data {
- let url = Url::parse(input).unwrap();
- assert_eq!(url.to_string(), result.to_string());
- }
- }
|