mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-14 10:13:05 +02:00
63 lines
3.1 KiB
Perl
63 lines
3.1 KiB
Perl
####################################################################################################################################
|
|
# Test Binary to String Encode/Decode
|
|
####################################################################################################################################
|
|
package pgBackRestTest::Module::Common::CommonEncodePerlTest;
|
|
use parent 'pgBackRestTest::Common::RunTest';
|
|
|
|
####################################################################################################################################
|
|
# Perl includes
|
|
####################################################################################################################################
|
|
use strict;
|
|
use warnings FATAL => qw(all);
|
|
use Carp qw(confess);
|
|
use English '-no_match_vars';
|
|
|
|
use pgBackRest::Common::Exception;
|
|
use pgBackRest::Common::Ini;
|
|
use pgBackRest::Common::Log;
|
|
use pgBackRest::LibC qw(:encode);
|
|
use pgBackRest::Version;
|
|
|
|
use pgBackRestTest::Common::ExecuteTest;
|
|
use pgBackRestTest::Common::RunTest;
|
|
|
|
####################################################################################################################################
|
|
# run
|
|
####################################################################################################################################
|
|
sub run
|
|
{
|
|
my $self = shift;
|
|
|
|
################################################################################################################################
|
|
if ($self->begin("encodeToStrBase64() and decodeToBinBase64()"))
|
|
{
|
|
my $strData = 'string_to_encode';
|
|
my $strEncodedData = 'c3RyaW5nX3RvX2VuY29kZQ==';
|
|
|
|
$self->testResult(sub {encodeToStr(ENCODE_TYPE_BASE64, $strData)}, $strEncodedData, 'encode string');
|
|
$self->testResult(sub {decodeToBin(ENCODE_TYPE_BASE64, $strEncodedData)}, $strData, 'decode string');
|
|
|
|
#---------------------------------------------------------------------------------------------------------------------------
|
|
my $tData =
|
|
pack('C', 1) . pack('C', 2) . pack('C', 3) . pack('C', 4) . pack('C', 5) . pack('C', 4) . pack('C', 3) . pack('C', 2);
|
|
my $tEncodedData = 'AQIDBAUEAwI=';
|
|
|
|
$self->testResult(sub {encodeToStr(ENCODE_TYPE_BASE64, $tData)}, $tEncodedData, 'encode binary');
|
|
$self->testResult(sub {decodeToBin(ENCODE_TYPE_BASE64, $tEncodedData)}, $tData, 'decode binary');
|
|
|
|
#---------------------------------------------------------------------------------------------------------------------------
|
|
$tData .= pack('C', 1);
|
|
$tEncodedData = 'AQIDBAUEAwIB';
|
|
|
|
$self->testResult(sub {encodeToStr(ENCODE_TYPE_BASE64, $tData)}, $tEncodedData, 'encode binary');
|
|
$self->testResult(sub {decodeToBin(ENCODE_TYPE_BASE64, $tEncodedData)}, $tData, 'decode binary');
|
|
|
|
#---------------------------------------------------------------------------------------------------------------------------
|
|
$self->testException(sub {encodeToStr(99999, '')}, ERROR_ASSERT, 'invalid encode type 99999');
|
|
$self->testException(
|
|
sub {decodeToBin(ENCODE_TYPE_BASE64, "XX")}, ERROR_FORMAT, 'base64 size 2 is not evenly divisible by 4');
|
|
}
|
|
}
|
|
|
|
1;
|