gh_bofh_lib/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
// Copyright (c) 2024
// SPDX-FileCopyrightText: 2023 - 2024 Ali Sajid Imami
//
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
mod excuses;
use excuses::{
CLASSIC,
MODERN,
};
use rand::seq::SliceRandom;
type ClassicExcuse = &'static str;
type ModernExcuse = &'static str;
/// Returns a random classic excuse
///
/// This function returns a random BOFH excuse from the classic list.
///
/// # Examples
///
/// ```
/// use gh_bofh_lib::random_classic;
///
/// let excuse = random_classic();
/// println!("{}", excuse);
/// ```
#[must_use]
pub fn random_classic() -> ClassicExcuse {
CLASSIC
.choose(&mut rand::thread_rng())
.unwrap_or(&"No excuse found, try again later")
}
/// Returns a random modern excuse
///
/// This function returns a random BOFH excuse from the modern list.
///
/// # Examples
///
/// ```
/// use gh_bofh_lib::random_modern;
///
/// let excuse = random_modern();
///
/// println!("{}", excuse);
/// ```
#[must_use]
pub fn random_modern() -> ModernExcuse {
MODERN
.choose(&mut rand::thread_rng())
.unwrap_or(&"Excuse engine not initialized. Please try again later.")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_random_classic() {
let excuse: ClassicExcuse = random_classic();
assert_ne!(excuse, "No excuse found, try again later");
}
#[test]
fn test_random_modern() {
let excuse: ModernExcuse = random_modern();
assert_ne!(excuse, "Excuse engine not initialized");
}
}