summaryrefslogtreecommitdiffstats
path: root/src/options.rs
diff options
context:
space:
mode:
authorClementTsang <cjhtsang@uwaterloo.ca>2020-09-01 03:08:38 -0400
committerClementTsang <cjhtsang@uwaterloo.ca>2020-09-01 03:08:46 -0400
commit663ae6c5c25a2ef88eff856c202265c8a1455f06 (patch)
treefa11a47464d9088a76f3a89eaef7368f129feff0 /src/options.rs
parentd24a797ce9a137cbce68d621693dc7db60db2ba8 (diff)
bug: fix broken check from last commit, add tests
Diffstat (limited to 'src/options.rs')
-rw-r--r--src/options.rs43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/options.rs b/src/options.rs
index 1d25ca85..e1a6e226 100644
--- a/src/options.rs
+++ b/src/options.rs
@@ -592,30 +592,33 @@ fn get_default_widget_and_count(
None
};
- if widget_type.is_some() {
- let widget_count = if let Some(widget_count) = matches.value_of("DEFAULT_WIDGET_COUNT") {
- widget_count.parse::<u128>()?
- } else if let Some(flags) = &config.flags {
- if let Some(widget_count) = flags.default_widget_count {
- widget_count as u128
- } else {
- 1 as u128
- }
- } else {
- 1 as u128
- };
-
- if widget_count > std::u64::MAX as u128 {
- Err(BottomError::ConfigError(
- "set your widget count to be at most unsigned INT_MAX.".to_string(),
- ))
+ let widget_count = if let Some(widget_count) = matches.value_of("DEFAULT_WIDGET_COUNT") {
+ Some(widget_count.parse::<u128>()?)
+ } else if let Some(flags) = &config.flags {
+ if let Some(widget_count) = flags.default_widget_count {
+ Some(widget_count as u128)
} else {
- Ok((widget_type, widget_count as u64))
+ None
}
} else {
- Err(BottomError::ConfigError(
+ None
+ };
+
+ match (widget_type, widget_count) {
+ (Some(widget_type), Some(widget_count)) => {
+ if widget_count > std::u64::MAX as u128 {
+ Err(BottomError::ConfigError(
+ "set your widget count to be at most unsigned INT_MAX.".to_string(),
+ ))
+ } else {
+ Ok((Some(widget_type), widget_count as u64))
+ }
+ }
+ (Some(widget_type), None) => Ok((Some(widget_type), 1)),
+ (None, Some(_widget_count)) => Err(BottomError::ConfigError(
"cannot set 'default_widget_count' by itself, it must be used with 'default_widget_type'.".to_string(),
- ))
+ )),
+ (None, None) => Ok((None, 1))
}
}