diff --git a/src/@dates/max.m b/src/@dates/max.m index 10bdec6c3a881f8ff5e46c7c6faa0340d80afc4a..af0466f505ab949a7cfa9cd6a4160740d2be8c70 100644 --- a/src/@dates/max.m +++ b/src/@dates/max.m @@ -6,9 +6,9 @@ function q = max(varargin) % --*-- Unitary tests --*-- % - varargin [dates] % % OUTPUTS -% - q [dates] +% - q [dates] -% Copyright (C) 2013-2017 Dynare Team +% Copyright © 2013-2020 Dynare Team % % This code is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -29,58 +29,83 @@ end switch nargin case 1 - sorted_time_member = sortrows(varargin{1}.time); + if varargin{1}.freq==365 + sorted_time_member = sort(varargin{1}.time(:,1)); + else + sorted_time_member = sortrows(varargin{1}.time); + end q = dates(); q.freq = varargin{1}.freq; - q.time = sorted_time_member(varargin{1}.ndat(),:); + if varargin{1}.freq==365 + q.time = [sorted_time_member(varargin{1}.ndat()), NaN]; + else + q.time = sorted_time_member(varargin{1}.ndat(),:); + end otherwise q = max(horzcat(varargin{:})); end +return + %@test:1 -%$ % Define some dates -%$ d3 = dates('1950q2'); -%$ d4 = dates('1950Q3'); -%$ d5 = dates('1950m1'); -%$ d6 = dates('1948M6'); -%$ m2 = max(d3,d4); -%$ i2 = (m2==d4); -%$ m3 = max(d5,d6); -%$ i3 = (m3==d5); -%$ -%$ % Check the results. -%$ t(1) = dassert(i2,true); -%$ t(2) = dassert(i3,true); -%$ T = all(t); +% Define some dates +d3 = dates('1950q2'); +d4 = dates('1950Q3'); +d5 = dates('1950m1'); +d6 = dates('1948M6'); +m2 = max(d3,d4); +i2 = (m2==d4); +m3 = max(d5,d6); +i3 = (m3==d5); + +% Check the results. +t(1) = dassert(i2,true); +t(2) = dassert(i3,true); +T = all(t); %@eof:1 %@test:2 -%$ % Define some dates -%$ d = dates('1950Q2','1951Q3','1949Q1','1950Q4'); -%$ m = max(d); -%$ i = (m==dates('1951Q3')); -%$ -%$ % Check the results. -%$ t(1) = dassert(i,true); -%$ T = all(t); +% Define some dates +d = dates('1950Q2','1951Q3','1949Q1','1950Q4'); +m = max(d); +i = (m==dates('1951Q3')); + +% Check the results. +t(1) = dassert(i,true); +T = all(t); %@eof:2 %@test:3 -%$ % Define some dates -%$ m = max(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4')); -%$ i = (m==dates('1951Q3')); -%$ -%$ % Check the results. -%$ t(1) = dassert(i,true); -%$ T = all(t); +% Define some dates +m = max(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4')); +i = (m==dates('1951Q3')); + +% Check the results. +t(1) = dassert(i,true); +T = all(t); %@eof:3 %@test:4 -%$ % Define some dates -%$ m = max(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4')); -%$ i = (m==dates('1951Q3')); -%$ -%$ % Check the results. -%$ t(1) = dassert(i,true); -%$ T = all(t); +% Define some dates +m = max(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4')); +i = (m==dates('1951Q3')); + +% Check the results. +t(1) = dassert(i,true); +T = all(t); %@eof:4 + +%@test:5 +try + M = max(dates('2009-04-12', '1966-11-02'), dates('1938-11-22'), dates('1972-01-25', '1976-03-13')); + t(1) = true; +catch + t(1) = false; +end + +if t(1) + t(2) = M==dates('2009-04-12'); +end + +T = all(t); +%@eof:5 diff --git a/src/@dates/min.m b/src/@dates/min.m index 0535179c6c035ccda497e1639b849e41c2a63427..43152af9f44c237e0df522508f56edb3c5ed6317 100644 --- a/src/@dates/min.m +++ b/src/@dates/min.m @@ -6,9 +6,9 @@ function q = min(varargin) % --*-- Unitary tests --*-- % - varargin [dates] % % OUTPUTS -% - q [dates] +% - q [dates] -% Copyright (C) 2013-2017 Dynare Team +% Copyright © 2013-2020 Dynare Team % % This code is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by @@ -29,58 +29,83 @@ end switch nargin case 1 - sorted_time_member = sortrows(varargin{1}.time); + if varargin{1}.freq==365 + sorted_time_member = sort(varargin{1}.time(:,1)); + else + sorted_time_member = sortrows(varargin{1}.time); + end q = dates(); q.freq = varargin{1}.freq; - q.time = sorted_time_member(1,:); + if varargin{1}.freq==365 + q.time = [sorted_time_member(1,:), NaN]; + else + q.time = sorted_time_member(1,:); + end otherwise q = min(horzcat(varargin{:})); end +return + %@test:1 -%$ % Define some dates -%$ d3 = dates('1950q2'); -%$ d4 = dates('1950Q3'); -%$ d5 = dates('1950m1'); -%$ d6 = dates('1948M6'); -%$ m2 = min(d3,d4); -%$ i2 = (m2==d3); -%$ m3 = min(d5,d6); -%$ i3 = (m3==d6); -%$ -%$ % Check the results. -%$ t(1) = dassert(i2,true); -%$ t(2) = dassert(i3,true); -%$ T = all(t); +% Define some dates +d3 = dates('1950q2'); +d4 = dates('1950Q3'); +d5 = dates('1950m1'); +d6 = dates('1948M6'); +m2 = min(d3,d4); +i2 = (m2==d3); +m3 = min(d5,d6); +i3 = (m3==d6); + +% Check the results. +t(1) = dassert(i2,true); +t(2) = dassert(i3,true); +T = all(t); %@eof:1 %@test:2 -%$ % Define some dates -%$ d = dates('1950Q2','1951Q3','1949Q1','1950Q4'); -%$ m = min(d); -%$ i = (m==dates('1949Q1')); -%$ -%$ % Check the results. -%$ t(1) = dassert(i,true); -%$ T = all(t); +% Define some dates +d = dates('1950Q2','1951Q3','1949Q1','1950Q4'); +m = min(d); +i = (m==dates('1949Q1')); + +% Check the results. +t(1) = dassert(i,true); +T = all(t); %@eof:2 %@test:3 -%$ % Define some dates -%$ m = min(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4')); -%$ i = (m==dates('1949Q1')); -%$ -%$ % Check the results. -%$ t(1) = dassert(i,true); -%$ T = all(t); +% Define some dates +m = min(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4')); +i = (m==dates('1949Q1')); + +% Check the results. +t(1) = dassert(i,true); +T = all(t); %@eof:3 %@test:4 -%$ % Define some dates -%$ m = min(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4')); -%$ i = (m==dates('1949Q1')); -%$ -%$ % Check the results. -%$ t(1) = dassert(i,true); -%$ T = all(t); +% Define some dates +m = min(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4')); +i = (m==dates('1949Q1')); + +% Check the results. +t(1) = dassert(i,true); +T = all(t); %@eof:4 + +%@test:5 +try + m = min(dates('2009-04-12', '1966-11-02'), dates('1938-11-22'), dates('1972-01-25', '1976-03-13')); + t(1) = true; +catch + t(1) = false; +end + +if t(1) + t(2) = m==dates('1938-11-22'); +end + +T = all(t); +%@eof:5