Skip to content

Commit 9ccdf04

Browse files
committed
test(api): add tests for From<Cow<'static, str>>
1 parent 0bb3ad7 commit 9ccdf04

File tree

5 files changed

+95
-0
lines changed

5 files changed

+95
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
target
2+
.idea

clap_builder/src/builder/os_str.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use crate::builder::Str;
2+
#[cfg(feature = "string")]
3+
use std::borrow::Cow;
24

35
/// A UTF-8-encoded fixed string
46
///
@@ -328,3 +330,25 @@ impl std::hash::Hash for Inner {
328330
self.as_os_str().hash(state);
329331
}
330332
}
333+
334+
#[cfg(test)]
335+
#[cfg(feature = "string")]
336+
mod tests {
337+
use super::*;
338+
339+
#[test]
340+
#[cfg(feature = "string")]
341+
fn from_cow_borrowed() {
342+
let cow = Cow::Borrowed("hello");
343+
let osstr = OsStr::from(cow);
344+
assert_eq!(osstr, OsStr::from("hello"));
345+
}
346+
347+
#[test]
348+
#[cfg(feature = "string")]
349+
fn from_cow_owned() {
350+
let cow = Cow::Owned("world".to_string());
351+
let osstr = OsStr::from(cow);
352+
assert_eq!(osstr, OsStr::from("world"));
353+
}
354+
}

clap_builder/src/builder/str.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#[cfg(feature = "string")]
2+
use std::borrow::Cow;
3+
14
/// A UTF-8-encoded fixed string
25
///
36
/// <div class="warning">
@@ -312,3 +315,26 @@ impl std::hash::Hash for Inner {
312315
self.as_str().hash(state);
313316
}
314317
}
318+
319+
320+
#[cfg(test)]
321+
#[cfg(feature = "string")]
322+
mod tests {
323+
use super::*;
324+
325+
#[test]
326+
#[cfg(feature = "string")]
327+
fn from_cow_borrowed() {
328+
let cow = Cow::Borrowed("hello");
329+
let str = Str::from(cow);
330+
assert_eq!(str, Str::from("hello"));
331+
}
332+
333+
#[test]
334+
#[cfg(feature = "string")]
335+
fn from_cow_owned() {
336+
let cow = Cow::Owned("world".to_string());
337+
let str = Str::from(cow);
338+
assert_eq!(str, Str::from("world"));
339+
}
340+
}

clap_builder/src/builder/styled_str.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#![cfg_attr(not(feature = "usage"), allow(dead_code))]
2+
use std::borrow::Cow;
23

34
/// Terminal-styling container
45
///
@@ -252,3 +253,22 @@ mod wrap_tests {
252253
);
253254
}
254255
}
256+
257+
#[cfg(test)]
258+
mod tests {
259+
use super::*;
260+
261+
#[test]
262+
fn from_cow_borrowed() {
263+
let cow = Cow::Borrowed("hello");
264+
let styled = StyledStr::from(cow);
265+
assert_eq!(styled, StyledStr::from("hello"));
266+
}
267+
268+
#[test]
269+
fn from_cow_owned() {
270+
let cow = Cow::Owned("world".to_string());
271+
let styled = StyledStr::from(cow);
272+
assert_eq!(styled, StyledStr::from("world"));
273+
}
274+
}

clap_builder/src/util/id.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use crate::builder::Str;
2+
#[cfg(feature = "string")]
3+
use std::borrow::Cow;
24

35
/// [`Arg`][crate::Arg] or [`ArgGroup`][crate::ArgGroup] identifier
46
///
@@ -162,3 +164,25 @@ impl PartialEq<Id> for String {
162164
PartialEq::eq(other, self)
163165
}
164166
}
167+
168+
#[cfg(test)]
169+
#[cfg(feature = "string")]
170+
mod tests {
171+
use super::*;
172+
173+
#[test]
174+
#[cfg(feature = "string")]
175+
fn from_cow_borrowed() {
176+
let cow = Cow::Borrowed("hello");
177+
let id = Id::from(cow);
178+
assert_eq!(id, Id::from("hello"));
179+
}
180+
181+
#[test]
182+
#[cfg(feature = "string")]
183+
fn from_cow_owned() {
184+
let cow = Cow::Owned("world".to_string());
185+
let id = Id::from(cow);
186+
assert_eq!(id, Id::from("world"));
187+
}
188+
}

0 commit comments

Comments
 (0)