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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
# --
# Copyright (C) 2001-2021 OTRS AG, https://otrs.com/
# Copyright (C) 2021 Znuny GmbH, https://znuny.org/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
use strict;
use warnings;
use utf8;
use vars (qw($Self));
#
# Tests for comparing DateTime objects via operators
#
my @TestConfigs = (
{
DateTime1 => {
String => '2016-02-18 14:59:00',
TimeZone => 'Europe/Berlin',
},
DateTime2 => {
String => '2018-02-14 14:54:10',
TimeZone => 'Europe/Berlin',
},
ExpectedResults => {
'>' => 0,
'<' => 1,
'>=' => 0,
'<=' => 1,
'==' => 0,
'!=' => 1,
},
},
{
DateTime1 => {
String => '2016-02-18 14:59:00',
TimeZone => 'Europe/Berlin',
},
DateTime2 => {
String => '2016-02-18 14:59:00',
TimeZone => 'Europe/Berlin',
},
ExpectedResults => {
'>' => 0,
'<' => 0,
'>=' => 1,
'<=' => 1,
'==' => 1,
'!=' => 0,
},
},
{
DateTime1 => {
String => '2018-02-14 14:54:10',
TimeZone => 'Europe/Berlin',
},
DateTime2 => {
String => '2016-02-18 14:59:00',
TimeZone => 'Europe/Berlin',
},
ExpectedResults => {
'>' => 1,
'<' => 0,
'>=' => 1,
'<=' => 0,
'==' => 0,
'!=' => 1,
},
},
);
TESTCONFIG:
for my $TestConfig (@TestConfigs) {
my $DateTimeObject1 = $Kernel::OM->Create(
'Kernel::System::DateTime',
ObjectParams => $TestConfig->{DateTime1},
);
my $DateTimeObject2 = $Kernel::OM->Create(
'Kernel::System::DateTime',
ObjectParams => $TestConfig->{DateTime2},
);
for my $Operator ( sort keys %{ $TestConfig->{ExpectedResults} } ) {
$Self->Is(
eval( '$DateTimeObject1 ' . $Operator . ' $DateTimeObject2' ), ## no critic
$TestConfig->{ExpectedResults}->{$Operator},
$DateTimeObject1->Format( Format => '%Y-%m-%d %H:%M:%S %{time_zone_long_name}' )
. " $Operator "
. $DateTimeObject2->Format( Format => '%Y-%m-%d %H:%M:%S %{time_zone_long_name}' )
. ' must have expected result.',
);
}
}
#
# Test with invalid DateTime object
#
my $DateTimeObject = $Kernel::OM->Create(
'Kernel::System::DateTime',
ObjectParams => {
String => '2016-04-06 13:46:00',
},
);
for my $Operator ( '>', '<', '>=', '<=', '==', '!=' ) {
$Self->False(
eval( '$DateTimeObject ' . $Operator . ' 2' ), ## no critic
'Comparison via ' . $Operator . ' with integer instead of DateTime object must fail',
);
$Self->False(
eval( '$DateTimeObject ' . $Operator . ' undef' ), ## no critic
'Comparison via ' . $Operator . ' with undef instead of DateTime object must fail',
);
$Self->False(
eval( '$DateTimeObject ' . $Operator . ' $Kernel::OM->Create("Kernel::System::Time")' ), ## no critic
'Comparison via ' . $Operator . ' with Time object instead of DateTime object must fail',
);
}
1;
|