summaryrefslogtreecommitdiff
path: root/t/base
diff options
context:
space:
mode:
authorKarl Williamson <public@khwilliamson.com>2013-03-27 18:17:28 -0600
committerKarl Williamson <khw@cpan.org>2014-12-11 11:28:30 -0700
commitd5b98071c9e3e7e1d15e5358ad2316f3928fb05d (patch)
tree9ab719289d13e1fb92f82f153a6b60ed6575dc61 /t/base
parent0505367018ffb2b76ed4195671cb41f05d198990 (diff)
downloadperl-d5b98071c9e3e7e1d15e5358ad2316f3928fb05d.tar.gz
Add test that to/from native character set works
For non-ASCII systems, there are character set translation tables. This makes sure the two accessible ones are inverses of each other. If not, nothing can be expected to work right.
Diffstat (limited to 't/base')
-rw-r--r--t/base/translate.t27
1 files changed, 27 insertions, 0 deletions
diff --git a/t/base/translate.t b/t/base/translate.t
new file mode 100644
index 0000000000..614f22c9c6
--- /dev/null
+++ b/t/base/translate.t
@@ -0,0 +1,27 @@
+#!./perl
+
+# Verify round trip of translations from the native character set to unicode
+# and back work. If this is wrong, nothing will be reliable.
+
+print "1..257\n"; # 0-255 plus one beyond
+
+for my $i (0 .. 255) {
+ my $uni = utf8::native_to_unicode($i);
+ if ($uni < 0 || $uni >= 256) {
+ print "not ";
+ }
+ elsif (utf8::unicode_to_native(utf8::native_to_unicode($i)) != $i) {
+ print "not ";
+ }
+ print "ok ";
+ print $i + 1;
+ print "\n";
+}
+
+# Choose a largish number that might cause a seg fault if inappropriate array
+# lookup
+if (utf8::unicode_to_native(utf8::native_to_unicode(100000)) != 100000) {
+ print "not ";
+}
+print "ok ";
+print "257\n";