!! Version 2
# Force the test runner to ensure the extension is loaded
!! functionhooks
af_range
!! endfunctionhooks
# This file tests the #af_range parser function
!! test
Test only start
!! wikitext
{{#af_print: {{#af_range: 3 }} }}
!! html
!! end
!! test
Test only start zero
!! wikitext
{{#af_print: {{#af_range: 0 }} }}
!! html
!! end
!! test
Test only start one
!! wikitext
{{#af_print: {{#af_range: 1 }} }}
!! html
!! end
!! test
Test only start minus one
!! wikitext
{{#af_print: {{#af_range: -1 }} }}
!! html
!! end
!! test
Test start and stop
!! wikitext
{{#af_print: {{#af_range: 5 | 8 }} }}
!! html
!! end
!! test
Test start equal to stop
!! wikitext
{{#af_print: {{#af_range: 5 | 5 }} }}
!! html
!! end
!! test
Test start greater than stop
!! wikitext
{{#af_print: {{#af_range: 5 | 2 }} }}
!! html
!! end
!! test
Test start greater than stop, negative step
!! wikitext
{{#af_print: {{#af_range: 5 | 2 | -1 }} }}
!! html
!! end
!! test
Test start and step
!! wikitext
{{#af_print: {{#af_range: 10 | | 5 }} }}
!! html
!! end
!! test
Test zero step
!! wikitext
{{#af_range: 0 | 10 | 0 }}
!! html
ArrayFunctions (#af_range): The step size cannot be 0.
!! end
!! test
Test step larger than range both positive
!! wikitext
{{#af_print: {{#af_range: 0 | 5 | 10 }} }}
!! html
!! end
!! test
Test step larger than range both negative
!! wikitext
{{#af_print: {{#af_range: 0 | -5 | -10 }} }}
!! html
!! end
!! test
Test step larger than range positive range negative step
!! wikitext
{{#af_print: {{#af_range: 0 | 5 | -10 }} }}
!! html
!! end
!! test
Test step larger than range negative range positive step
!! wikitext
{{#af_print: {{#af_range: 0 | -5 | 10 }} }}
!! html
!! end
!! test
Test custom step with start and stop
!! wikitext
{{#af_print: {{#af_range: 1 | 10 | 2 }} }}
!! html
!! end
!! test
Start equal to stop, positive step
!! wikitext
{{#af_print: {{#af_range: 0 | 0 | 1 }} }}
!! html
!! end
!! test
Start equal to stop, negative step
!! wikitext
{{#af_print: {{#af_range: 0 | 0 | -1 }} }}
!! html
!! end
!! test
Test negative start and negative stop
!! wikitext
{{#af_print: {{#af_range: -5 | -2 }} }}
!! html
!! end
!! test
Test negative start, negative stop, and negative step
!! wikitext
{{#af_print: {{#af_range: -1 | -5 | -1 }} }}
!! html
!! end
!! test
Test negative start, positive stop
!! wikitext
{{#af_print: {{#af_range: -3 | 3 }} }}
!! html
- 0: -3
- 1: -2
- 2: -1
- 3: 0
- 4: 1
- 5: 2
!! end
!! test
Test negative start, positive stop, and step of 2
!! wikitext
{{#af_print: {{#af_range: -4 | 4 | 2 }} }}
!! html
!! end
!! test
Test stop greater than start with negative step
!! wikitext
{{#af_print: {{#af_range: 2 | 5 | -1 }} }}
!! html
!! end
!! test
Test large range
!! wikitext
{{#af_print: {{#af_range: 0 | 20 | 5 }} }}
!! html
!! end
!! test
Test range with step of 1 (default)
!! wikitext
{{#af_print: {{#af_range: 2 | 5 }} }}
!! html
!! end
!! test
Test range with single value input as stop
!! wikitext
{{#af_print: {{#af_range: 4 }} }}
!! html
!! end
!! test
Test start and stop both negative with positive step
!! wikitext
{{#af_print: {{#af_range: -7 | -3 | 2 }} }}
!! html
!! end
!! test
Test empty range with invalid step direction
!! wikitext
{{#af_print: {{#af_range: 5 | 10 | -1 }} }}
!! html
!! end
!! test
Test large negative range with positive step
!! wikitext
{{#af_print: {{#af_range: -20 | -10 | 3 }} }}
!! html
- 0: -20
- 1: -17
- 2: -14
- 3: -11
!! end
!! test
Test large negative range with negative step
!! wikitext
{{#af_print: {{#af_range: -10 | -20 | -2 }} }}
!! html
- 0: -10
- 1: -12
- 2: -14
- 3: -16
- 4: -18
!! end
!! test
Test zero as both start and stop
!! wikitext
{{#af_print: {{#af_range: 0 | 0 }} }}
!! html
!! end
!! test
Test range with single negative number as stop
!! wikitext
{{#af_print: {{#af_range: -3 }} }}
!! html
!! end
!! test
Test negative start and positive stop with negative step
!! wikitext
{{#af_print: {{#af_range: -5 | 5 | -2 }} }}
!! html
!! end
!! test
Test step larger than range for mixed signs
!! wikitext
{{#af_print: {{#af_range: -2 | 3 | 10 }} }}
!! html
!! end
!! test
Test range with no step specified (default step = 1)
!! wikitext
{{#af_print: {{#af_range: 7 | 10 }} }}
!! html
!! end
!! test
Test single value input as stop with step of 2
!! wikitext
{{#af_print: {{#af_range: 6 | | 2 }} }}
!! html
!! end
!! test
Test large positive range
!! wikitext
{{#af_print: {{#af_range: 100 | 110 | 2 }} }}
!! html
- 0: 100
- 1: 102
- 2: 104
- 3: 106
- 4: 108
!! end
!! test
Test invalid range where step is negative and start < stop
!! wikitext
{{#af_print: {{#af_range: 1 | 5 | -1 }} }}
!! html
!! end