!! Version 2 # Force the test runner to ensure the extension is loaded !! functionhooks af_foreach !! endfunctionhooks # This file tests the #af_foreach parser function !! test Test loop over simple list !! wikitext {{#af_foreach: {{#af_list: a | b | c }} | | value | {{{value}}} }} !! html

abc

!! end !! test Test loop over simple list with key !! wikitext {{#af_foreach: {{#af_list: a | b | c }} | key | value | {{{key}}}={{{value}}} }} !! html

0=a1=b2=c

!! end !! test Test loop over empty list !! wikitext {{#af_foreach: {{AF_EMPTY}} | key | value | {{{value}}} }} !! html !! end !! test Test loop without key or value !! wikitext {{#af_foreach: {{#af_list: a | b | c }} | | | a }} !! html

aaa

!! end !! test Test loop over object !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | | value | {{{value}}} }} !! html

barfar

!! end !! test Test loop over object with key !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | key | value | {{{key}}}={{{value}}} }} !! html

foo=barboo=far

!! end !! test Test loop over object without key or value !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | | | a }} !! html

aa

!! end !! test Test loop over object with simple delimiter !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | key | value | {{{key}}}={{{value}}} | delimiter=! }} !! html

foo=bar!boo=far

!! end !! test Test loop over object with escape sequence !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | key | value | {{{key}}}={{{value}}} | delimiter=\n }} !! html

foo=bar boo=far

!! end !! test Test loop over object with escape sequence 2 !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | key | value | {{{key}}}={{{value}}} | delimiter=\s }} !! html

foo=bar boo=far

!! end !! test Test no body !! wikitext {{#af_foreach: {{#af_list: a | b | c }} | key | value }} !! html !! end !! test Test no value !! wikitext {{#af_foreach: {{#af_list: a | b | c }} | key }} !! html !! end !! test Test no key !! wikitext {{#af_foreach: {{#af_list: a | b | c }} }} !! html !! end !! test Test first parameter must be an array !! wikitext {{#af_foreach: foobar | key | value | }} !! html

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

!! end !! test Test too many arguments !! wikitext {{#af_foreach: {{#af_list: a | b | c }} | key | value | body | more }} !! html

ArrayFunctions (#af_foreach): Expected at most 4 positional parameters, 5 given.

!! end