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