#![forbid(unsafe_code)]
#![warn(missing_docs)]
pub mod caps;
pub mod compiler;
pub mod data;
pub mod engine;
pub mod error;
pub mod expr;
pub mod migrate;
pub mod model;
pub mod nodes;
pub mod observability;
pub mod validate;
pub const CRATE_NAME: &str = env!("CARGO_PKG_NAME");
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub fn product_name() -> &'static str {
CRATE_NAME
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn product_name_matches_crate_name() {
assert_eq!(product_name(), "tinyflows");
}
#[test]
fn exposes_package_version() {
assert!(!VERSION.is_empty());
}
#[test]
fn version_looks_like_semver() {
let core = VERSION.split(['-', '+']).next().expect("version core");
let parts: Vec<&str> = core.split('.').collect();
assert!(
parts.len() >= 3,
"version {VERSION:?} should have at least major.minor.patch"
);
for part in &parts[..3] {
assert!(
!part.is_empty() && part.bytes().all(|b| b.is_ascii_digit()),
"version {VERSION:?} component {part:?} should be numeric"
);
}
}
#[test]
fn crate_name_and_product_name_agree() {
assert_eq!(CRATE_NAME, "tinyflows");
assert_eq!(product_name(), CRATE_NAME);
}
}