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