#![allow(clippy::disallowed_methods)]
#[test]
fn f001_all_bricks_implement_trait() {
let brick_names = [
"RmsNorm",
"QkvBrick",
"RoPE",
"Attention",
"OProj",
"RmsNorm", "FfnBrick",
];
assert_eq!(
brick_names.len(),
7,
"F001 FALSIFIED: Expected 7 bricks per layer"
);
}
#[test]
fn f002_assertions_non_empty() {
let min_assertions = 1;
assert!(
min_assertions >= 1,
"F002 FALSIFIED: Bricks must have at least 1 assertion"
);
}
#[test]
fn f003_verify_checks_all_assertions() {
let assertions = vec![true, true, true];
let all_pass = assertions.iter().all(|&a| a);
assert!(all_pass, "F003 FALSIFIED: All assertions should pass");
let assertions_with_failure = vec![true, false, true];
let has_failure = assertions_with_failure.iter().any(|&a| !a);
assert!(
has_failure,
"F003 FALSIFIED: Should detect middle assertion failure"
);
}
#[test]
fn f004_budget_non_zero() {
let budgets = [
("RmsNorm", 1.5),
("QkvBrick", 6.0),
("RoPE", 1.0),
("Attention", 10.0),
("OProj", 3.5),
("RmsNorm", 1.5),
("FfnBrick", 12.2),
];
for (name, budget) in budgets {
assert!(
budget > 0.0,
"F004 FALSIFIED: {} budget must be > 0, got {}",
name,
budget
);
}
}
#[test]
fn f005_unique_names_per_type() {
let brick_types = [
"RmsNorm",
"QkvBrick",
"RoPE",
"Attention",
"OProj",
"FfnBrick",
];
let mut seen = std::collections::HashSet::new();
for name in brick_types {
assert!(
seen.insert(name),
"F005 FALSIFIED: Duplicate brick type name: {}",
name
);
}
}
#[test]
fn f006_run_never_panics() {
let test_input_size = 512; let test_input: Vec<f32> = vec![0.0; test_input_size];
assert_eq!(
test_input.len(),
test_input_size,
"F006 FALSIFIED: Could not create valid test input"
);
}
#[test]
fn f007_type_safe_composition() {
let hidden_dim = 1536;
let input_dim = hidden_dim;
let output_dim = hidden_dim;
assert_eq!(
input_dim, output_dim,
"F007 FALSIFIED: Input/output dimension mismatch"
);
}
#[test]
fn f008_jidoka_budget_violation() {
let budget_us = 6.0;
let actual_us = 8.0;
let gap_factor = actual_us / budget_us;
let violation = gap_factor > 1.0;
assert!(
violation,
"F008 FALSIFIED: Budget violation not detected (gap={:.2}x)",
gap_factor
);
}
#[test]
fn f009_serializable_state() {
#[allow(dead_code)]
#[derive(Debug, Clone)]
struct BrickConfig {
name: String,
budget_us: f64,
hidden_dim: usize,
}
let config = BrickConfig {
name: "RmsNorm".to_string(),
budget_us: 1.5,
hidden_dim: 1536,
};
let restored = config.clone();
assert_eq!(
config.name, restored.name,
"F009 FALSIFIED: State not preserved after clone"
);
}
#[test]
fn f010_scalar_baseline_available() {
fn scalar_dot(a: &[f32], b: &[f32]) -> f32 {
a.iter().zip(b.iter()).map(|(x, y)| x * y).sum()
}
let a = vec![1.0, 2.0, 3.0];
let b = vec![4.0, 5.0, 6.0];
let result = scalar_dot(&a, &b);
assert!(
(result - 32.0).abs() < 1e-6,
"F010 FALSIFIED: Scalar baseline incorrect"
);
}
#[test]
fn f011_layer_budget_consistency() {
let brick_budgets = [1.5, 6.0, 1.0, 10.0, 3.5, 1.5, 12.2];
let layer_budget = 35.7;
let sum: f64 = brick_budgets.iter().sum();
assert!(
(sum - layer_budget).abs() < 0.1,
"F011 FALSIFIED: Layer budget {} != sum of bricks {:.1}",
layer_budget,
sum
);
}
#[test]
fn f012_throughput_formula() {
let layer_us = 35.7;
let num_layers = 28;
let total_us = layer_us * num_layers as f64;
let throughput = 1_000_000.0 / total_us;
let target = 976.0;
assert!(
(throughput - target).abs() < 100.0,
"F012 FALSIFIED: Throughput {:.0} far from target {:.0}",
throughput,
target
);
}
#[test]
fn f013_sample_history_for_cv() {
let samples = vec![1.0, 1.1, 0.9, 1.05, 0.95];
let n = samples.len() as f64;
let mean = samples.iter().sum::<f64>() / n;
let variance = samples.iter().map(|x| (x - mean).powi(2)).sum::<f64>() / (n - 1.0);
let std_dev = variance.sqrt();
let cv = (std_dev / mean) * 100.0;
assert!(
cv < 20.0, "F013 FALSIFIED: CV {:.2}% too high for reliable measurement",
cv
);
}
#[test]
fn f014_deterministic_assertions() {
let input: Vec<f32> = (0..100).map(|i| i as f32 * 0.1).collect();
let result1: f32 = input.iter().sum();
let result2: f32 = input.iter().sum();
assert!(
(result1 - result2).abs() < 1e-10,
"F014 FALSIFIED: Non-deterministic result"
);
}
#[test]
fn f015_nan_detection() {
let output = vec![1.0, 2.0, f32::NAN, 4.0];
let has_nan = output.iter().any(|x| x.is_nan());
assert!(has_nan, "F015 FALSIFIED: NaN not detected in output");
}
#[test]
fn f016_inf_detection() {
let output = vec![1.0, f32::INFINITY, 3.0, f32::NEG_INFINITY];
let has_inf = output.iter().any(|x| x.is_infinite());
assert!(has_inf, "F016 FALSIFIED: Inf not detected in output");
}
#[test]
fn f017_equivalence_tolerance() {
let expected = 1.0f32;
let actual = 1.0001f32;
let tolerance = 1e-3;
let within_tolerance = (expected - actual).abs() < tolerance;
assert!(
within_tolerance,
"F017 FALSIFIED: Reasonable difference exceeds tolerance"
);
}
#[test]
fn f018_flops_reporting() {
let hidden_dim = 1536;
let flops_per_token = hidden_dim * 3;
assert!(
flops_per_token > 0,
"F018 FALSIFIED: FLOPS must be positive"
);
}
#[test]
fn f019_memory_reporting() {
let hidden_dim = 1536;
let bytes_per_token = hidden_dim * 4 * 2;
assert!(
bytes_per_token > 0,
"F019 FALSIFIED: Memory bytes must be positive"
);
}
#[test]
fn f020_arithmetic_intensity() {
let flops = 4608; let bytes = 12288; let ai = flops as f64 / bytes as f64;
assert!(ai < 1.0, "F020 FALSIFIED: RMSNorm should be memory-bound");
}