From 6a2d14526ad716664649d2cf599fcbb95566f76a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= <stepan@adjemian.eu> Date: Thu, 1 Oct 2020 13:18:36 +0200 Subject: [PATCH] Fixed isequal method for daily frequency + cosmetics + unit test. --- src/@dates/isequal.m | 94 +++++++++++++++++++++++++++++++------------- 1 file changed, 66 insertions(+), 28 deletions(-) diff --git a/src/@dates/isequal.m b/src/@dates/isequal.m index 3922f03..f0d843d 100644 --- a/src/@dates/isequal.m +++ b/src/@dates/isequal.m @@ -1,6 +1,6 @@ function l = isequal(o, p, fake) % --*-- Unitary tests --*-- -% Overloads isequal function for dates objects. Returns true (1) iff o and p have the same elements. +% Overloads isequal function for dates objects. Returns true true iff o and p have the same elements. % % INPUTS % - o [dates] @@ -9,7 +9,7 @@ function l = isequal(o, p, fake) % --*-- Unitary tests --*-- % OUTPUTS % - l [logical] -% 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 @@ -28,44 +28,82 @@ if ~isa(o,'dates') || ~isa(p,'dates') error('dates:isequal:ArgCheck','Both inputs must be dates objects!') end -l = isequal(o.freq, p.freq) && isequal(o.time, p.time); +if o.freq==365 + l = isequal(o.freq, p.freq) && isequal(o.time(:,1), p.time(:,1)); +else + l = isequal(o.freq, p.freq) && isequal(o.time, p.time); +end + +return %@test:1 -%$ d1 = dates('1938Q1'); -%$ d2 = dates('1938Q1'); -%$ % Test if this object is empty -%$ t(1) = isequal(d1,d2); -%$ T = all(t); +d1 = dates('1938Q1'); +d2 = dates('1938Q1'); +% Test if this object is empty +try + t(1) = isequal(d1, d2); +catch + t(1) = false; +end +T = all(t); %@eof:1 %@test:2 -%$ d1 = dates('1938Q1'); -%$ d2 = dates('1938Q2'); -%$ % Test if this object is empty -%$ t(1) = ~isequal(d1,d2); -%$ T = all(t); +d1 = dates('1938Q1'); +d2 = dates('1938Q2'); +% Test if this object is empty +try + t(1) = ~isequal(d1,d2); +catch + t(1) = false; +end +T = all(t); %@eof:2 %@test:3 -%$ d1 = dates('1938Q4'); -%$ d2 = dates('1938M11'); -%$ % Test if this object is empty -%$ t(1) = ~isequal(d1,d2); -%$ T = all(t); +d1 = dates('1938Q4'); +d2 = dates('1938M11'); +% Test if this object is empty +try + t(1) = ~isequal(d1,d2); +catch + t(1) = false; +end +T = all(t); %@eof:3 %@test:4 -%$ d1 = dates('1938Q4','1938Q3'); -%$ d2 = dates('1938Q3','1938Q1'); -%$ % Test if this object is empty -%$ t(1) = ~isequal(d1,d2); -%$ T = all(t); +d1 = dates('1938Q4','1938Q3'); +d2 = dates('1938Q3','1938Q1'); +% Test if this object is empty +try + t(1) = ~isequal(d1,d2); +catch + t(1) = false; +end +T = all(t); %@eof:4 %@test:5 -%$ d1 = dates('1938Q4','1938Q3','1938Q2'); -%$ d2 = dates('1938Q3','1938Q1'); -%$ % Test if this object is empty -%$ t(1) = ~isequal(d1,d2); -%$ T = all(t); +d1 = dates('1938Q4','1938Q3','1938Q2'); +d2 = dates('1938Q3','1938Q1'); +% Test if this object is empty +try + t(1) = ~isequal(d1,d2); +catch + t(1) = false; +end +T = all(t); %@eof:5 + +%@test:6 +d1 = dates('1938-11-22'); +d2 = dates('1945-09-01'); +% Test if this object is empty +try + t(1) = ~isequal(d1,d2); +catch + t(1) = false; +end +T = all(t); +%@eof:6 -- GitLab