diff options
| author | Chase Wilson <me@chasewilson.dev> | 2021-07-30 13:13:59 -0500 |
|---|---|---|
| committer | Chase Wilson <me@chasewilson.dev> | 2021-08-09 10:24:00 -0500 |
| commit | eea3520a8fc1c4a03626ee4f9d74b6d9833db54c (patch) | |
| tree | 72d1f7fc90ff4758fa456603f3673004c036991d | |
| parent | bc4ce79764f6519ee9f1469fb3fddcc3f70b8e14 (diff) | |
| download | rust-eea3520a8fc1c4a03626ee4f9d74b6d9833db54c.tar.gz rust-eea3520a8fc1c4a03626ee4f9d74b6d9833db54c.zip | |
Added some basic tests for `Option::unzip()` and `Option::zip()` (I noticed that zip had no tests)
| -rw-r--r-- | library/core/tests/option.rs | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/library/core/tests/option.rs b/library/core/tests/option.rs index 88ea15a3b33..cd8fdebe36a 100644 --- a/library/core/tests/option.rs +++ b/library/core/tests/option.rs @@ -399,7 +399,7 @@ fn test_unwrap_drop() { } #[test] -pub fn option_ext() { +fn option_ext() { let thing = "{{ f }}"; let f = thing.find("{{"); @@ -407,3 +407,35 @@ pub fn option_ext() { println!("None!"); } } + +#[test] +fn zip_options() { + let x = Some(10); + let y = Some("foo"); + let z: Option<usize> = None; + + assert_eq!(x.zip(y), Some((10, "foo"))); + assert_eq!(x.zip(z), None); + assert_eq!(z.zip(x), None); +} + +#[test] +fn unzip_options() { + let x = Some((10, "foo")); + let y = None::<(bool, i32)>; + + assert_eq!(x.unzip(), (Some(10), Some("foo"))); + assert_eq!(y.unzip(), (None, None)); +} + +#[test] +fn zip_unzip_roundtrip() { + let x = Some(10); + let y = Some("foo"); + + let z = x.zip(y); + assert_eq!(z, Some((10, "foo"))); + + let a = z.unzip(); + assert_eq!(a, (x, y)); +} |
