quote.t   [plain text]


#!perl -w

use strict;
use Test qw(plan ok skip);

plan tests => 17;

use Data::Dump qw(dump quote);
$Data::Dump::TRY_BASE64 = 0;

ok(dump(""), qq(""));
ok(dump("\n"), qq("\\n"));
ok(dump("\0\1\x1F\0" . 3), qq("\\0\\1\\37\\x003"));
ok(dump("xx" x 30), qq(("x" x 60)));
ok(dump("xy" x 30), qq(("xy" x 30)));
ok(dump("\0" x 1024), qq(("\\0" x 1024)));
ok(dump("\$" x 1024), qq(("\\\$" x 1024)));
ok(dump("\n" x (1024 * 1024)), qq(("\\n" x 1048576)));
ok(dump("\x7F\x80\xFF"), qq("\\x7F\\x80\\xFF"));
ok(dump(join("", map chr($_), 0..127)), qq("\\0\\1\\2\\3\\4\\5\\6\\a\\b\\t\\n\\13\\f\\r\\16\\17\\20\\21\\22\\23\\24\\25\\26\\27\\30\\31\\32\\e\\34\\35\\36\\37 !\\"#\\\$%&'()*+,-./0123456789:;<=>?\\\@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7F"));
ok(dump(join("", map chr($_), 0..255)), qq(pack("H*","000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff")));

if (eval { require MIME::Base64 }) {
    local $Data::Dump::TRY_BASE64 = 1;
    ok(dump(join("", map chr($_), 0..255)), "do {\n  require MIME::Base64;\n  MIME::Base64::decode(\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==\");\n}");
}
else {
    skip("MIME::Base64 missing", 1);
}

ok(quote(""), qq(""));
ok(quote(42), qq("42"));
ok(quote([]) =~ /^"ARRAY\(/);
ok(quote('"'), qq("\\""));
ok(quote("\0" x 1024), join("", '"', ("\\0") x 1024, '"'));