2019-09-17 02:39:57 +00:00
|
|
|
use assert_cmd::prelude::*;
|
2019-09-15 02:29:40 +00:00
|
|
|
use predicates::prelude::*;
|
2019-09-17 02:39:57 +00:00
|
|
|
use std::process::Command;
|
2019-09-15 02:29:40 +00:00
|
|
|
|
2019-09-15 04:06:57 +00:00
|
|
|
//======================RATES======================//
|
2019-09-15 02:29:40 +00:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_small_rate() -> Result<(), Box<dyn std::error::Error>> {
|
2019-10-20 05:13:25 +00:00
|
|
|
Command::new("./target/debug/btm")
|
2019-09-15 02:29:40 +00:00
|
|
|
.arg("-r")
|
|
|
|
.arg("249")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
|
|
|
.stderr(predicate::str::contains("rate to be greater than 250"));
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2019-09-15 04:06:57 +00:00
|
|
|
#[test]
|
|
|
|
fn test_large_rate() -> Result<(), Box<dyn std::error::Error>> {
|
2019-10-20 05:13:25 +00:00
|
|
|
Command::new("./target/debug/btm")
|
2019-09-15 04:06:57 +00:00
|
|
|
.arg("-r")
|
|
|
|
.arg("18446744073709551616")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
|
|
|
.stderr(predicate::str::contains("rate to be less than unsigned INT_MAX."));
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2019-09-15 02:29:40 +00:00
|
|
|
#[test]
|
|
|
|
fn test_negative_rate() -> Result<(), Box<dyn std::error::Error>> {
|
|
|
|
// This test should auto fail due to how clap works
|
2019-10-20 05:13:25 +00:00
|
|
|
Command::new("./target/debug/btm")
|
2019-09-15 02:29:40 +00:00
|
|
|
.arg("-r")
|
|
|
|
.arg("-1000")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
|
|
|
.stderr(predicate::str::contains("wasn't expected, or isn't valid in this context"));
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_invalid_rate() -> Result<(), Box<dyn std::error::Error>> {
|
2019-10-20 05:13:25 +00:00
|
|
|
Command::new("./target/debug/btm")
|
2019-09-15 02:29:40 +00:00
|
|
|
.arg("-r")
|
|
|
|
.arg("100-1000")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
|
|
|
.stderr(predicate::str::contains("invalid digit"));
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|