Mercurial > hg > octave-nkf
diff scripts/time/datevec.m @ 18919:9eb72fa5f8b5
datevec.m: Return value with same shape as input (bug #42334).
datevec.m: If input is not a row vector, record size of input and restore with
reshape at end of function. Add input validation tests.
author | Sergey Plotnikov <seryozha.plotnikov@gmail.com> |
---|---|
date | Sun, 11 May 2014 17:14:10 -0700 |
parents | d63878346099 |
children | 38925538ec14 |
line wrap: on
line diff
--- a/scripts/time/datevec.m +++ b/scripts/time/datevec.m @@ -113,6 +113,8 @@ p = (localtime (time ())).year + 1900 - 50; endif + do_resize = false; + if (iscell (date)) nd = numel (date); @@ -146,6 +148,10 @@ else # datenum input + if (! isrow (date)) + date_sz = size (date); + do_resize = true; + endif date = date(:); ## Move day 0 from midnight -0001-12-31 to midnight 0000-3-1 @@ -182,6 +188,13 @@ if (nargout <= 1) y = [y, m, d, h, mi, s]; + elseif (do_resize) + y = reshape (y, date_sz); + m = reshape (m, date_sz); + d = reshape (d, date_sz); + h = reshape (h, date_sz); + mi = reshape (mi, date_sz); + s = reshape (s, date_sz); endif endfunction @@ -306,12 +319,23 @@ %!assert (datevec ("03:38 PM"), [yr,1,1,15,38,0]) %!assert (datevec ("03/13/1962"), [1962,3,13,0,0,0]) -%% Test millisecond format FFF +## Test millisecond format FFF %!assert (datevec ("15:38:21.25", "HH:MM:SS.FFF"), [yr,1,1,15,38,21.025]) -# Other tests +## Test structure of return value (bug #42334) +%!test +%! [~, ~, d] = datevec ([1 2; 3 4]); +%! assert (d, [1 2; 3 4]); + +## Other tests %!assert (datenum (datevec ([-1e4:1e4])), [-1e4:1e4]'); %!test %! t = linspace (-2e5, 2e5, 10993); %! assert (all (abs (datenum (datevec (t)) - t') < 1e-5)); +%% Test input validation +%!error datevec () +%!error datevec (1,2,3,4) +%!error <none of the standard formats match> datevec ("foobar") +%!error <DATE not parsed correctly with given format> datevec ("foobar", "%d") +