...

Text file src/github.com/jmespath/go-jmespath/compliance/functions.json

Documentation: github.com/jmespath/go-jmespath/compliance

     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]

View as plain text