1# Tests for brace expansion
2
3%prep
4
5  foo=(a b c)
6  arr=(foo bar baz)
7
8%test
9
10  print X{1,2,{3..6},7,8}Y
110:Basic brace expansion
12>X1Y X2Y X3Y X4Y X5Y X6Y X7Y X8Y
13
14  print ${foo}{one,two,three}$arr
150:Brace expansion with arrays, no RC_EXPAND_PARAM
16>a b conefoo ctwofoo cthreefoo bar baz
17
18  print ${^foo}{one,two,three}$arr
190:Brace expansion with arrays, with RC_EXPAND_PARAM (1)
20>aonefoo atwofoo athreefoo bonefoo btwofoo bthreefoo conefoo ctwofoo cthreefoo bar baz
21
22  print ${foo}{one,two,three}$^arr
230:Brace expansion with arrays, with RC_EXPAND_PARAM (2)
24>a b conefoo ctwofoo cthreefoo conebar ctwobar cthreebar conebaz ctwobaz cthreebaz
25
26  print ${^foo}{one,two,three}$^arr
270:Brace expansion with arrays, with RC_EXPAND_PARAM (3)
28>aonefoo atwofoo athreefoo aonebar atwobar athreebar aonebaz atwobaz athreebaz bonefoo btwofoo bthreefoo bonebar btwobar bthreebar bonebaz btwobaz bthreebaz conefoo ctwofoo cthreefoo conebar ctwobar cthreebar conebaz ctwobaz cthreebaz
29
30  print X{01..4}Y
310:Numeric range expansion, padding (1)
32>X01Y X02Y X03Y X04Y
33
34  print X{1..04}Y
350:Numeric range expansion, padding (2)
36>X01Y X02Y X03Y X04Y
37
38  print X{7..12}Y
390:Numeric range expansion, padding (or not) (3)
40>X7Y X8Y X9Y X10Y X11Y X12Y
41
42  print X{07..12}Y
430:Numeric range expansion, padding (4)
44>X07Y X08Y X09Y X10Y X11Y X12Y
45
46  print X{7..012}Y
470:Numeric range expansion, padding (5)
48>X007Y X008Y X009Y X010Y X011Y X012Y
49
50  print X{4..1}Y
510:Numeric range expansion, decreasing
52>X4Y X3Y X2Y X1Y
53
54  print X{1..4}{1..4}Y
550:Numeric range expansion, combined braces
56>X11Y X12Y X13Y X14Y X21Y X22Y X23Y X24Y X31Y X32Y X33Y X34Y X41Y X42Y X43Y X44Y
57
58  print X{-4..4}Y
590:Numeric range expansion, negative numbers (1)
60>X-4Y X-3Y X-2Y X-1Y X0Y X1Y X2Y X3Y X4Y
61
62  print X{4..-4}Y
630:Numeric range expansion, negative numbers (2)
64>X4Y X3Y X2Y X1Y X0Y X-1Y X-2Y X-3Y X-4Y
65
66  print X{004..-4..2}Y
670:Numeric range expansion, stepping and padding (1)
68>X004Y X002Y X000Y X-02Y X-04Y
69
70  print X{4..-4..02}Y
710:Numeric range expansion, stepping and padding (1)
72>X04Y X02Y X00Y X-2Y X-4Y
73
74  print X{1..32..3}Y
750:Numeric range expansion, step alignment (1)
76>X1Y X4Y X7Y X10Y X13Y X16Y X19Y X22Y X25Y X28Y X31Y
77
78  print X{1..32..-3}Y
790:Numeric range expansion, step alignment (2)
80>X31Y X28Y X25Y X22Y X19Y X16Y X13Y X10Y X7Y X4Y X1Y
81
82  print X{32..1..3}Y
830:Numeric range expansion, step alignment (3)
84>X32Y X29Y X26Y X23Y X20Y X17Y X14Y X11Y X8Y X5Y X2Y
85
86  print X{32..1..-3}Y
870:Numeric range expansion, step alignment (4)
88>X2Y X5Y X8Y X11Y X14Y X17Y X20Y X23Y X26Y X29Y X32Y
89
90  setopt brace_ccl
91  print X{za-q521}Y
92  unsetopt brace_ccl
930:BRACE_CCL on
94>X1Y X2Y X5Y XaY XbY XcY XdY XeY XfY XgY XhY XiY XjY XkY XlY XmY XnY XoY XpY XqY XzY
95
96  print X{za-q521}Y
970:BRACE_CCL off
98>X{za-q521}Y
99
100