#[derive(Default)]
pub struct UpdateOptions {
insert_if_absent: bool,
just_once: bool,
}
impl UpdateOptions {
pub fn new(insert_if_absent: bool, just_once: bool) -> Self {
Self {
insert_if_absent,
just_once,
}
}
pub fn is_insert_if_absent(&self) -> bool {
self.insert_if_absent
}
pub fn is_just_once(&self) -> bool {
self.just_once
}
}
pub fn insert_if_absent() -> UpdateOptions {
UpdateOptions::new(true, false)
}
pub fn just_once() -> UpdateOptions {
UpdateOptions::new(false, true)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_update_options_new() {
let options = UpdateOptions::new(true, false);
assert!(options.is_insert_if_absent());
assert!(!options.is_just_once());
let options = UpdateOptions::new(false, true);
assert!(!options.is_insert_if_absent());
assert!(options.is_just_once());
}
#[test]
fn test_update_options_default() {
let options = UpdateOptions::default();
assert!(!options.is_insert_if_absent());
assert!(!options.is_just_once());
}
#[test]
fn test_insert_if_absent() {
let options = insert_if_absent();
assert!(options.is_insert_if_absent());
assert!(!options.is_just_once());
}
#[test]
fn test_just_once() {
let options = just_once();
assert!(!options.is_insert_if_absent());
assert!(options.is_just_once());
}
}