����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
use 5.008001;
use strict;
use warnings;
use Test::More 0.96;
use lib 't/lib';
use TestUtils qw/exception tempd/;
use Path::Tiny;
subtest "size API tests" => sub {
my $wd = tempd();
my $path = path("1025");
$path->spew( "A" x 1025 );
is( $path->size, -s $path, "size() is -s" );
is( $path->size_human, "1.1 K", "size_human() is 1.1 K" );
};
subtest "size_human format" => sub {
my $wd = tempd();
my $base2 = path("1024");
$base2->spew( "A" x 1024 );
my $base10 = path("1000");
$base10->spew( "A" x 1000 );
is( $base2->size_human, "1.0 K", "default" );
is( $base2->size_human( { format => "ls" } ), "1.0 K", "explicit ls" );
is( $base2->size_human( { format => "iec" } ), "1.0 KiB", "iec" );
is( $base10->size_human( { format => "si" } ), "1.0 kB", "si" );
is( path("doesnotexist")->size_human, "", "missing file" );
like(
exception { $base2->size_human( { format => "fake" } ) },
qr/Invalid format 'fake'/,
"bad format exception"
);
};
# The rest of the tests use the private function for size conversion
# rather than actually creating files of each size. Test cases were
# derived from actual `ls -lh` output on Ubuntu 20.04.
my $kib = 1024;
my %ls_tests = (
0 => "0",
$kib - 1 => "1023",
$kib => "1.0 K",
$kib + 1 => "1.1 K",
int( 1.1 * $kib ) => "1.1 K",
int( 1.1 * $kib ) + 1 => "1.2 K",
int( 1.9 * $kib ) => "1.9 K",
int( 1.9 * $kib ) + 1 => "2.0 K",
9 * $kib => "9.0 K",
9 * $kib + 1 => "9.1 K",
int( 9.9 * $kib ) => "9.9 K",
int( 9.9 * $kib ) + 1 => "10 K",
10 * $kib => "10 K",
10 * $kib + 1 => "11 K",
( $kib - 1 ) * $kib => "1023 K",
( $kib - 1 ) * $kib + 1 => "1.0 M",
$kib**2 - 1 => "1.0 M",
$kib**2 => "1.0 M",
$kib**2 + 1 => "1.1 M",
int( 1.1 * $kib**2 ) => "1.1 M",
int( 1.1 * $kib**2 ) + 1 => "1.2 M",
int( 1.9 * $kib**2 ) => "1.9 M",
int( 1.9 * $kib**2 ) + 1 => "2.0 M",
9 * $kib**2 => "9.0 M",
9 * $kib**2 + 1 => "9.1 M",
int( 9.9 * $kib**2 ) => "9.9 M",
int( 9.9 * $kib**2 ) + 1 => "10 M",
10 * $kib**2 => "10 M",
10 * $kib**2 + 1 => "11 M",
( $kib - 1 ) * $kib**2 => "1023 M",
( $kib - 1 ) * $kib**2 + 1 => "1.0 G",
);
subtest "ls format" => sub {
for my $k ( sort { $a <=> $b } keys %ls_tests ) {
my $opts = Path::Tiny::_formats("ls");
my $got = Path::Tiny::_human_size( $k, @$opts );
is( $got, $ls_tests{$k}, "ls: $k" );
}
};
subtest "iec format" => sub {
for my $k ( sort { $a <=> $b } keys %ls_tests ) {
my $opts = Path::Tiny::_formats("iec");
my $got = Path::Tiny::_human_size( $k, @$opts );
my $want = $ls_tests{$k};
$want .= "iB" if $want =~ /[a-z]/i;
is( $got, $want, "iec: $k" );
}
};
my $kb = 1000;
my %si_tests = (
0 => "0",
$kb - 1 => "999",
$kb => "1.0 kB",
$kb + 1 => "1.1 kB",
int( 1.1 * $kb ) => "1.1 kB",
int( 1.1 * $kb ) + 1 => "1.2 kB",
int( 1.9 * $kb ) => "1.9 kB",
int( 1.9 * $kb ) + 1 => "2.0 kB",
9 * $kb => "9.0 kB",
9 * $kb + 1 => "9.1 kB",
int( 9.9 * $kb ) => "9.9 kB",
int( 9.9 * $kb ) + 1 => "10 kB",
10 * $kb => "10 kB",
10 * $kb + 1 => "11 kB",
( $kb - 1 ) * $kb => "999 kB",
( $kb - 1 ) * $kb + 1 => "1.0 MB",
$kb**2 - 1 => "1.0 MB",
$kb**2 => "1.0 MB",
$kb**2 + 1 => "1.1 MB",
int( 1.1 * $kb**2 ) => "1.1 MB",
int( 1.1 * $kb**2 ) + 1 => "1.2 MB",
int( 1.9 * $kb**2 ) => "1.9 MB",
int( 1.9 * $kb**2 ) + 1 => "2.0 MB",
9 * $kb**2 => "9.0 MB",
9 * $kb**2 + 1 => "9.1 MB",
int( 9.9 * $kb**2 ) => "9.9 MB",
int( 9.9 * $kb**2 ) + 1 => "10 MB",
10 * $kb**2 => "10 MB",
10 * $kb**2 + 1 => "11 MB",
( $kb - 1 ) * $kb**2 => "999 MB",
( $kb - 1 ) * $kb**2 + 1 => "1.0 GB",
);
subtest "si format" => sub {
for my $k ( sort { $a <=> $b } keys %si_tests ) {
my $opts = Path::Tiny::_formats("si");
my $got = Path::Tiny::_human_size( $k, @$opts );
is( $got, $si_tests{$k}, "si: $k" );
}
};
done_testing;
#
# This file is part of Path-Tiny
#
# This software is Copyright (c) 2014 by David Golden.
#
# This is free software, licensed under:
#
# The Apache License, Version 2.0, January 2004
#
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| data | Folder | 0755 |
|
|
| fakelib | Folder | 0755 |
|
|
| lib | Folder | 0755 |
|
|
| 00-report-prereqs.dd | File | 4.52 KB | 0644 |
|
| 00-report-prereqs.t | File | 5.88 KB | 0644 |
|
| README | File | 214 B | 0644 |
|
| basename.t | File | 880 B | 0644 |
|
| basic.t | File | 9.06 KB | 0644 |
|
| children.t | File | 1.24 KB | 0644 |
|
| chmod.t | File | 1020 B | 0644 |
|
| digest.t | File | 1.25 KB | 0644 |
|
| exception.t | File | 1.26 KB | 0644 |
|
| exports.t | File | 674 B | 0644 |
|
| filesystem.t | File | 14.21 KB | 0644 |
|
| has_same_bytes.t | File | 2.04 KB | 0644 |
|
| input_output.t | File | 18.31 KB | 0644 |
|
| input_output_no_PU_UU.t | File | 579 B | 0644 |
|
| input_output_no_UU.t | File | 566 B | 0644 |
|
| locking.t | File | 1.37 KB | 0644 |
|
| mkdir.t | File | 1.52 KB | 0644 |
|
| mkpath.t | File | 1.46 KB | 0644 |
|
| mutable_tree_while_iterating.t | File | 1.43 KB | 0644 |
|
| normalize.t | File | 898 B | 0644 |
|
| overloading.t | File | 534 B | 0644 |
|
| parent.t | File | 3.06 KB | 0644 |
|
| recurse.t | File | 3.89 KB | 0644 |
|
| rel-abs.t | File | 7.88 KB | 0644 |
|
| sig_die.t | File | 533 B | 0644 |
|
| size.t | File | 4.76 KB | 0644 |
|
| subsumes.t | File | 3.16 KB | 0644 |
|
| symlinks.t | File | 1.51 KB | 0644 |
|
| temp.t | File | 4.99 KB | 0644 |
|
| visit.t | File | 447 B | 0644 |
|
| zz-atomic.t | File | 922 B | 0644 |
|
| zzz-spec.t | File | 6.62 KB | 0644 |
|