!! 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}}} }} !! html0=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 }} !! htmlaaa
!! end !! test Test loop over object !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | | value | {{{value}}} }} !! htmlbarfar
!! end !! test Test loop over object with key !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | key | value | {{{key}}}={{{value}}} }} !! htmlfoo=barboo=far
!! end !! test Test loop over object without key or value !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | | | a }} !! htmlaa
!! end !! test Test loop over object with simple delimiter !! wikitext {{#af_foreach: {{#af_object: foo=bar | boo=far }} | key | value | {{{key}}}={{{value}}} | delimiter=! }} !! htmlfoo=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 }} !! htmlfoo=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 }} !! htmlfoo=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 | }} !! htmlArrayFunctions (#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 }} !! htmlArrayFunctions (#af_foreach): Expected at most 4 positional parameters, 5 given.
!! end