����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

deexcl@216.73.217.71: ~ $
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
#

Filemanager

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