!! Version 2 # Force the test runner to ensure the extension is loaded !! functionhooks af_keysort !! endfunctionhooks # This file tests the #af_keysort parser function !! test Test empty array !! wikitext {{#af_print: {{#af_keysort: {{AF_EMPTY}} | foo }} }} !! html !! end !! test Test keysort on list does not change !! wikitext {{#af_print: {{#af_keysort: {{#af_list: a | c | b }} | foo }} }} !! html !! end !! test Test keysort on list does not change numeric key !! wikitext {{#af_print: {{#af_keysort: {{#af_list: a | c | b }} | 0 }} }} !! html !! end !! test Test keysort mixed objects and values !! wikitext {{#af_print: {{#af_keysort: {{#af_list: {{#af_object: name=John | age=56 }} | foo | {{#af_object: name=Harry | age=12 }} | {{#af_object: name=Bob | age=24 }} | bar }} | age }} }} !! html !! end !! test Test keysort resets keys !! wikitext {{#af_print: {{#af_keysort: {{#af_list: {{#af_object: name=John | age=56 }} | {{#af_object: name=Harry | age=12 }} | {{#af_object: name=Bob | age=24 }} }} | age }} }} !! html !! end !! test Test keysort missing key is less !! wikitext {{#af_print: {{#af_keysort: {{#af_list: {{#af_object: name=John | age=56 }} | {{#af_object: name=Harry }} | {{#af_object: name=Bob | age=24 }} }} | age }} }} !! html !! end !! test Test keysort missing is less than zero missing !! wikitext {{#af_print: {{#af_keysort: {{#af_list: {{#af_object: name=John | age=56 }} | {{#af_object: name=Harry | age=0 }} | {{#af_object: name=Bob }} }} | age }} }} !! html !! end !! test Test keysort descending !! wikitext {{#af_print: {{#af_keysort: {{#af_list: {{#af_object: name=John | age=56 }} | {{#af_object: name=Harry | age=12 }} | {{#af_object: name=Bob | age=24 }} }} | age | descending=true }} }} !! html !! end !! test Test keysort case insensitive !! wikitext {{#af_print: {{#af_keysort: {{#af_list: {{#af_object: name=b }} | {{#af_object: name=B }} | {{#af_object: name=b }} | {{#af_object: name=a }} | {{#af_object: name=A }} | {{#af_object: name=C }} }} | name | caseinsensitive=true }} }} !! html !! end !! test Test too few arguments !! wikitext {{#af_keysort: {{#af_list: a | b | c }} }} !! html

ArrayFunctions (#af_keysort): Expected at least 2 positional parameters, 1 given.

!! end !! test Test too many arguments !! wikitext {{#af_keysort: {{#af_list: a | b | c }} | a | b }} !! html

ArrayFunctions (#af_keysort): Expected at most 2 positional parameters, 3 given.

!! end !! test Test first argument must be array !! wikitext {{#af_keysort: foobar | a }} !! html

ArrayFunctions (#af_keysort): Could not match expected type array with actual type string for parameter 1 ("foobar").

!! end