diff --git a/src/@dseries/flip.m b/src/@dseries/flip.m new file mode 100644 index 0000000000000000000000000000000000000000..44c4126dc9d1cc631b72d5d1ffaf413e41704f89 --- /dev/null +++ b/src/@dseries/flip.m @@ -0,0 +1,53 @@ +function o = flip(o) % --*-- Unitary tests --*-- + +% Flips the rows in the data member (without changing the +% periods order) +% +% INPUTS +% - o [dseries] +% +% OUTPUTS +% - o [dseries] + +% Copyright © 2020 Dynare Team +% +% 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/>. + +o = copy(o); +o.flip_; + +return +%@test:1 +% Define a dates object +data = transpose(1:3); +o = dseries(data); +q = dseries(data); + +% Call the tested routine. +try + p = o.flip(); + t(1) = true; +catch + t(1) = false; +end + +if t(1) + t(2) = dassert(o, q); + t(3) = dassert(p.data, [3; 2; 1]); +end + +T = all(t); +%@eof:1 \ No newline at end of file diff --git a/src/@dseries/flip_.m b/src/@dseries/flip_.m new file mode 100644 index 0000000000000000000000000000000000000000..3945fd5ff61e69421cdfa0d93f15a75fc099761e --- /dev/null +++ b/src/@dseries/flip_.m @@ -0,0 +1,101 @@ +function o = flip_(o) % --*-- Unitary tests --*-- + +% Flips the rows in the data member (without changing the +% periods order) +% +% INPUTS +% - o [dseries] +% +% OUTPUTS +% - o [dseries] + +% Copyright © 2020 Dynare Team +% +% 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/>. + +for i=1:vobs(o) + if isempty(o.ops{i}) + o.ops(i) = {['flip(' o.name{i} ')']}; + else + o.ops(i) = {['flip(' o.ops{i} ')']}; + end +end + +o.data = flip(o.data); + +return +%@test:1 +% Define a dates object +data = [transpose(1:3) transpose(4:6)]; +o = dseries(data); +q = o; +r = copy(o); + +% Call the tested routine. +try + o.flip_(); + t(1) = true; +catch + t(1) = false; +end + +if t(1) + t(2) = dassert(o.data, [3 6; 2 5; 1 4]); + t(3) = dassert(q.data, [3 6; 2 5; 1 4]); + t(4) = dassert(r.data, data); + t(5) = dassert(o.name{1}, 'Variable_1') && dassert(o.name{2}, 'Variable_2'); + t(6) = dassert(q.name{1}, 'Variable_1') && dassert(q.name{2}, 'Variable_2'); + t(7) = dassert(r.name{1}, 'Variable_1') && dassert(r.name{2}, 'Variable_2'); + t(8) = dassert(o.ops{1}, 'flip(Variable_1)') && dassert(o.ops{2}, 'flip(Variable_2)'); + t(9) = dassert(q.ops{1}, 'flip(Variable_1)') && dassert(q.ops{2}, 'flip(Variable_2)'); +end + +T = all(t); +%@eof:1 + +%@test:2 +%$ % Define a dates object +%$ data = [ones(10,1), -ones(10,1)]; +%$ o = dseries(data); +%$ q = o; +%$ r = copy(o); +%$ +%$ % Call the tested routine. +%$ try +%$ o.abs_(); +%$ t(1) = true; +%$ catch +%$ t(1) = false; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(length(o.name), 2); +%$ t(3) = dassert(o.name{1},'Variable_1'); +%$ t(4) = dassert(o.name{2},'Variable_2'); +%$ t(5) = dassert(q.name{1},'Variable_1'); +%$ t(6) = dassert(q.name{2},'Variable_2'); +%$ t(7) = dassert(r.name{1},'Variable_1'); +%$ t(8) = dassert(r.name{2},'Variable_2'); +%$ t(9) = dassert(o.ops{1},'abs(Variable_1)'); +%$ t(10) = dassert(o.ops{2},'abs(Variable_2)'); +%$ t(11) = dassert(q.ops{1},'abs(Variable_1)'); +%$ t(12) = dassert(q.ops{2},'abs(Variable_2)'); +%$ t(13) = isempty(r.ops{1}); +%$ t(14) = isempty(r.ops{2}); +%$ end +%$ +%$ T = all(t); +%@eof:2 \ No newline at end of file diff --git a/src/@dseries/subsref.m b/src/@dseries/subsref.m index 97b5b1f03ac81008031d6e344eac01031b683cff..ba808dc92a7a0e8c99ad660a0042c7b7f07ca3ab 100644 --- a/src/@dseries/subsref.m +++ b/src/@dseries/subsref.m @@ -116,6 +116,7 @@ switch S(1).type 'diff', 'diff_', ... 'mdiff','mdiff_', ... 'abs','abs_', ... + 'flip','flip_', ... 'isnan', ... 'isinf', ... 'isreal', ...