/ cloudformation-templates / node_modules / aws-cdk / node_modules / jmespath / test / compliance / functions.json
functions.json
1 [{ 2 "given": 3 { 4 "foo": -1, 5 "zero": 0, 6 "numbers": [-1, 3, 4, 5], 7 "array": [-1, 3, 4, 5, "a", "100"], 8 "strings": ["a", "b", "c"], 9 "decimals": [1.01, 1.2, -1.5], 10 "str": "Str", 11 "false": false, 12 "empty_list": [], 13 "empty_hash": {}, 14 "objects": {"foo": "bar", "bar": "baz"}, 15 "null_key": null 16 }, 17 "cases": [ 18 { 19 "expression": "abs(foo)", 20 "result": 1 21 }, 22 { 23 "expression": "abs(foo)", 24 "result": 1 25 }, 26 { 27 "expression": "abs(str)", 28 "error": "invalid-type" 29 }, 30 { 31 "expression": "abs(array[1])", 32 "result": 3 33 }, 34 { 35 "expression": "abs(array[1])", 36 "result": 3 37 }, 38 { 39 "expression": "abs(`false`)", 40 "error": "invalid-type" 41 }, 42 { 43 "expression": "abs(`-24`)", 44 "result": 24 45 }, 46 { 47 "expression": "abs(`-24`)", 48 "result": 24 49 }, 50 { 51 "expression": "abs(`1`, `2`)", 52 "error": "invalid-arity" 53 }, 54 { 55 "expression": "abs()", 56 "error": "invalid-arity" 57 }, 58 { 59 "expression": "unknown_function(`1`, `2`)", 60 "error": "unknown-function" 61 }, 62 { 63 "expression": "avg(numbers)", 64 "result": 2.75 65 }, 66 { 67 "expression": "avg(array)", 68 "error": "invalid-type" 69 }, 70 { 71 "expression": "avg('abc')", 72 "error": "invalid-type" 73 }, 74 { 75 "expression": "avg(foo)", 76 "error": "invalid-type" 77 }, 78 { 79 "expression": "avg(@)", 80 "error": "invalid-type" 81 }, 82 { 83 "expression": "avg(strings)", 84 "error": "invalid-type" 85 }, 86 { 87 "expression": "ceil(`1.2`)", 88 "result": 2 89 }, 90 { 91 "expression": "ceil(decimals[0])", 92 "result": 2 93 }, 94 { 95 "expression": "ceil(decimals[1])", 96 "result": 2 97 }, 98 { 99 "expression": "ceil(decimals[2])", 100 "result": -1 101 }, 102 { 103 "expression": "ceil('string')", 104 "error": "invalid-type" 105 }, 106 { 107 "expression": "contains('abc', 'a')", 108 "result": true 109 }, 110 { 111 "expression": "contains('abc', 'd')", 112 "result": false 113 }, 114 { 115 "expression": "contains(`false`, 'd')", 116 "error": "invalid-type" 117 }, 118 { 119 "expression": "contains(strings, 'a')", 120 "result": true 121 }, 122 { 123 "expression": "contains(decimals, `1.2`)", 124 "result": true 125 }, 126 { 127 "expression": "contains(decimals, `false`)", 128 "result": false 129 }, 130 { 131 "expression": "ends_with(str, 'r')", 132 "result": true 133 }, 134 { 135 "expression": "ends_with(str, 'tr')", 136 "result": true 137 }, 138 { 139 "expression": "ends_with(str, 'Str')", 140 "result": true 141 }, 142 { 143 "expression": "ends_with(str, 'SStr')", 144 "result": false 145 }, 146 { 147 "expression": "ends_with(str, 'foo')", 148 "result": false 149 }, 150 { 151 "expression": "ends_with(str, `0`)", 152 "error": "invalid-type" 153 }, 154 { 155 "expression": "floor(`1.2`)", 156 "result": 1 157 }, 158 { 159 "expression": "floor('string')", 160 "error": "invalid-type" 161 }, 162 { 163 "expression": "floor(decimals[0])", 164 "result": 1 165 }, 166 { 167 "expression": "floor(foo)", 168 "result": -1 169 }, 170 { 171 "expression": "floor(str)", 172 "error": "invalid-type" 173 }, 174 { 175 "expression": "length('abc')", 176 "result": 3 177 }, 178 { 179 "expression": "length('✓foo')", 180 "result": 4 181 }, 182 { 183 "expression": "length('')", 184 "result": 0 185 }, 186 { 187 "expression": "length(@)", 188 "result": 12 189 }, 190 { 191 "expression": "length(strings[0])", 192 "result": 1 193 }, 194 { 195 "expression": "length(str)", 196 "result": 3 197 }, 198 { 199 "expression": "length(array)", 200 "result": 6 201 }, 202 { 203 "expression": "length(objects)", 204 "result": 2 205 }, 206 { 207 "expression": "length(`false`)", 208 "error": "invalid-type" 209 }, 210 { 211 "expression": "length(foo)", 212 "error": "invalid-type" 213 }, 214 { 215 "expression": "length(strings[0])", 216 "result": 1 217 }, 218 { 219 "expression": "max(numbers)", 220 "result": 5 221 }, 222 { 223 "expression": "max(decimals)", 224 "result": 1.2 225 }, 226 { 227 "expression": "max(strings)", 228 "result": "c" 229 }, 230 { 231 "expression": "max(abc)", 232 "error": "invalid-type" 233 }, 234 { 235 "expression": "max(array)", 236 "error": "invalid-type" 237 }, 238 { 239 "expression": "max(decimals)", 240 "result": 1.2 241 }, 242 { 243 "expression": "max(empty_list)", 244 "result": null 245 }, 246 { 247 "expression": "merge(`{}`)", 248 "result": {} 249 }, 250 { 251 "expression": "merge(`{}`, `{}`)", 252 "result": {} 253 }, 254 { 255 "expression": "merge(`{\"a\": 1}`, `{\"b\": 2}`)", 256 "result": {"a": 1, "b": 2} 257 }, 258 { 259 "expression": "merge(`{\"a\": 1}`, `{\"a\": 2}`)", 260 "result": {"a": 2} 261 }, 262 { 263 "expression": "merge(`{\"a\": 1, \"b\": 2}`, `{\"a\": 2, \"c\": 3}`, `{\"d\": 4}`)", 264 "result": {"a": 2, "b": 2, "c": 3, "d": 4} 265 }, 266 { 267 "expression": "min(numbers)", 268 "result": -1 269 }, 270 { 271 "expression": "min(decimals)", 272 "result": -1.5 273 }, 274 { 275 "expression": "min(abc)", 276 "error": "invalid-type" 277 }, 278 { 279 "expression": "min(array)", 280 "error": "invalid-type" 281 }, 282 { 283 "expression": "min(empty_list)", 284 "result": null 285 }, 286 { 287 "expression": "min(decimals)", 288 "result": -1.5 289 }, 290 { 291 "expression": "min(strings)", 292 "result": "a" 293 }, 294 { 295 "expression": "type('abc')", 296 "result": "string" 297 }, 298 { 299 "expression": "type(`1.0`)", 300 "result": "number" 301 }, 302 { 303 "expression": "type(`2`)", 304 "result": "number" 305 }, 306 { 307 "expression": "type(`true`)", 308 "result": "boolean" 309 }, 310 { 311 "expression": "type(`false`)", 312 "result": "boolean" 313 }, 314 { 315 "expression": "type(`null`)", 316 "result": "null" 317 }, 318 { 319 "expression": "type(`[0]`)", 320 "result": "array" 321 }, 322 { 323 "expression": "type(`{\"a\": \"b\"}`)", 324 "result": "object" 325 }, 326 { 327 "expression": "type(@)", 328 "result": "object" 329 }, 330 { 331 "expression": "sort(keys(objects))", 332 "result": ["bar", "foo"] 333 }, 334 { 335 "expression": "keys(foo)", 336 "error": "invalid-type" 337 }, 338 { 339 "expression": "keys(strings)", 340 "error": "invalid-type" 341 }, 342 { 343 "expression": "keys(`false`)", 344 "error": "invalid-type" 345 }, 346 { 347 "expression": "sort(values(objects))", 348 "result": ["bar", "baz"] 349 }, 350 { 351 "expression": "keys(empty_hash)", 352 "result": [] 353 }, 354 { 355 "expression": "values(foo)", 356 "error": "invalid-type" 357 }, 358 { 359 "expression": "join(', ', strings)", 360 "result": "a, b, c" 361 }, 362 { 363 "expression": "join(', ', strings)", 364 "result": "a, b, c" 365 }, 366 { 367 "expression": "join(',', `[\"a\", \"b\"]`)", 368 "result": "a,b" 369 }, 370 { 371 "expression": "join(',', `[\"a\", 0]`)", 372 "error": "invalid-type" 373 }, 374 { 375 "expression": "join(', ', str)", 376 "error": "invalid-type" 377 }, 378 { 379 "expression": "join('|', strings)", 380 "result": "a|b|c" 381 }, 382 { 383 "expression": "join(`2`, strings)", 384 "error": "invalid-type" 385 }, 386 { 387 "expression": "join('|', decimals)", 388 "error": "invalid-type" 389 }, 390 { 391 "expression": "join('|', decimals[].to_string(@))", 392 "result": "1.01|1.2|-1.5" 393 }, 394 { 395 "expression": "join('|', empty_list)", 396 "result": "" 397 }, 398 { 399 "expression": "reverse(numbers)", 400 "result": [5, 4, 3, -1] 401 }, 402 { 403 "expression": "reverse(array)", 404 "result": ["100", "a", 5, 4, 3, -1] 405 }, 406 { 407 "expression": "reverse(`[]`)", 408 "result": [] 409 }, 410 { 411 "expression": "reverse('')", 412 "result": "" 413 }, 414 { 415 "expression": "reverse('hello world')", 416 "result": "dlrow olleh" 417 }, 418 { 419 "expression": "starts_with(str, 'S')", 420 "result": true 421 }, 422 { 423 "expression": "starts_with(str, 'St')", 424 "result": true 425 }, 426 { 427 "expression": "starts_with(str, 'Str')", 428 "result": true 429 }, 430 { 431 "expression": "starts_with(str, 'String')", 432 "result": false 433 }, 434 { 435 "expression": "starts_with(str, `0`)", 436 "error": "invalid-type" 437 }, 438 { 439 "expression": "sum(numbers)", 440 "result": 11 441 }, 442 { 443 "expression": "sum(decimals)", 444 "result": 0.71 445 }, 446 { 447 "expression": "sum(array)", 448 "error": "invalid-type" 449 }, 450 { 451 "expression": "sum(array[].to_number(@))", 452 "result": 111 453 }, 454 { 455 "expression": "sum(`[]`)", 456 "result": 0 457 }, 458 { 459 "expression": "to_array('foo')", 460 "result": ["foo"] 461 }, 462 { 463 "expression": "to_array(`0`)", 464 "result": [0] 465 }, 466 { 467 "expression": "to_array(objects)", 468 "result": [{"foo": "bar", "bar": "baz"}] 469 }, 470 { 471 "expression": "to_array(`[1, 2, 3]`)", 472 "result": [1, 2, 3] 473 }, 474 { 475 "expression": "to_array(false)", 476 "result": [false] 477 }, 478 { 479 "expression": "to_string('foo')", 480 "result": "foo" 481 }, 482 { 483 "expression": "to_string(`1.2`)", 484 "result": "1.2" 485 }, 486 { 487 "expression": "to_string(`[0, 1]`)", 488 "result": "[0,1]" 489 }, 490 { 491 "expression": "to_number('1.0')", 492 "result": 1.0 493 }, 494 { 495 "expression": "to_number('1.1')", 496 "result": 1.1 497 }, 498 { 499 "expression": "to_number('4')", 500 "result": 4 501 }, 502 { 503 "expression": "to_number('notanumber')", 504 "result": null 505 }, 506 { 507 "expression": "to_number(`false`)", 508 "result": null 509 }, 510 { 511 "expression": "to_number(`null`)", 512 "result": null 513 }, 514 { 515 "expression": "to_number(`[0]`)", 516 "result": null 517 }, 518 { 519 "expression": "to_number(`{\"foo\": 0}`)", 520 "result": null 521 }, 522 { 523 "expression": "\"to_string\"(`1.0`)", 524 "error": "syntax" 525 }, 526 { 527 "expression": "sort(numbers)", 528 "result": [-1, 3, 4, 5] 529 }, 530 { 531 "expression": "sort(strings)", 532 "result": ["a", "b", "c"] 533 }, 534 { 535 "expression": "sort(decimals)", 536 "result": [-1.5, 1.01, 1.2] 537 }, 538 { 539 "expression": "sort(array)", 540 "error": "invalid-type" 541 }, 542 { 543 "expression": "sort(abc)", 544 "error": "invalid-type" 545 }, 546 { 547 "expression": "sort(empty_list)", 548 "result": [] 549 }, 550 { 551 "expression": "sort(@)", 552 "error": "invalid-type" 553 }, 554 { 555 "expression": "not_null(unknown_key, str)", 556 "result": "Str" 557 }, 558 { 559 "expression": "not_null(unknown_key, foo.bar, empty_list, str)", 560 "result": [] 561 }, 562 { 563 "expression": "not_null(unknown_key, null_key, empty_list, str)", 564 "result": [] 565 }, 566 { 567 "expression": "not_null(all, expressions, are_null)", 568 "result": null 569 }, 570 { 571 "expression": "not_null()", 572 "error": "invalid-arity" 573 }, 574 { 575 "description": "function projection on single arg function", 576 "expression": "numbers[].to_string(@)", 577 "result": ["-1", "3", "4", "5"] 578 }, 579 { 580 "description": "function projection on single arg function", 581 "expression": "array[].to_number(@)", 582 "result": [-1, 3, 4, 5, 100] 583 } 584 ] 585 }, { 586 "given": 587 { 588 "foo": [ 589 {"b": "b", "a": "a"}, 590 {"c": "c", "b": "b"}, 591 {"d": "d", "c": "c"}, 592 {"e": "e", "d": "d"}, 593 {"f": "f", "e": "e"} 594 ] 595 }, 596 "cases": [ 597 { 598 "description": "function projection on variadic function", 599 "expression": "foo[].not_null(f, e, d, c, b, a)", 600 "result": ["b", "c", "d", "e", "f"] 601 } 602 ] 603 }, { 604 "given": 605 { 606 "people": [ 607 {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, 608 {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, 609 {"age": 30, "age_str": "30", "bool": true, "name": "c"}, 610 {"age": 50, "age_str": "50", "bool": false, "name": "d"}, 611 {"age": 10, "age_str": "10", "bool": true, "name": 3} 612 ] 613 }, 614 "cases": [ 615 { 616 "description": "sort by field expression", 617 "expression": "sort_by(people, &age)", 618 "result": [ 619 {"age": 10, "age_str": "10", "bool": true, "name": 3}, 620 {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, 621 {"age": 30, "age_str": "30", "bool": true, "name": "c"}, 622 {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, 623 {"age": 50, "age_str": "50", "bool": false, "name": "d"} 624 ] 625 }, 626 { 627 "expression": "sort_by(people, &age_str)", 628 "result": [ 629 {"age": 10, "age_str": "10", "bool": true, "name": 3}, 630 {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, 631 {"age": 30, "age_str": "30", "bool": true, "name": "c"}, 632 {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, 633 {"age": 50, "age_str": "50", "bool": false, "name": "d"} 634 ] 635 }, 636 { 637 "description": "sort by function expression", 638 "expression": "sort_by(people, &to_number(age_str))", 639 "result": [ 640 {"age": 10, "age_str": "10", "bool": true, "name": 3}, 641 {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, 642 {"age": 30, "age_str": "30", "bool": true, "name": "c"}, 643 {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, 644 {"age": 50, "age_str": "50", "bool": false, "name": "d"} 645 ] 646 }, 647 { 648 "description": "function projection on sort_by function", 649 "expression": "sort_by(people, &age)[].name", 650 "result": [3, "a", "c", "b", "d"] 651 }, 652 { 653 "expression": "sort_by(people, &extra)", 654 "error": "invalid-type" 655 }, 656 { 657 "expression": "sort_by(people, &bool)", 658 "error": "invalid-type" 659 }, 660 { 661 "expression": "sort_by(people, &name)", 662 "error": "invalid-type" 663 }, 664 { 665 "expression": "sort_by(people, name)", 666 "error": "invalid-type" 667 }, 668 { 669 "expression": "sort_by(people, &age)[].extra", 670 "result": ["foo", "bar"] 671 }, 672 { 673 "expression": "sort_by(`[]`, &age)", 674 "result": [] 675 }, 676 { 677 "expression": "max_by(people, &age)", 678 "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} 679 }, 680 { 681 "expression": "max_by(people, &age_str)", 682 "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} 683 }, 684 { 685 "expression": "max_by(people, &bool)", 686 "error": "invalid-type" 687 }, 688 { 689 "expression": "max_by(people, &extra)", 690 "error": "invalid-type" 691 }, 692 { 693 "expression": "max_by(people, &to_number(age_str))", 694 "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} 695 }, 696 { 697 "expression": "min_by(people, &age)", 698 "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} 699 }, 700 { 701 "expression": "min_by(people, &age_str)", 702 "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} 703 }, 704 { 705 "expression": "min_by(people, &bool)", 706 "error": "invalid-type" 707 }, 708 { 709 "expression": "min_by(people, &extra)", 710 "error": "invalid-type" 711 }, 712 { 713 "expression": "min_by(people, &to_number(age_str))", 714 "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} 715 } 716 ] 717 }, { 718 "given": 719 { 720 "people": [ 721 {"age": 10, "order": "1"}, 722 {"age": 10, "order": "2"}, 723 {"age": 10, "order": "3"}, 724 {"age": 10, "order": "4"}, 725 {"age": 10, "order": "5"}, 726 {"age": 10, "order": "6"}, 727 {"age": 10, "order": "7"}, 728 {"age": 10, "order": "8"}, 729 {"age": 10, "order": "9"}, 730 {"age": 10, "order": "10"}, 731 {"age": 10, "order": "11"} 732 ] 733 }, 734 "cases": [ 735 { 736 "description": "stable sort order", 737 "expression": "sort_by(people, &age)", 738 "result": [ 739 {"age": 10, "order": "1"}, 740 {"age": 10, "order": "2"}, 741 {"age": 10, "order": "3"}, 742 {"age": 10, "order": "4"}, 743 {"age": 10, "order": "5"}, 744 {"age": 10, "order": "6"}, 745 {"age": 10, "order": "7"}, 746 {"age": 10, "order": "8"}, 747 {"age": 10, "order": "9"}, 748 {"age": 10, "order": "10"}, 749 {"age": 10, "order": "11"} 750 ] 751 } 752 ] 753 }, { 754 "given": 755 { 756 "people": [ 757 {"a": 10, "b": 1, "c": "z"}, 758 {"a": 10, "b": 2, "c": null}, 759 {"a": 10, "b": 3}, 760 {"a": 10, "b": 4, "c": "z"}, 761 {"a": 10, "b": 5, "c": null}, 762 {"a": 10, "b": 6}, 763 {"a": 10, "b": 7, "c": "z"}, 764 {"a": 10, "b": 8, "c": null}, 765 {"a": 10, "b": 9} 766 ], 767 "empty": [] 768 }, 769 "cases": [ 770 { 771 "expression": "map(&a, people)", 772 "result": [10, 10, 10, 10, 10, 10, 10, 10, 10] 773 }, 774 { 775 "expression": "map(&c, people)", 776 "result": ["z", null, null, "z", null, null, "z", null, null] 777 }, 778 { 779 "expression": "map(&a, badkey)", 780 "error": "invalid-type" 781 }, 782 { 783 "expression": "map(&foo, empty)", 784 "result": [] 785 } 786 ] 787 }, { 788 "given": { 789 "array": [ 790 { 791 "foo": {"bar": "yes1"} 792 }, 793 { 794 "foo": {"bar": "yes2"} 795 }, 796 { 797 "foo1": {"bar": "no"} 798 } 799 ]}, 800 "cases": [ 801 { 802 "expression": "map(&foo.bar, array)", 803 "result": ["yes1", "yes2", null] 804 }, 805 { 806 "expression": "map(&foo1.bar, array)", 807 "result": [null, null, "no"] 808 }, 809 { 810 "expression": "map(&foo.bar.baz, array)", 811 "result": [null, null, null] 812 } 813 ] 814 }, { 815 "given": { 816 "array": [[1, 2, 3, [4]], [5, 6, 7, [8, 9]]] 817 }, 818 "cases": [ 819 { 820 "expression": "map(&[], array)", 821 "result": [[1, 2, 3, 4], [5, 6, 7, 8, 9]] 822 } 823 ] 824 } 825 ]