From ebfc01a4fa353013a8a2e6b7eeabd804c38a2ba1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?=
 <stepan@adjemian.eu>
Date: Thu, 25 Feb 2021 10:14:37 +0100
Subject: [PATCH] Bug fix.

Returned year was wrong for yearly frequency.
---
 src/@dates/year.m | 85 +++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 83 insertions(+), 2 deletions(-)

diff --git a/src/@dates/year.m b/src/@dates/year.m
index da1e280..15716fc 100644
--- a/src/@dates/year.m
+++ b/src/@dates/year.m
@@ -1,4 +1,4 @@
-function y = year(d)
+function y = year(d)  % --*-- Unitary tests --*--
 
 % Returns the year.
 
@@ -23,4 +23,85 @@ if d.freq==365
     return
 end
 
-y = floor((d.time-1)/d.freq);
\ No newline at end of file
+if d.freq>1
+    y = floor((d.time-1)/d.freq);
+else
+    y = d.time;
+end
+
+return
+
+%@test:1
+try
+    y = year(dates('2020-01-01'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = y==2020;
+end
+
+T = all(t);
+%@eof:1
+
+%@test:2
+try
+    y = year(dates('1938-11-22'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = y==1938;
+end
+
+T = all(t);
+%@eof:2
+
+%@test:3
+try
+    y = year(dates('2020S2'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = y==2020;
+end
+
+T = all(t);
+%@eof:3
+
+%@test:4
+try
+    y = year(dates('2020Q1'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = y==2020;
+end
+
+T = all(t);
+%@eof:4
+
+%@test:5
+try
+    y = year(dates('2019M3'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = y==2019;
+end
+
+T = all(t);
+%@eof:5
\ No newline at end of file
-- 
GitLab