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