summaryrefslogtreecommitdiffstats
path: root/src/choice/test/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/choice/test/mod.rs')
-rw-r--r--src/choice/test/mod.rs55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/choice/test/mod.rs b/src/choice/test/mod.rs
new file mode 100644
index 0000000..762804c
--- /dev/null
+++ b/src/choice/test/mod.rs
@@ -0,0 +1,55 @@
+use crate::config::Config;
+use crate::opt::Opt;
+use std::ffi::OsString;
+use std::io::{self, BufWriter, Write};
+use structopt::StructOpt;
+
+mod get_negative_start_end;
+mod is_reverse_range;
+mod print_choice;
+
+impl Config {
+ pub fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<OsString> + Clone,
+ {
+ Config::new(Opt::from_iter(iter))
+ }
+}
+
+struct MockStdout {
+ pub buffer: String,
+}
+
+impl MockStdout {
+ fn new() -> Self {
+ MockStdout {
+ buffer: String::new(),
+ }
+ }
+
+ fn str_from_buf_writer(b: BufWriter<MockStdout>) -> String {
+ match b.into_inner() {
+ Ok(b) => b.buffer,
+ Err(_) => panic!("Failed to access BufWriter inner writer"),
+ }
+ .trim_end()
+ .to_string()
+ }
+}
+
+impl Write for MockStdout {
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ let mut bytes_written = 0;
+ for i in buf {
+ self.buffer.push(*i as char);
+ bytes_written += 1;
+ }
+ Ok(bytes_written)
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ Ok(())
+ }
+}