Skip to content
Snippets Groups Projects
Verified Commit c21b3bd2 authored by Stéphane Adjemian's avatar Stéphane Adjemian
Browse files

Fix concatenation with empty dates objects.

Concatenation was failing if the empty object had no frequency set.

Closes #46
parent bd31aec3
No related branches found
No related tags found
No related merge requests found
Pipeline #5344 failed
......@@ -30,7 +30,11 @@ end
o = copy(varargin{1});
for i=2:nargin
p = varargin{i};
if isequal(o.freq, p.freq)
if isequal(o.freq, p.freq) || isempty(o.freq) || isempty(p.freq)
if isempty(o)
o = copy(p);
continue
end
if ~isempty(p)
o.time = [o.time; p.time];
end
......@@ -39,94 +43,126 @@ for i=2:nargin
end
end
return
%@test:1
%$ % Define some dates
%$ B1 = '1953Q4';
%$ B2 = '1950Q2';
%$ B3 = '1950Q1';
%$ B4 = '1945Q3';
%$ B5 = '2009Q2';
%$
%$ % Define expected results.
%$ e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
%$ e.freq = 4;
%$
%$ % Call the tested routine.
%$ d = dates(B4,B3,B2,B1);
%$ d = [d, dates(B5)];
%$
%$ % Check the results.
%$ t(1) = dassert(d.time,e.time);
%$ t(2) = dassert(d.freq,e.freq);
%$ t(3) = size(e.time,1)==d.ndat();
%$ T = all(t);
% Define some dates
B1 = '1953Q4';
B2 = '1950Q2';
B3 = '1950Q1';
B4 = '1945Q3';
B5 = '2009Q2';
% Define expected results.
e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
e.freq = 4;
% Call the tested routine.
d = dates(B4,B3,B2,B1);
d = [d, dates(B5)];
% Check the results.
t(1) = dassert(d.time,e.time);
t(2) = dassert(d.freq,e.freq);
t(3) = size(e.time,1)==d.ndat();
T = all(t);
%@eof:1
%@test:2
%$ % Define some dates
%$ B1 = '1953Q4';
%$ B2 = '1950Q2';
%$ B3 = '1950Q1';
%$ B4 = '1945Q3';
%$ B5 = '2009Q2';
%$
%$ % Define expected results.
%$ e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
%$ e.freq = 4;
%$
%$ % Call the tested routine.
%$ d = dates(B4,B3,B2);
%$ d = [d, dates(B1), dates(B5)];
%$
%$ % Check the results.
%$ t(1) = dassert(d.time,e.time);
%$ t(2) = dassert(d.freq,e.freq);
%$ t(3) = size(e.time,1)==d.ndat();
%$ T = all(t);
% Define some dates
B1 = '1953Q4';
B2 = '1950Q2';
B3 = '1950Q1';
B4 = '1945Q3';
B5 = '2009Q2';
% Define expected results.
e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
e.freq = 4;
% Call the tested routine.
d = dates(B4,B3,B2);
d = [d, dates(B1), dates(B5)];
% Check the results.
t(1) = dassert(d.time,e.time);
t(2) = dassert(d.freq,e.freq);
t(3) = size(e.time,1)==d.ndat();
T = all(t);
%@eof:2
%@test:3
%$ % Define some dates
%$ B1 = '1953Q4';
%$ B2 = '1950Q2';
%$ B3 = '1950Q1';
%$ B4 = '1945Q3';
%$ B5 = '2009Q2';
%$
%$ % Define expected results.
%$ e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
%$ e.freq = 4;
%$
%$ % Call the tested routine.
%$ d = dates(B4,B3,B2);
%$ d = [d, dates(B1,B5)];
%$
%$ % Check the results.
%$ t(1) = dassert(d.time,e.time);
%$ t(2) = dassert(d.freq,e.freq);
%$ t(3) = size(e.time,1)==d.ndat();
%$ T = all(t);
% Define some dates
B1 = '1953Q4';
B2 = '1950Q2';
B3 = '1950Q1';
B4 = '1945Q3';
B5 = '2009Q2';
% Define expected results.
e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
e.freq = 4;
% Call the tested routine.
d = dates(B4,B3,B2);
d = [d, dates(B1,B5)];
% Check the results.
t(1) = dassert(d.time,e.time);
t(2) = dassert(d.freq,e.freq);
t(3) = size(e.time,1)==d.ndat();
T = all(t);
%@eof:3
%@test:4
%$ % Define some dates
%$ B1 = '1953Q4';
%$ B2 = '1950Q2';
%$ B3 = '1950Q1';
%$ B4 = '1945Q3';
%$ B5 = '2009Q2';
%$
%$ % Define expected results.
%$ e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
%$ e.freq = 4;
%$
%$ % Call the tested routine.
%$ d = dates(B4,B3,B2);
%$ d = [d, [dates(B1), dates(B5)]];
%$
%$ % Check the results.
%$ t(1) = dassert(d.time,e.time);
%$ t(2) = dassert(d.freq,e.freq);
%$ t(3) = size(e.time,1)==d.ndat();
%$ T = all(t);
% Define some dates
B1 = '1953Q4';
B2 = '1950Q2';
B3 = '1950Q1';
B4 = '1945Q3';
B5 = '2009Q2';
% Define expected results.
e.time = [1945*4+3; 1950*4+1; 1950*4+2; 1953*4+4; 2009*4+2];
e.freq = 4;
% Call the tested routine.
d = dates(B4,B3,B2);
d = [d, [dates(B1), dates(B5)]];
% Check the results.
t(1) = dassert(d.time,e.time);
t(2) = dassert(d.freq,e.freq);
t(3) = size(e.time,1)==d.ndat();
T = all(t);
%@eof:4
%@test:5
try
e = [dates('1938M11') dates()];
t(1) = true;
catch
t(1) = false;
end
if t(1)
t(2) = e==dates('1938M11');
end
T = all(t);
%@eof:5
%@test:6
try
e = [dates() dates('1938M11')];
t(1) = true;
catch
t(1) = false;
end
if t(1)
t(2) = e==dates('1938M11');
end
T = all(t);
%@eof:6
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment