From 63659a15fe8695021ced714f92f49ad79e9981fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= <stephane.adjemian@univ-lemans.fr> Date: Thu, 19 Nov 2015 14:17:06 +0100 Subject: [PATCH] Added unit tests. --- data/test_dates4display.m | 4 + src/@dates/copy.m | 23 +++- src/@dates/dates.m | 15 +++ src/@dates/end.m | 22 +++- src/@dates/isequal.m | 2 +- src/@dates/length.m | 2 +- src/@dates/private/comparison_arg_checks.m | 121 +++++++++++++++++++- src/@dates/private/dates4display.m | 117 ++++++++++++++++++- src/@dates/private/greaterorequal.m | 125 ++++++++++++++++++++- src/@dates/private/greaterthan.m | 119 +++++++++++++++++++- src/@dates/private/lessorequal.m | 119 +++++++++++++++++++- src/@dates/private/lessthan.m | 117 ++++++++++++++++++- src/@dates/strings.m | 27 ++++- src/@dates/subsasgn.m | 19 +++- src/@dates/vertcat.m | 53 ++++++++- src/utilities/convert/date2string.m | 71 +++++++++++- src/utilities/convert/freq2string.m | 36 +++++- src/utilities/convert/string2freq.m | 36 +++++- src/utilities/is/isdates.m | 79 ++++++++++++- src/utilities/is/isfreq.m | 79 ++++++++++++- src/utilities/is/issubperiod.m | 49 +++++++- src/utilities/missing/isint/isint.m | 86 +++++++++++++- src/utilities/missing/shiftS/shiftS.m | 39 ++++++- 23 files changed, 1324 insertions(+), 36 deletions(-) create mode 100644 data/test_dates4display.m diff --git a/data/test_dates4display.m b/data/test_dates4display.m new file mode 100644 index 0000000..b84264f --- /dev/null +++ b/data/test_dates4display.m @@ -0,0 +1,4 @@ +expected_str_1 = sprintf('toto is an empty dates object.\n'); +expected_str_2 = sprintf('toto = <dates: 1950Q1, 1950Q2>\n'); +expected_str_3 = sprintf('toto = <dates: 1950Q1, 1950Q2, ..., 1950Q4, 1951Q1>\n'); +expected_str_4 = sprintf('toto = <dates: 1950Q1, 1950Q2, 1950Q3, 1950Q4, 1951Q1>\n'); diff --git a/src/@dates/copy.m b/src/@dates/copy.m index e15a508..ddb4c9a 100644 --- a/src/@dates/copy.m +++ b/src/@dates/copy.m @@ -1,4 +1,4 @@ -function p = copy(o) +function p = copy(o) % --*-- Unitary tests --*-- % Do a copy of a dates object. % @@ -26,3 +26,24 @@ function p = copy(o) p = dates(); p.freq = o.freq; p.time = o.time; + +%@test:1 +%$ % Define a dates object +%$ o = dates('1945Q3','1944Q4'); +%$ q = dates('1945Q3','1944Q4'); +%$ +%$ % Call the tested routine. +%$ try +%$ p = copy(o); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ o.sort_(); +%$ t(2) = dassert(p, q); +%$ end +%$ +%$ T = all(t); +%@eof:1 \ No newline at end of file diff --git a/src/@dates/dates.m b/src/@dates/dates.m index 71aebea..8c837f8 100644 --- a/src/@dates/dates.m +++ b/src/@dates/dates.m @@ -109,6 +109,21 @@ classdef dates<handle % --*-- Unitary tests --*-- end error('dates:ArgCheck','You should first read the manual!') end % dates constructor. + % Other methods + p = sort(o); + o = sort_(o); + p = unique(o); + o = unique_(o); + p = append(o, d); + o = append_(o, d); + p = pop(o, d); + o = pop_(o, d); + p = remove(o, d); + o = remove_(o, d); + s = char(o); + a = double(o); + n = ndat(o); + n = length(o); end % methods end % classdef diff --git a/src/@dates/end.m b/src/@dates/end.m index 5de7f0b..1f0d621 100644 --- a/src/@dates/end.m +++ b/src/@dates/end.m @@ -1,4 +1,4 @@ -function lastIndex = end(o, k, n) +function lastIndex = end(o, k, n) % --*-- Unitary tests --*-- % Overloads end keyword. % @@ -27,3 +27,23 @@ function lastIndex = end(o, k, n) assert(k==1 && n==1, 'dates:end:ArgCheck', 'dates only has one dimension'); lastIndex = o.ndat(); + +%@test:1 +%$ % Define a dates object +%$ o = dates('1938Q4'):dates('2015Q4'); +%$ q = dates('2015Q4'); +%$ +%$ % Call the tested routine. +%$ try +%$ p = o(end); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(p, q); +%$ end +%$ +%$ T = all(t); +%@eof:1 \ No newline at end of file diff --git a/src/@dates/isequal.m b/src/@dates/isequal.m index 62f9e10..db945c7 100644 --- a/src/@dates/isequal.m +++ b/src/@dates/isequal.m @@ -1,4 +1,4 @@ -function l = isequal(o, p, fake) +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. % diff --git a/src/@dates/length.m b/src/@dates/length.m index 6ee6ae8..c489719 100644 --- a/src/@dates/length.m +++ b/src/@dates/length.m @@ -1,4 +1,4 @@ -function n = length(o) +function n = length(o) % --*-- Unitary tests --*-- % Returns the number of elements in a dates object. % diff --git a/src/@dates/private/comparison_arg_checks.m b/src/@dates/private/comparison_arg_checks.m index 4983fe8..82fa455 100644 --- a/src/@dates/private/comparison_arg_checks.m +++ b/src/@dates/private/comparison_arg_checks.m @@ -1,4 +1,4 @@ -function [o, p] = comparison_arg_checks(varargin) +function [o, p] = comparison_arg_checks(varargin) % --*-- Unitary tests --*-- % Returns two dates objects or an error if objects to be compared are not compatible. % @@ -45,4 +45,121 @@ if ~isequal(varargin{1}.ndat, varargin{2}.ndat) && ~(isequal(varargin{1}.ndat,1) end o = varargin{1}; -p = varargin{2}; \ No newline at end of file +p = varargin{2}; + +%@test:1 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ try +%$ [o, p] = comparison_arg_checks(1); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:1 + +%@test:2 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ try +%$ [o, p] = comparison_arg_checks('make', 'my', 'day'); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:2 + +%@test:3 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ try +%$ [o, p] = comparison_arg_checks('punk', dates('1950Q1')); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:3 + +%@test:4 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ try +%$ [o, p] = comparison_arg_checks(dates('1950Q1'), 1); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:4 + +%@test:5 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ try +%$ [o, p] = comparison_arg_checks(dates('1950Q1'), dates('1950M1')); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:5 + +%@test:6 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ try +%$ [o, p] = comparison_arg_checks(dates('1950Q1'):dates('1950Q2'), dates('1950Q1'):dates('1950Q3')); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:6 + +%@test:7 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ try +%$ [o, p] = comparison_arg_checks(dates('1950Q2'), dates('1950Q1')); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(o, dates('1950Q2')); +%$ t(3) = dassert(p, dates('1950Q1')); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:7 \ No newline at end of file diff --git a/src/@dates/private/dates4display.m b/src/@dates/private/dates4display.m index 7dc6109..b8d1a0a 100644 --- a/src/@dates/private/dates4display.m +++ b/src/@dates/private/dates4display.m @@ -1,4 +1,4 @@ -function str = dates4display(o, name, max_number_of_elements) +function str = dates4display(o, name, max_number_of_elements) % --*-- Unitary tests --*-- % Converts a list object to a string. % @@ -45,4 +45,117 @@ else str = sprintf('%s%s, ', str, '...'); str = sprintf('%s%s, ', str, date2string(o.time(o.length()-1,:),o.freq)); end -str = sprintf('%s%s>', str, date2string(o.time(o.length(),:),o.freq)); \ No newline at end of file +str = sprintf('%s%s>\n', str, date2string(o.time(o.length(),:),o.freq)); + +%@test:1 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ addpath('../../../data/') +%$ +%$ try +%$ toto = dates(); +%$ str = dates4display(toto, 'toto', 5); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ test_dates4display; +%$ try +%$ t(2) = dassert(str, expected_str_1); +%$ catch +%$ t(2) = false; +%$ end +%$ end +%$ +%$ T = all(t); +%$ rmpath('../../../data/') +%$ cd(OPATH); +%@eof:1 + +%@test:2 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ addpath('../../../data/') +%$ +%$ try +%$ toto = dates('1950Q1'):dates('1950Q2'); +%$ str = dates4display(toto, 'toto', 5); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ test_dates4display; +%$ try +%$ t(2) = dassert(str, expected_str_2); +%$ catch +%$ t(2) = false; +%$ end +%$ end +%$ +%$ T = all(t); +%$ rmpath('../../../data/') +%$ cd(OPATH); +%@eof:2 + +%@test:3 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ addpath('../../../data/') +%$ +%$ try +%$ toto = dates('1950Q1'):dates('1951Q1'); +%$ str = dates4display(toto, 'toto', 4); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ test_dates4display; +%$ try +%$ t(2) = dassert(str, expected_str_3); +%$ catch +%$ t(2) = false; +%$ end +%$ end +%$ +%$ T = all(t); +%$ rmpath('../../../data/') +%$ cd(OPATH); +%@eof:3 + +%@test:4 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ addpath('../../../data/') +%$ +%$ try +%$ toto = dates('1950Q1'):dates('1951Q1'); +%$ str = dates4display(toto, 'toto', 6); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ test_dates4display; +%$ try +%$ t(2) = dassert(str, expected_str_4); +%$ catch +%$ t(2) = false; +%$ end +%$ end +%$ +%$ T = all(t); +%$ rmpath('../../../data/') +%$ cd(OPATH); +%@eof:4 + diff --git a/src/@dates/private/greaterorequal.m b/src/@dates/private/greaterorequal.m index 00d3598..d99a0ce 100644 --- a/src/@dates/private/greaterorequal.m +++ b/src/@dates/private/greaterorequal.m @@ -1,6 +1,6 @@ -function c = greaterorequal(a,b) +function c = greaterorequal(a,b) % --*-- Unitary tests --*-- -% Copyright (C) 2013-2014 Dynare Team +% Copyright (C) 2013-2015 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 @@ -27,4 +27,123 @@ else c = false; end end -end \ No newline at end of file +end + +%@test:1 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [2, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = greaterorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:1 + +%@test:2 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [2, 2]; +%$ +%$ try +%$ boolean = greaterorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:2 + +%@test:3 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = greaterorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:3 + +%@test:4 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 4]; +%$ +%$ try +%$ boolean = greaterorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:4 + +%@test:5 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = greaterorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:5 + + + + diff --git a/src/@dates/private/greaterthan.m b/src/@dates/private/greaterthan.m index ae0b417..ffc7695 100644 --- a/src/@dates/private/greaterthan.m +++ b/src/@dates/private/greaterthan.m @@ -1,4 +1,4 @@ -function c = greaterthan(a,b) +function c = greaterthan(a,b) % --*-- Unitary tests --*-- % Copyright (C) 2013-2014 Dynare Team % @@ -27,4 +27,119 @@ else c = false; end end -end \ No newline at end of file +end + +%@test:1 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [2, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = greaterthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:1 + +%@test:2 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [2, 2]; +%$ +%$ try +%$ boolean = greaterthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:2 + +%@test:3 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = greaterthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:3 + +%@test:4 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 4]; +%$ +%$ try +%$ boolean = greaterthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:4 + +%@test:5 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = greaterthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:5 diff --git a/src/@dates/private/lessorequal.m b/src/@dates/private/lessorequal.m index 7f85bb9..58d05e7 100644 --- a/src/@dates/private/lessorequal.m +++ b/src/@dates/private/lessorequal.m @@ -1,4 +1,4 @@ -function c = lessorequal(a, b) +function c = lessorequal(a, b) % --*-- Unitary tests --*-- % Copyright (C) 2013-2014 Dynare Team % @@ -27,4 +27,119 @@ else c = false; end end -end \ No newline at end of file +end + +%@test:1 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [2, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = lessorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:1 + +%@test:2 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [2, 2]; +%$ +%$ try +%$ boolean = lessorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:2 + +%@test:3 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = lessorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:3 + +%@test:4 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 4]; +%$ +%$ try +%$ boolean = lessorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:4 + +%@test:5 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = lessorequal(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:5 diff --git a/src/@dates/private/lessthan.m b/src/@dates/private/lessthan.m index 549199e..c2e3228 100644 --- a/src/@dates/private/lessthan.m +++ b/src/@dates/private/lessthan.m @@ -1,4 +1,4 @@ -function c = lessthan(a,b) +function c = lessthan(a,b) % --*-- Unitary tests --*-- % Copyright (C) 2013-2014 Dynare Team % @@ -28,3 +28,118 @@ else end end end + +%@test:1 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [2, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = lessthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:1 + +%@test:2 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [2, 2]; +%$ +%$ try +%$ boolean = lessthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:2 + +%@test:3 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 4]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = lessthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:3 + +%@test:4 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 4]; +%$ +%$ try +%$ boolean = lessthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:4 + +%@test:5 +%$ OPATH = pwd(); +%$ [DATES_PATH, junk1, junk2] = fileparts(which('dates')); +%$ cd([DATES_PATH '/private']); +%$ +%$ a = [1, 2]; +%$ b = [1, 2]; +%$ +%$ try +%$ boolean = lessthan(a, b); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%$ cd(OPATH); +%@eof:5 diff --git a/src/@dates/strings.m b/src/@dates/strings.m index 0198d15..a6c9fc8 100644 --- a/src/@dates/strings.m +++ b/src/@dates/strings.m @@ -1,4 +1,4 @@ -function m = strings(o) +function m = strings(o) % --*-- Unitary tests --*-- % Returns a cell array of strings containing the dates % @@ -28,3 +28,28 @@ m = cell(1,o.ndat()); for i = 1:o.length() m(i) = { date2string(o.time(i,:), o.freq) }; end + +%@test:1 +%$ % Define a dates objects +%$ d = dates('1950Q1'):dates('1950Q3'); +%$ +%$ % Call the tested routine. +%$ try +%$ m = strings(d); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ % Check the results. +%$ if t(1) +%$ t(2) = iscell(m); +%$ t(3) = dassert(m{1}, '1950Q1'); +%$ t(4) = dassert(m{2}, '1950Q2'); +%$ t(5) = dassert(m{3}, '1950Q3'); +%$ t(6) = dassert(length(m), 3); +%$ end +%$ +%$ T = all(t); +%@eof:1 + diff --git a/src/@dates/subsasgn.m b/src/@dates/subsasgn.m index b9cd166..5a49f79 100644 --- a/src/@dates/subsasgn.m +++ b/src/@dates/subsasgn.m @@ -1,4 +1,4 @@ -function val = subsasgn(val, idx, rhs) +function val = subsasgn(val, idx, rhs) % --*-- Unitary tests --*-- % Copyright (C) 2013-2014 Dynare Team % @@ -15,4 +15,19 @@ function val = subsasgn(val, idx, rhs) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -error('dates::subsasgn: Members of dates class are private') \ No newline at end of file +error('dates::subsasgn: Members of dates class are private') + +%@test:1 +%$ % Define a dates objects +%$ d = dates('1950Q1'):dates('1950Q3'); +%$ +%$ % Call the tested routine. +%$ try +%$ d(1) = dates('1950Q4'); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%@eof:1 \ No newline at end of file diff --git a/src/@dates/vertcat.m b/src/@dates/vertcat.m index 82344e2..901d975 100644 --- a/src/@dates/vertcat.m +++ b/src/@dates/vertcat.m @@ -1,4 +1,4 @@ -function o = vertcat(varargin) +function o = vertcat(varargin) % --*-- Unitary tests --*-- % Overloads the vertcat method for dates objects. % @@ -34,4 +34,53 @@ if ~all(cellfun(@isdates,varargin)) error('dates:vertcat:ArgCheck','All input arguments must be dates objects.') end -o = horzcat(varargin{:}); \ No newline at end of file +o = horzcat(varargin{:}); + +%@test:1 +%$ % Define some dates +%$ B1 = '1953Q4'; +%$ B2 = '1950Q2'; +%$ B3 = '1950Q1'; +%$ B4 = '1945Q3'; +%$ B5 = '2009Q2'; +%$ +%$ % Define expected results. +%$ e.time = [1945 3; 1950 1; 1950 2; 1953 4; 2009 2]; +%$ e.freq = 4; +%$ +%$ % Call the tested routine. +%$ d = dates(B4,B3,B2); +%$ try +%$ d = [d; dates(B1); dates(B5)]; +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ % Check the results. +%$ if t(1) +%$ t(2) = dassert(d.time,e.time); +%$ t(3) = dassert(d.freq,e.freq); +%$ t(4) = size(e.time,1)==d.ndat(); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ % Define some dates +%$ B2 = '1950Q2'; +%$ B3 = '1950Q1'; +%$ B4 = '1945Q3'; +%$ +%$ % Call the tested routine. +%$ d = dates(B4,B3,B2); +%$ try +%$ d = [d; 1]; +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%@eof:2 diff --git a/src/utilities/convert/date2string.m b/src/utilities/convert/date2string.m index ebf5c01..ad2a3a9 100644 --- a/src/utilities/convert/date2string.m +++ b/src/utilities/convert/date2string.m @@ -1,4 +1,4 @@ -function s = date2string(varargin) +function s = date2string(varargin) % --*-- Unitary tests --*-- % Returns date as a string. % @@ -51,4 +51,71 @@ end s = [num2str(time(1)) freq2string(freq)]; if freq>1 s = strcat(s, num2str(time(2))); -end \ No newline at end of file +end + +%@test:1 +%$ try +%$ str = date2string(dates('1938Q4')); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(str, '1938Q4'); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ try +%$ str = date2string(dates('1938Q4','1945Q3')); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%@eof:2 + +%@test:3 +%$ try +%$ str = date2string([1938, 11], 12); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(str, '1938M11'); +%$ end +%$ +%$ T = all(t); +%@eof:3 + +%@test:4 +%$ try +%$ str = date2string([1938; 11], 12); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(str, '1938M11'); +%$ end +%$ +%$ T = all(t); +%@eof:4 + +%@test:5 +%$ try +%$ str = date2string([1938; 11], 4); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%@eof:5 diff --git a/src/utilities/convert/freq2string.m b/src/utilities/convert/freq2string.m index 2d12f8d..b7a6873 100644 --- a/src/utilities/convert/freq2string.m +++ b/src/utilities/convert/freq2string.m @@ -1,4 +1,4 @@ -function s = freq2string(freq) +function s = freq2string(freq) % --*-- Unitary tests --*-- % INPUTS % o freq scalar integer, equal to 1, 4, 12 or 52 (resp. annual, quaterly, monthly or weekly) @@ -34,4 +34,36 @@ switch freq s = 'W'; otherwise error('dates::freq2string: Unknown frequency!') -end \ No newline at end of file +end + +%@test:1 +%$ try +%$ strY = freq2string(1); +%$ strQ = freq2string(4); +%$ strM = freq2string(12); +%$ strW = freq2string(52); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(strY, 'Y'); +%$ t(3) = dassert(strQ, 'Q'); +%$ t(4) = dassert(strM, 'M'); +%$ t(5) = dassert(strW, 'W'); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ try +%$ str = freq2string(13); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%@eof:2 diff --git a/src/utilities/convert/string2freq.m b/src/utilities/convert/string2freq.m index ea04c39..8ec1c14 100644 --- a/src/utilities/convert/string2freq.m +++ b/src/utilities/convert/string2freq.m @@ -1,4 +1,4 @@ -function freq = string2freq(s) +function freq = string2freq(s) % --*-- Unitary tests --*-- % INPUTS % o s character, equal to Y, Q, M or W (resp. annual, quaterly, monthly or weekly) @@ -34,4 +34,36 @@ switch upper(s) freq = 52; otherwise error('dates::freq2string: Unknown frequency!') -end \ No newline at end of file +end + +%@test:1 +%$ try +%$ nY = string2freq('Y'); +%$ nQ = string2freq('Q'); +%$ nM = string2freq('M'); +%$ nW = string2freq('W'); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(nY, 1); +%$ t(3) = dassert(nQ, 4); +%$ t(4) = dassert(nM, 12); +%$ t(5) = dassert(nW, 52); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ try +%$ n = string2freq('Z'); +%$ t(1) = false; +%$ catch +%$ t(1) = true; +%$ end +%$ +%$ T = all(t); +%@eof:2 diff --git a/src/utilities/is/isdates.m b/src/utilities/is/isdates.m index 33b6790..360eaf9 100644 --- a/src/utilities/is/isdates.m +++ b/src/utilities/is/isdates.m @@ -1,4 +1,4 @@ -function B = isdates(A) +function B = isdates(A) % --*-- Unitary tests --*-- % Tests if the input A is a dates object. @@ -19,4 +19,79 @@ function B = isdates(A) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -B = isa(A,'dates'); \ No newline at end of file +B = isa(A,'dates'); + +%@test:1 +%$ try +%$ boolean = isdates(dates('1950Q2')); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ try +%$ boolean = isdates(dates()); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:2 + +%@test:3 +%$ try +%$ boolean = isdates(dates('1950Q2'):dates('1950Q4')); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:3 + +%@test:4 +%$ try +%$ boolean = isdates(1); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%@eof:4 + +%@test:5 +%$ try +%$ boolean = isdates('1938M11'); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%@eof:5 \ No newline at end of file diff --git a/src/utilities/is/isfreq.m b/src/utilities/is/isfreq.m index f552bdc..880c204 100644 --- a/src/utilities/is/isfreq.m +++ b/src/utilities/is/isfreq.m @@ -1,4 +1,4 @@ -function B = isfreq(A) +function B = isfreq(A) % --*-- Unitary tests --*-- % Tests if A can be interpreted as a frequency. % @@ -36,4 +36,79 @@ end if isnumeric(A) && isequal(length(A),1) && ismember(A,[1 4 12 52]) B = true; -end \ No newline at end of file +end + +%@test:1 +%$ try +%$ boolean = isfreq('w'); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ try +%$ boolean = isfreq('W'); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:2 + +%@test:3 +%$ try +%$ boolean = isfreq('M'); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:3 + +%@test:4 +%$ try +%$ boolean = isfreq('Q'); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:4 + +%@test:5 +%$ try +%$ boolean = isfreq('Y'); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:5 diff --git a/src/utilities/is/issubperiod.m b/src/utilities/is/issubperiod.m index 5f7a756..ec4dd1f 100644 --- a/src/utilities/is/issubperiod.m +++ b/src/utilities/is/issubperiod.m @@ -1,4 +1,4 @@ -function C = issubperiod(A,B) +function C = issubperiod(A,B) % --*-- Unitary tests --*-- % Copyright (C) 2013 Dynare Team % @@ -21,4 +21,49 @@ if isfreq(B) C = all(isint(A)) && all(A>=1) && all(A<=B); else error('issubperiod:: Second input argument must be equal to 1, 4, 12 or 52 (frequency)!') -end \ No newline at end of file +end + +%@test:1 +%$ try +%$ b = issubperiod(1, 1); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(b, true); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ try +%$ b = issubperiod(2, 4); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(b, true); +%$ end +%$ +%$ T = all(t); +%@eof:2 + +%@test:3 +%$ try +%$ b = issubperiod(6, 4); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(b, false); +%$ end +%$ +%$ T = all(t); +%@eof:3 \ No newline at end of file diff --git a/src/utilities/missing/isint/isint.m b/src/utilities/missing/isint/isint.m index 482d34b..73417cc 100644 --- a/src/utilities/missing/isint/isint.m +++ b/src/utilities/missing/isint/isint.m @@ -42,4 +42,88 @@ l = abs(fix(a)-a)<1e-15; if nargout>1 c = find(l==true); d = find(l==false); -end \ No newline at end of file +end + +%@test:1 +%$ a = 1938; +%$ try +%$ boolean = isint(a); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, true); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ a = pi; +%$ try +%$ boolean = isint(a); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%@eof:2 + +%@test:3 +%$ a = '1'; +%$ try +%$ boolean = isint(a); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(boolean, false); +%$ end +%$ +%$ T = all(t); +%@eof:3 + +%@test:4 +%$ a = [1; 2; 3]; +%$ try +%$ [boolean, iV, iF] = isint(a); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(all(boolean), true); +%$ t(3) = dassert(isequal(iV, [1; 2; 3]), true); +%$ t(4) = dassert(isempty(iF), true); +%$ end +%$ +%$ T = all(t); +%@eof:4 + +%@test:5 +%$ a = [1; pi; 3]; +%$ try +%$ [boolean, iV, iF] = isint(a); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(all(boolean), false); +%$ t(3) = dassert(isequal(iV, [1; 3]), true); +%$ t(4) = dassert(isequal(iF, 2), true); +%$ end +%$ +%$ T = all(t); +%@eof:5 \ No newline at end of file diff --git a/src/utilities/missing/shiftS/shiftS.m b/src/utilities/missing/shiftS/shiftS.m index 2ebd4aa..c0c77e5 100644 --- a/src/utilities/missing/shiftS/shiftS.m +++ b/src/utilities/missing/shiftS/shiftS.m @@ -1,4 +1,4 @@ -function S = shiftS(S,n) +function S = shiftS(S,n) % --*-- Unitary tests --*-- % Removes the first n elements of a one dimensional cell array. @@ -21,4 +21,39 @@ if length(S) >= n+1 S = S(n+1:end); else S = {}; -end \ No newline at end of file +end + +%@test:1 +%$ Cell = {'1', '2', '3'}; +%$ try +%$ Cell = shiftS(Cell,1); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(length(Cell), 2); +%$ t(3) = dassert(Cell, {'2', '3'}); +%$ end +%$ +%$ T = all(t); +%@eof:1 + +%@test:1 +%$ Cell = {'1', '2', '3'}; +%$ try +%$ Cell = shiftS(Cell,3); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(length(Cell), 0); +%$ t(3) = dassert(isequal(Cell, {}), true); +%$ end +%$ +%$ T = all(t); +%@eof:1 + -- GitLab