append.m 2.98 KB
Newer Older
1
function dd = append(dd,a)
Stéphane Adjemian's avatar
Stéphane Adjemian committed
2
% append method for dynDates class.
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

%@info:
%! @deftypefn {Function File} {@var{dd} =} sort (@var{dd}, @var{a})
%! @anchor{dynDates/append}
%! @sp 1
%! Append method for the Dynare dates class.
%! @sp 2
%! @strong{Inputs}
%! @sp 1
%! @table @ @var
%! @item dd
%! Object instantiated by @ref{dynDates}.
%! @item a
%! Object instantiated by @ref{dynDate}.
%! @end table
%! @sp 2
%! @strong{Outputs}
%! @sp 1
%! @table @ @var
%! @item dd
%! Object instantiated by @ref{dynDates}, with an additional date (@var{a}).
%! @end table
%! @sp 2
%! @strong{This function is called by:}
%! @sp 2
%! @strong{This function calls:}
%!
%! @end deftypefn
%@eod:

Sébastien Villemot's avatar
Sébastien Villemot committed
33
% Copyright (C) 2012-2013 Dynare Team
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare.  If not, see <http://www.gnu.org/licenses/>.

% AUTHOR(S) stephane DOT adjemian AT univ DASH lemans DOT fr

if ~isa(dd,'dynDates')
    error(['dynDates::append: Input argument ' inputname(dd) ' has to be a dynDates object.'])
end

56
57
58
if ~(isa(a,'dynDate') || isa(a,'dynDates') || ischar(a))
    error(['dynDates::append: Input argument ' inputname(a) ' has to be ' ...
                        'a dynDate object or a dynDates object or a string (formatted date).'])
59
60
61
62
63
64
65
66
67
end

if isempty(a)
    return
end

if isa(a,'dynDate')
    dd.time = [dd.time; a.time];
    dd.ndat = dd.ndat+1;
68
69
70
elseif isa(a,'dynDates')
    dd.time = [dd.time; a.time];
    dd.ndat = dd.ndat+a.ndat;
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
else
    tmp = dynDate();
    dd.time = [dd.time; tmp(a).time];
    dd.ndat = dd.ndat+1;
end

%@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;
%$ e.ndat = 5;
%$
%$ % Call the tested routine.
%$ d = dynDates(B4,B3,B2,B1);
%$ d = d.append(dynDate(B5));
%$
%$ % Check the results.
%$ t(1) = dyn_assert(d.time,e.time);
%$ t(2) = dyn_assert(d.freq,e.freq);
%$ t(3) = dyn_assert(d.ndat,e.ndat);
%$ T = all(t);
Stéphane Adjemian's avatar
Stéphane Adjemian committed
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
%@eof:1

%@test:2
%$ % 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;
%$ e.ndat = 5;
%$
%$ % Call the tested routine.
%$ d = dynDates(B4,B3,B2,B1);
%$ d = d.append(B5);
%$
%$ % Check the results.
%$ t(1) = dyn_assert(d.time,e.time);
%$ t(2) = dyn_assert(d.freq,e.freq);
%$ t(3) = dyn_assert(d.ndat,e.ndat);
%$ T = all(t);
%@eof:2