MCPcopy Create free account
hub / github.com/aiscriptdev/aiscript / test_complex_nested_directives

Function test_complex_nested_directives

aiscript-directive/src/lib.rs:344–403  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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"),

Callers

nothing calls this directly

Calls 1

parse_single_directiveFunction · 0.85

Tested by

no test coverage detected