⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 is.t

📁 source of perl for linux application,
💻 T
字号:
#!./perl -wBEGIN {    chdir 't' if -d 't';    @INC = '../lib';    require Config; import Config;    if ($^O ne 'VMS' and $Config{'extensions'} !~ /\bPOSIX\b/) {	print "1..0\n";	exit 0;    }}use POSIX;use strict ;# E.g. \t might or might not be isprint() depending on the locale,# so let's reset to the default.setlocale(LC_ALL, 'C') if $Config{d_setlocale};$| = 1;# List of characters (and strings) to feed to the is<xxx> functions.## The left-hand side (key) is a character or string.# The right-hand side (value) is a list of character classes to which# this string belongs.  This is a *complete* list: any classes not# listed, are expected to return '0' for the given string.my %classes =  (   'a'    => [ qw(print graph alnum alpha lower xdigit) ],   'A'    => [ qw(print graph alnum alpha upper xdigit) ],   'z'    => [ qw(print graph alnum alpha lower) ],   'Z'    => [ qw(print graph alnum alpha upper) ],   '0'    => [ qw(print graph alnum digit xdigit) ],   '9'    => [ qw(print graph alnum digit xdigit) ],   '.'    => [ qw(print graph punct) ],   '?'    => [ qw(print graph punct) ],   ' '    => [ qw(print space) ],   "\t"   => [ qw(cntrl space) ],   "\001" => [ qw(cntrl) ],   # Multi-character strings.  These are logically ANDed, so the   # presence of different types of chars in one string will   # reduce the list on the right.   'abc'       => [ qw(print graph alnum alpha lower xdigit) ],   'az'        => [ qw(print graph alnum alpha lower) ],   'aZ'        => [ qw(print graph alnum alpha) ],   'abc '      => [ qw(print) ],   '012aF'     => [ qw(print graph alnum xdigit) ],   " \t"       => [ qw(space) ],   "abcde\001" => [],   # An empty string. Always true (al least in old days) [bug #24554]   ''     => [ qw(print graph alnum alpha lower upper digit xdigit                  punct cntrl space) ],  );# Pass 1: convert the above arrays to hashes.  While doing so, obtain# a complete list of all the 'is<xxx>' functions.  At least, the ones# listed above.my %functions;foreach my $s (keys %classes) {    $classes{$s} = { map {	$functions{"is$_"}++;	# Keep track of all the 'is<xxx>' functions	"is$_" => 1;		# Our return value: is<xxx>($s) should pass.    } @{$classes{$s}} };}# Expected number of tests is one each for every combination of a# known is<xxx> function and string listed above.require './test.pl';plan(tests => keys(%classes) * keys(%functions));## Main test loop: Run all POSIX::is<xxx> tests on each string defined above.# Only the character classes listed for that string should return 1.  We# always run all functions on every string, and expect to get 0 for the# character classes not listed in the given string's hash value.#foreach my $s (sort keys %classes) {    foreach my $f (sort keys %functions) {	my $expected = exists $classes{$s}->{$f};	my $actual   = eval "POSIX::$f( \$s )";	ok( $actual == $expected, "$f('$s') == $actual");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -