1 | #!./perl -w
|
---|
2 |
|
---|
3 | BEGIN {
|
---|
4 | chdir 't' if -d 't';
|
---|
5 | @INC = qw(../lib .);
|
---|
6 | require "test.pl";
|
---|
7 | }
|
---|
8 |
|
---|
9 | plan tests => 52;
|
---|
10 |
|
---|
11 | $a = "B\x{fc}f";
|
---|
12 | $b = "G\x{100}r";
|
---|
13 | $c = 0x200;
|
---|
14 |
|
---|
15 | {
|
---|
16 | my $s = sprintf "%s", $a;
|
---|
17 | is($s, $a, "%s a");
|
---|
18 | }
|
---|
19 |
|
---|
20 | {
|
---|
21 | my $s = sprintf "%s", $b;
|
---|
22 | is($s, $b, "%s b");
|
---|
23 | }
|
---|
24 |
|
---|
25 | {
|
---|
26 | my $s = sprintf "%s%s", $a, $b;
|
---|
27 | is($s, $a.$b, "%s%s a b");
|
---|
28 | }
|
---|
29 |
|
---|
30 | {
|
---|
31 | my $s = sprintf "%s%s", $b, $a;
|
---|
32 | is($s, $b.$a, "%s%s b a");
|
---|
33 | }
|
---|
34 |
|
---|
35 | {
|
---|
36 | my $s = sprintf "%s%s", $b, $b;
|
---|
37 | is($s, $b.$b, "%s%s b b");
|
---|
38 | }
|
---|
39 |
|
---|
40 | {
|
---|
41 | my $s = sprintf "%s$b", $a;
|
---|
42 | is($s, $a.$b, "%sb a");
|
---|
43 | }
|
---|
44 |
|
---|
45 | {
|
---|
46 | my $s = sprintf "$b%s", $a;
|
---|
47 | is($s, $b.$a, "b%s a");
|
---|
48 | }
|
---|
49 |
|
---|
50 | {
|
---|
51 | my $s = sprintf "%s$a", $b;
|
---|
52 | is($s, $b.$a, "%sa b");
|
---|
53 | }
|
---|
54 |
|
---|
55 | {
|
---|
56 | my $s = sprintf "$a%s", $b;
|
---|
57 | is($s, $a.$b, "a%s b");
|
---|
58 | }
|
---|
59 |
|
---|
60 | {
|
---|
61 | my $s = sprintf "$a%s", $a;
|
---|
62 | is($s, $a.$a, "a%s a");
|
---|
63 | }
|
---|
64 |
|
---|
65 | {
|
---|
66 | my $s = sprintf "$b%s", $b;
|
---|
67 | is($s, $b.$b, "a%s b");
|
---|
68 | }
|
---|
69 |
|
---|
70 | {
|
---|
71 | my $s = sprintf "%c", $c;
|
---|
72 | is($s, chr($c), "%c c");
|
---|
73 | }
|
---|
74 |
|
---|
75 | {
|
---|
76 | my $s = sprintf "%s%c", $a, $c;
|
---|
77 | is($s, $a.chr($c), "%s%c a c");
|
---|
78 | }
|
---|
79 |
|
---|
80 | {
|
---|
81 | my $s = sprintf "%c%s", $c, $a;
|
---|
82 | is($s, chr($c).$a, "%c%s c a");
|
---|
83 | }
|
---|
84 |
|
---|
85 | {
|
---|
86 | my $s = sprintf "%c$b", $c;
|
---|
87 | is($s, chr($c).$b, "%cb c");
|
---|
88 | }
|
---|
89 |
|
---|
90 | {
|
---|
91 | my $s = sprintf "%s%c$b", $a, $c;
|
---|
92 | is($s, $a.chr($c).$b, "%s%cb a c");
|
---|
93 | }
|
---|
94 |
|
---|
95 | {
|
---|
96 | my $s = sprintf "%c%s$b", $c, $a;
|
---|
97 | is($s, chr($c).$a.$b, "%c%sb c a");
|
---|
98 | }
|
---|
99 |
|
---|
100 | {
|
---|
101 | my $s = sprintf "$b%c", $c;
|
---|
102 | is($s, $b.chr($c), "b%c c");
|
---|
103 | }
|
---|
104 |
|
---|
105 | {
|
---|
106 | my $s = sprintf "$b%s%c", $a, $c;
|
---|
107 | is($s, $b.$a.chr($c), "b%s%c a c");
|
---|
108 | }
|
---|
109 |
|
---|
110 | {
|
---|
111 | my $s = sprintf "$b%c%s", $c, $a;
|
---|
112 | is($s, $b.chr($c).$a, "b%c%s c a");
|
---|
113 | }
|
---|
114 |
|
---|
115 | {
|
---|
116 | # 20010407.008 sprintf removes utf8-ness
|
---|
117 | $a = sprintf "\x{1234}";
|
---|
118 | is((sprintf "%x %d", unpack("U*", $a), length($a)), "1234 1",
|
---|
119 | '\x{1234}');
|
---|
120 | $a = sprintf "%s", "\x{5678}";
|
---|
121 | is((sprintf "%x %d", unpack("U*", $a), length($a)), "5678 1",
|
---|
122 | '%s \x{5678}');
|
---|
123 | $a = sprintf "\x{1234}%s", "\x{5678}";
|
---|
124 | is((sprintf "%x %x %d", unpack("U*", $a), length($a)), "1234 5678 2",
|
---|
125 | '\x{1234}%s \x{5678}');
|
---|
126 | }
|
---|
127 |
|
---|
128 | {
|
---|
129 | # check that utf8ness doesn't "accumulate"
|
---|
130 |
|
---|
131 | my $w = "w\x{fc}";
|
---|
132 | my $sprintf;
|
---|
133 |
|
---|
134 | $sprintf = sprintf "%s%s", $w, "$w\x{100}";
|
---|
135 | is(substr($sprintf,0,2), $w, "utf8 echo");
|
---|
136 |
|
---|
137 | $sprintf = sprintf "%s%s", $w, "$w\x{100}";
|
---|
138 | is(substr($sprintf,0,2), $w, "utf8 echo echo");
|
---|
139 | }
|
---|
140 |
|
---|
141 | my @values =(chr 110, chr 255, chr 256);
|
---|
142 |
|
---|
143 | foreach my $prefix (@values) {
|
---|
144 | foreach my $vector (map {$_ . $_} @values) {
|
---|
145 |
|
---|
146 | my $format = "$prefix%*vd";
|
---|
147 |
|
---|
148 | foreach my $dot (@values) {
|
---|
149 | my $result = sprintf $format, $dot, $vector;
|
---|
150 | is (length $result, 8)
|
---|
151 | or print "# ", join (',', map {ord $_} $prefix, $dot, $vector),
|
---|
152 | "\n";
|
---|
153 | }
|
---|
154 | }
|
---|
155 | }
|
---|