use super::super::analyze_nesting_depth;
#[test]
fn nesting_empty_content() {
let result = analyze_nesting_depth("", "rust");
assert_eq!(result.max_depth, 0);
assert_eq!(result.avg_depth, 0.0);
assert!(result.max_depth_lines.is_empty());
}
#[test]
fn nesting_rust_no_braces() {
let code = "let x = 5;";
let result = analyze_nesting_depth(code, "rust");
assert_eq!(result.max_depth, 0);
}
#[test]
fn nesting_rust_simple_function() {
let code = r#"
fn main() {
println!("Hello");
}
"#;
let result = analyze_nesting_depth(code, "rust");
assert_eq!(result.max_depth, 1);
}
#[test]
fn nesting_rust_nested_blocks() {
let code = r#"
fn main() {
if true {
for i in 0..10 {
println!("{}", i);
}
}
}
"#;
let result = analyze_nesting_depth(code, "rust");
assert!(
result.max_depth >= 3 && result.max_depth <= 4,
"Expected max_depth 3-4, got {}",
result.max_depth
);
}
#[test]
fn nesting_rust_deeply_nested() {
let code = r#"
fn deep() {
if true {
if true {
if true {
if true {
if true {
println!("deep");
}
}
}
}
}
}
"#;
let result = analyze_nesting_depth(code, "rust");
assert_eq!(result.max_depth, 6);
assert!(!result.max_depth_lines.is_empty());
}
#[test]
fn nesting_python_simple() {
let code = r#"
def main():
print("Hello")
"#;
let result = analyze_nesting_depth(code, "python");
assert_eq!(result.max_depth, 1);
}
#[test]
fn nesting_python_nested() {
let code = r#"
def main():
if True:
for i in range(10):
print(i)
"#;
let result = analyze_nesting_depth(code, "python");
assert_eq!(result.max_depth, 3);
}
#[test]
fn nesting_js_nested() {
let code = r#"
function main() {
if (true) {
for (let i = 0; i < 10; i++) {
console.log(i);
}
}
}
"#;
let result = analyze_nesting_depth(code, "javascript");
assert_eq!(result.max_depth, 3);
}
#[test]
fn nesting_go_nested() {
let code = r#"
func main() {
if true {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
}
"#;
let result = analyze_nesting_depth(code, "go");
assert_eq!(result.max_depth, 3);
}
#[test]
fn nesting_average_calculation() {
let code = r#"
fn main() {
let a = 1;
if true {
let b = 2;
}
}
"#;
let result = analyze_nesting_depth(code, "rust");
assert!(result.avg_depth > 0.0);
}
#[test]
fn nesting_max_depth_lines_tracked() {
let code = r#"
fn main() {
if true {
for i in 0..10 {
println!("{}", i);
}
}
}
"#;
let result = analyze_nesting_depth(code, "rust");
assert!(
result.max_depth >= 3,
"Expected max_depth >= 3, got {}",
result.max_depth
);
assert!(!result.max_depth_lines.is_empty());
}