1#!./perl 2 3BEGIN { 4 require "test.pl"; 5} 6 7plan(36); 8 9@array = (1, 2, 3); 10$aref = [1, 2, 3]; 11 12no warnings 'experimental::autoderef'; 13{ 14 no warnings 'syntax'; 15 $count3 = unshift (@array); 16 $count3r = unshift ($aref); 17} 18is(join(' ',@array), '1 2 3', 'unshift null'); 19cmp_ok($count3, '==', 3, 'unshift count == 3'); 20is(join(' ',@$aref), '1 2 3', 'unshift null (ref)'); 21cmp_ok($count3r, '==', 3, 'unshift count == 3 (ref)'); 22 23 24$count3_2 = unshift (@array, ()); 25is(join(' ',@array), '1 2 3', 'unshift null empty'); 26cmp_ok($count3_2, '==', 3, 'unshift count == 3 again'); 27$count3_2r = unshift ($aref, ()); 28is(join(' ',@$aref), '1 2 3', 'unshift null empty (ref)'); 29cmp_ok($count3_2r, '==', 3, 'unshift count == 3 again (ref)'); 30 31$count4 = unshift (@array, 0); 32is(join(' ',@array), '0 1 2 3', 'unshift singleton list'); 33cmp_ok($count4, '==', 4, 'unshift count == 4'); 34$count4r = unshift ($aref, 0); 35is(join(' ',@$aref), '0 1 2 3', 'unshift singleton list (ref)'); 36cmp_ok($count4r, '==', 4, 'unshift count == 4 (ref)'); 37 38$count7 = unshift (@array, 3, 2, 1); 39is(join(' ',@array), '3 2 1 0 1 2 3', 'unshift list'); 40cmp_ok($count7, '==', 7, 'unshift count == 7'); 41$count7r = unshift ($aref, 3, 2, 1); 42is(join(' ',@$aref), '3 2 1 0 1 2 3', 'unshift list (ref)'); 43cmp_ok($count7r, '==', 7, 'unshift count == 7 (ref)'); 44 45@list = (5, 4); 46$count9 = unshift (@array, @list); 47is(join(' ',@array), '5 4 3 2 1 0 1 2 3', 'unshift array'); 48cmp_ok($count9, '==', 9, 'unshift count == 9'); 49$count9r = unshift ($aref, @list); 50is(join(' ',@$aref), '5 4 3 2 1 0 1 2 3', 'unshift array (ref)'); 51cmp_ok($count9r, '==', 9, 'unshift count == 9 (ref)'); 52 53 54@list = (7); 55@list2 = (6); 56$count11 = unshift (@array, @list, @list2); 57is(join(' ',@array), '7 6 5 4 3 2 1 0 1 2 3', 'unshift arrays'); 58cmp_ok($count11, '==', 11, 'unshift count == 11'); 59$count11r = unshift ($aref, @list, @list2); 60is(join(' ',@$aref), '7 6 5 4 3 2 1 0 1 2 3', 'unshift arrays (ref)'); 61cmp_ok($count11r, '==', 11, 'unshift count == 11 (ref)'); 62 63# ignoring counts 64@alpha = ('y', 'z'); 65$alpharef = ['y', 'z']; 66 67{ 68 no warnings 'syntax'; 69 unshift (@alpha); 70 unshift ($alpharef); 71} 72is(join(' ',@alpha), 'y z', 'void unshift null'); 73is(join(' ',@$alpharef), 'y z', 'void unshift null (ref)'); 74 75unshift (@alpha, ()); 76is(join(' ',@alpha), 'y z', 'void unshift null empty'); 77unshift ($alpharef, ()); 78is(join(' ',@$alpharef), 'y z', 'void unshift null empty (ref)'); 79 80unshift (@alpha, 'x'); 81is(join(' ',@alpha), 'x y z', 'void unshift singleton list'); 82unshift ($alpharef, 'x'); 83is(join(' ',@$alpharef), 'x y z', 'void unshift singleton list (ref)'); 84 85unshift (@alpha, 'u', 'v', 'w'); 86is(join(' ',@alpha), 'u v w x y z', 'void unshift list'); 87unshift ($alpharef, 'u', 'v', 'w'); 88is(join(' ',@$alpharef), 'u v w x y z', 'void unshift list (ref)'); 89 90@bet = ('s', 't'); 91unshift (@alpha, @bet); 92is(join(' ',@alpha), 's t u v w x y z', 'void unshift array'); 93unshift ($alpharef, @bet); 94is(join(' ',@$alpharef), 's t u v w x y z', 'void unshift array (ref)'); 95 96@bet = ('q'); 97@gimel = ('r'); 98unshift (@alpha, @bet, @gimel); 99is(join(' ',@alpha), 'q r s t u v w x y z', 'void unshift arrays'); 100unshift ($alpharef, @bet, @gimel); 101is(join(' ',@$alpharef), 'q r s t u v w x y z', 'void unshift arrays (ref)'); 102 103