use crate::ir::AttributeValue;
#[derive(Debug, Clone)]
pub struct ModConfig {
pub fmod: bool,
}
impl ModConfig {
pub fn new(fmod: bool) -> Self {
Self { fmod }
}
}
pub fn mod_config(node: &crate::ir::Node) -> ModConfig {
let fmod = match node.attrs.get("fmod") {
Some(AttributeValue::Int64(value)) => *value != 0,
_ => false, };
ModConfig::new(fmod)
}
#[cfg(test)]
#[allow(clippy::bool_assert_comparison)]
mod tests {
use super::*;
use crate::ir::{AttributeValue, NodeType};
use crate::node::test_utils::NodeBuilder;
fn create_test_node() -> crate::ir::Node {
NodeBuilder::new(NodeType::Mod, "test_mod")
.input_tensor_f32("A", 2, None)
.input_tensor_f32("B", 2, None)
.output_tensor_f32("result", 2, None)
.build()
}
#[test]
fn test_mod_config_default() {
let node = create_test_node();
let config = mod_config(&node);
assert_eq!(config.fmod, false); }
#[test]
fn test_mod_config_with_fmod_0() {
let mut node = create_test_node();
node.attrs
.insert("fmod".to_string(), AttributeValue::Int64(0));
let config = mod_config(&node);
assert_eq!(config.fmod, false);
}
#[test]
fn test_mod_config_with_fmod_1() {
let mut node = create_test_node();
node.attrs
.insert("fmod".to_string(), AttributeValue::Int64(1));
let config = mod_config(&node);
assert_eq!(config.fmod, true);
}
}