()
| 342 | |
| 343 | #[test] |
| 344 | fn test_complex_nested_directives() { |
| 345 | let directive = parse_single_directive( |
| 346 | r#"@group( |
| 347 | @validate(min=1, max=10), |
| 348 | @format([1, 2, 3]), |
| 349 | @nested(@check(value=true)) |
| 350 | )"#, |
| 351 | ) |
| 352 | .unwrap(); |
| 353 | |
| 354 | assert_eq!(directive.name, "group"); |
| 355 | match directive.params { |
| 356 | DirectiveParams::Directives(directives) => { |
| 357 | assert_eq!(directives.len(), 3); |
| 358 | |
| 359 | // First nested directive |
| 360 | let validate = &directives[0]; |
| 361 | assert_eq!(validate.name, "validate"); |
| 362 | match &validate.params { |
| 363 | DirectiveParams::KeyValue(params) => { |
| 364 | assert_eq!(params.get("min").unwrap(), &json!(1)); |
| 365 | assert_eq!(params.get("max").unwrap(), &json!(10)); |
| 366 | } |
| 367 | _ => panic!("Expected KeyValue parameters for validate"), |
| 368 | } |
| 369 | |
| 370 | // Second nested directive |
| 371 | let format = &directives[1]; |
| 372 | assert_eq!(format.name, "format"); |
| 373 | match &format.params { |
| 374 | DirectiveParams::Array(values) => { |
| 375 | assert_eq!(values.len(), 3); |
| 376 | assert_eq!(values[0], json!(1)); |
| 377 | assert_eq!(values[1], json!(2)); |
| 378 | assert_eq!(values[2], json!(3)); |
| 379 | } |
| 380 | _ => panic!("Expected Array parameters for format"), |
| 381 | } |
| 382 | |
| 383 | // Third nested directive with its own nested directive |
| 384 | let nested = &directives[2]; |
| 385 | assert_eq!(nested.name, "nested"); |
| 386 | match &nested.params { |
| 387 | DirectiveParams::Directives(inner) => { |
| 388 | assert_eq!(inner.len(), 1); |
| 389 | let check = &inner[0]; |
| 390 | assert_eq!(check.name, "check"); |
| 391 | match &check.params { |
| 392 | DirectiveParams::KeyValue(params) => { |
| 393 | assert_eq!(params.get("value").unwrap(), &json!(true)); |
| 394 | } |
| 395 | _ => panic!("Expected KeyValue parameters for check"), |
| 396 | } |
| 397 | } |
| 398 | _ => panic!("Expected Directives parameters for nested"), |
| 399 | } |
| 400 | } |
| 401 | _ => panic!("Expected Directives parameters"), |
nothing calls this directly
no test coverage detected