test: use generic category name in formula parser tests

Replace "Measure" with "Foo" as target_category in formula parser
tests so they don't depend on a specific category name convention.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Executed-By: spot
This commit is contained in:
Edward Langley
2026-04-09 02:59:22 -07:00
parent 07c8f4a40a
commit 1690fc317b

View File

@ -464,15 +464,15 @@ mod tests {
#[test]
fn parse_simple_subtraction() {
let f = parse_formula("Profit = Revenue - Cost", "Measure").unwrap();
let f = parse_formula("Profit = Revenue - Cost", "Foo").unwrap();
assert_eq!(f.target, "Profit");
assert_eq!(f.target_category, "Measure");
assert_eq!(f.target_category, "Foo");
assert!(matches!(f.expr, Expr::BinOp(BinOp::Sub, _, _)));
}
#[test]
fn parse_where_clause() {
let f = parse_formula("EastRev = Revenue WHERE Region = \"East\"", "Measure").unwrap();
let f = parse_formula("EastRev = Revenue WHERE Region = \"East\"", "Foo").unwrap();
assert_eq!(f.target, "EastRev");
let filter = f.filter.as_ref().unwrap();
assert_eq!(filter.category, "Region");
@ -481,25 +481,25 @@ mod tests {
#[test]
fn parse_sum_aggregation() {
let f = parse_formula("Total = SUM(Revenue)", "Measure").unwrap();
let f = parse_formula("Total = SUM(Revenue)", "Foo").unwrap();
assert!(matches!(f.expr, Expr::Agg(AggFunc::Sum, _, _)));
}
#[test]
fn parse_avg_aggregation() {
let f = parse_formula("Avg = AVG(Revenue)", "Measure").unwrap();
let f = parse_formula("Avg = AVG(Revenue)", "Foo").unwrap();
assert!(matches!(f.expr, Expr::Agg(AggFunc::Avg, _, _)));
}
#[test]
fn parse_if_expression() {
let f = parse_formula("Capped = IF(Revenue > 1000, 1000, Revenue)", "Measure").unwrap();
let f = parse_formula("Capped = IF(Revenue > 1000, 1000, Revenue)", "Foo").unwrap();
assert!(matches!(f.expr, Expr::If(_, _, _)));
}
#[test]
fn parse_numeric_literal() {
let f = parse_formula("Fixed = 42", "Measure").unwrap();
let f = parse_formula("Fixed = 42", "Foo").unwrap();
assert!(matches!(f.expr, Expr::Number(n) if (n - 42.0).abs() < 1e-10));
}
@ -517,19 +517,19 @@ mod tests {
#[test]
fn parse_min_aggregation() {
let f = parse_formula("Lo = MIN(Revenue)", "Measure").unwrap();
let f = parse_formula("Lo = MIN(Revenue)", "Foo").unwrap();
assert!(matches!(f.expr, Expr::Agg(AggFunc::Min, _, _)));
}
#[test]
fn parse_max_aggregation() {
let f = parse_formula("Hi = MAX(Revenue)", "Measure").unwrap();
let f = parse_formula("Hi = MAX(Revenue)", "Foo").unwrap();
assert!(matches!(f.expr, Expr::Agg(AggFunc::Max, _, _)));
}
#[test]
fn parse_count_aggregation() {
let f = parse_formula("N = COUNT(Revenue)", "Measure").unwrap();
let f = parse_formula("N = COUNT(Revenue)", "Foo").unwrap();
assert!(matches!(f.expr, Expr::Agg(AggFunc::Count, _, _)));
}
@ -539,7 +539,7 @@ mod tests {
fn parse_sum_with_top_level_where_works() {
let f = parse_formula(
"EastTotal = SUM(Revenue) WHERE Region = \"East\"",
"Measure",
"Foo",
)
.unwrap();
assert!(matches!(f.expr, Expr::Agg(AggFunc::Sum, _, _)));
@ -554,7 +554,7 @@ mod tests {
fn parse_sum_with_inline_where_filter() {
let f = parse_formula(
"EastTotal = SUM(Revenue WHERE Region = \"East\")",
"Measure",
"Foo",
)
.unwrap();
if let Expr::Agg(AggFunc::Sum, inner, Some(filter)) = &f.expr {
@ -592,7 +592,7 @@ mod tests {
#[test]
fn parse_where_with_quoted_string_inside_expression() {
// WHERE inside a formula string with quotes
let f = parse_formula("X = Revenue WHERE Region = \"West Coast\"", "Measure").unwrap();
let f = parse_formula("X = Revenue WHERE Region = \"West Coast\"", "Foo").unwrap();
let filter = f.filter.as_ref().unwrap();
assert_eq!(filter.item, "West Coast");
}
@ -609,7 +609,7 @@ mod tests {
#[test]
fn parse_unary_minus() {
let f = parse_formula("Neg = -Revenue", "Measure").unwrap();
let f = parse_formula("Neg = -Revenue", "Foo").unwrap();
assert!(matches!(f.expr, Expr::UnaryMinus(_)));
}
@ -617,13 +617,13 @@ mod tests {
#[test]
fn parse_multiplication() {
let f = parse_formula("Double = Revenue * 2", "Measure").unwrap();
let f = parse_formula("Double = Revenue * 2", "Foo").unwrap();
assert!(matches!(f.expr, Expr::BinOp(BinOp::Mul, _, _)));
}
#[test]
fn parse_division() {
let f = parse_formula("Half = Revenue / 2", "Measure").unwrap();
let f = parse_formula("Half = Revenue / 2", "Foo").unwrap();
assert!(matches!(f.expr, Expr::BinOp(BinOp::Div, _, _)));
}
@ -701,7 +701,7 @@ mod tests {
#[test]
fn parse_multi_word_identifier() {
let f = parse_formula("Total Revenue = Base Revenue + Bonus", "Measure").unwrap();
let f = parse_formula("Total Revenue = Base Revenue + Bonus", "Foo").unwrap();
assert_eq!(f.target, "Total Revenue");
}
@ -710,7 +710,7 @@ mod tests {
#[test]
fn split_where_ignores_where_inside_quotes() {
// WHERE inside quotes should not be treated as a keyword
let f = parse_formula("X = Revenue WHERE Region = \"WHERE\"", "Measure").unwrap();
let f = parse_formula("X = Revenue WHERE Region = \"WHERE\"", "Foo").unwrap();
let filter = f.filter.as_ref().unwrap();
assert_eq!(filter.item, "WHERE");
}
@ -719,7 +719,7 @@ mod tests {
#[test]
fn pipe_quoted_identifier_in_expression() {
let f = parse_formula("|Total Revenue| = |Base Revenue| + Bonus", "Measure").unwrap();
let f = parse_formula("|Total Revenue| = |Base Revenue| + Bonus", "Foo").unwrap();
assert_eq!(f.target, "|Total Revenue|");
if let Expr::BinOp(BinOp::Add, lhs, rhs) = &f.expr {
assert!(matches!(**lhs, Expr::Ref(ref s) if s == "Base Revenue"));
@ -765,7 +765,7 @@ mod tests {
#[test]
fn pipe_quoted_in_where_filter_value() {
let f = parse_formula("X = Revenue WHERE Region = |East Coast|", "Measure").unwrap();
let f = parse_formula("X = Revenue WHERE Region = |East Coast|", "Foo").unwrap();
let filter = f.filter.as_ref().unwrap();
assert_eq!(filter.item, "East Coast");
}
@ -774,7 +774,7 @@ mod tests {
fn pipe_quoted_in_inline_where() {
let f = parse_formula(
"X = SUM(Revenue WHERE |Region Name| = |East Coast|)",
"Measure",
"Foo",
)
.unwrap();
if let Expr::Agg(AggFunc::Sum, _, Some(filter)) = &f.expr {