File: bom.t

package info (click to toggle)
perl 5.24.1-3%2Bdeb9u7
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 107,108 kB
  • sloc: perl: 559,649; ansic: 293,918; sh: 67,316; pascal: 7,632; cpp: 3,895; makefile: 2,436; xml: 2,410; yacc: 989; sed: 6; lisp: 1
file content (27 lines) | stat: -rw-r--r-- 807 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!./perl

BEGIN {
    chdir 't' if -d 't';
    @INC = '../lib';
}

BEGIN { require "./test.pl"; require "./charset_tools.pl"; }

plan(tests => 3);

# It is important that the script contains at least one newline character
# that can be expanded to \r\n on DOSish systems.
fresh_perl_is(byte_utf8a_to_utf8n("\xEF\xBB\xBF") . "print 1;\nprint 2", "12", {}, "script starts with a BOM" );

# Big- and little-endian UTF-16
for my $end (0, 1) {
	my $encoding = $end ? 'UTF-16LE' : 'UTF-16BE';
	my $prog = join '', map chr($_), map {
		$end ? @$_[0, 1] : @$_[1, 0]
	} (
                # Create UTF-16.
		[ 0xFE, 0xFF ], map [ 0, utf8::native_to_unicode(ord($_)) ],
                                                    split //, "print 1;\nprint 2"
	);
	fresh_perl_is($prog, "12", {}, "BOM indicates $encoding");
}