# HG changeset patch # User dbateman # Date 1196725927 0 # Node ID e4398e3903beaf6e813f858afe75b7347617e4a4 # Parent da540e715d056ece1acbfcf6258b323263db0f25 [project @ 2007-12-03 23:52:07 by dbateman] diff -r da540e715d05 -r e4398e3903be scripts/ChangeLog --- a/scripts/ChangeLog Mon Dec 03 22:55:21 2007 +0000 +++ b/scripts/ChangeLog Mon Dec 03 23:52:07 2007 +0000 @@ -1,5 +1,7 @@ 2007-12-03 David Bateman + * testfun/test.m: Add "testif" type to allow for conditional tests. + * plot/plotyy.m: Use activepositionproperty property of axes object. Set second axis color to "none". * plot/__go_draw_axes__.m: Respect the activepositionproperty diff -r da540e715d05 -r e4398e3903be scripts/testfun/test.m --- a/scripts/testfun/test.m Mon Dec 03 22:55:21 2007 +0000 +++ b/scripts/testfun/test.m Mon Dec 03 23:52:07 2007 +0000 @@ -75,14 +75,16 @@ ## PKG_ADD: mark_as_command test -function [__ret1, __ret2, __ret3] = test (__name, __flag, __fid) +function [__ret1, __ret2, __ret3, __ret4] = test (__name, __flag, __fid) ## information from test will be introduced by "key" persistent __signal_fail = "!!!!! "; persistent __signal_empty = "????? "; persistent __signal_block = " ***** "; persistent __signal_file = ">>>>> "; + persistent __signal_skip = "----- "; __xfail = 0; + __xskip = 0; if (nargin < 2 || isempty (__flag)) __flag = "quiet"; @@ -415,6 +417,20 @@ endif __code = ""; # code already processed + ## TESTIF + elseif (strcmp (__type, "testif")) + [__e, __feat] = regexp (__code, '^\s*([^\s]+)', 'end', 'tokens'); + if (isempty (findstr (octave_config_info ("DEFS"), __feat{1}{1}))) + __xskip++; + __success = 0; + __istest = 0; + __code = ""; # skip the code + __msg = sprintf ("%sskipped test\n", __signal_skip); + else + __istest = 1; + __code = __code(__e + 1 : end); + endif + ## TEST elseif (strcmp (__type, "test") || strcmp (__type, "xtest")) __istest = 1; @@ -495,6 +511,9 @@ else printf ("PASSES %d out of %d tests\n", __successes, __tests); endif + if (__xskip) + printf ("Skipped %d tests due to missing features\n", __xskip); + endif elseif (__grabdemo) __ret1 = __demo_code; __ret2 = __demo_idx; @@ -504,6 +523,7 @@ __ret1 = __successes; __ret2 = __tests; __ret3 = __xfail; + __ret4 = __xskip; endif endfunction @@ -594,6 +614,14 @@ endif endfunction +## Test for test for missing features +%!testif OCTAVE_SOURCE +%! ## This test should be run +%! assert (true); +%!testif HAVE_FOOBAR +%! ## missing feature. Fail if this test is run +%! error("Failed missing feature test"); + ### Test for a known failure %!xtest error("This test is known to fail") diff -r da540e715d05 -r e4398e3903be src/ChangeLog --- a/src/ChangeLog Mon Dec 03 22:55:21 2007 +0000 +++ b/src/ChangeLog Mon Dec 03 23:52:07 2007 +0000 @@ -1,11 +1,12 @@ -2007-12-02 David Bateman +2007-12-03 David Bateman + + * DLD-FUNCTIONS/regexp.cc: Use "%!testif" blocks for conditional + tests on PCRE. * graphics.cc (class axes): Add color and activepositionproperty properties to axis objects. * graphics.h.in (class axes): ditto. -2007-12-03 David Bateman - * DLD-FUNCTIONS/regexp.cc: Also include sys/types.h for regexp. 2007-11-30 John W. Eaton diff -r da540e715d05 -r e4398e3903be src/DLD-FUNCTIONS/regexp.cc --- a/src/DLD-FUNCTIONS/regexp.cc Mon Dec 03 22:55:21 2007 +0000 +++ b/src/DLD-FUNCTIONS/regexp.cc Mon Dec 03 23:52:07 2007 +0000 @@ -927,95 +927,81 @@ %! ## Matlab gives [1,0] here but that seems wrong. %! assert (size(t), [1,1]) -%!test +%!testif HAVE_PCRE %! ## This test is expected to fail if PCRE is not installed -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! [s, e, te, m, t, nm] = regexp('short test string','(?\w*t)\s*(?\w*t)'); -%! assert (s,1) -%! assert (e,10) -%! assert (size(te), [1,1]) -%! assert (te{1}, [1 5; 7, 10]) -%! assert (m{1},'short test') -%! assert (size(t),[1,1]) -%! assert (t{1}{1},'short') -%! assert (t{1}{2},'test') -%! assert (size(nm), [1,1]) -%! assert (!isempty(fieldnames(nm))) -%! assert (sort(fieldnames(nm)),{'word1';'word2'}) -%! assert (nm.word1,'short') -%! assert (nm.word2,'test') -%! endif +%! [s, e, te, m, t, nm] = regexp('short test string','(?\w*t)\s*(?\w*t)'); +%! assert (s,1) +%! assert (e,10) +%! assert (size(te), [1,1]) +%! assert (te{1}, [1 5; 7, 10]) +%! assert (m{1},'short test') +%! assert (size(t),[1,1]) +%! assert (t{1}{1},'short') +%! assert (t{1}{2},'test') +%! assert (size(nm), [1,1]) +%! assert (!isempty(fieldnames(nm))) +%! assert (sort(fieldnames(nm)),{'word1';'word2'}) +%! assert (nm.word1,'short') +%! assert (nm.word2,'test') -%!test +%!testif HAVE_PCRE %! ## This test is expected to fail if PCRE is not installed -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! [nm, m, te, e, s, t] = regexp('short test string','(?\w*t)\s*(?\w*t)', 'names', 'match', 'tokenExtents', 'end', 'start', 'tokens'); -%! assert (s,1) -%! assert (e,10) -%! assert (size(te), [1,1]) -%! assert (te{1}, [1 5; 7, 10]) -%! assert (m{1},'short test') -%! assert (size(t),[1,1]) -%! assert (t{1}{1},'short') -%! assert (t{1}{2},'test') -%! assert (size(nm), [1,1]) -%! assert (!isempty(fieldnames(nm))) -%! assert (sort(fieldnames(nm)),{'word1';'word2'}) -%! assert (nm.word1,'short') -%! assert (nm.word2,'test') -%! endif +%! [nm, m, te, e, s, t] = regexp('short test string','(?\w*t)\s*(?\w*t)', 'names', 'match', 'tokenExtents', 'end', 'start', 'tokens'); +%! assert (s,1) +%! assert (e,10) +%! assert (size(te), [1,1]) +%! assert (te{1}, [1 5; 7, 10]) +%! assert (m{1},'short test') +%! assert (size(t),[1,1]) +%! assert (t{1}{1},'short') +%! assert (t{1}{2},'test') +%! assert (size(nm), [1,1]) +%! assert (!isempty(fieldnames(nm))) +%! assert (sort(fieldnames(nm)),{'word1';'word2'}) +%! assert (nm.word1,'short') +%! assert (nm.word2,'test') -%!test +%!testif HAVE_PCRE %! ## This test is expected to fail if PCRE is not installed -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! [t, nm] = regexp("John Davis\nRogers, James",'(?\w+)\s+(?\w+)|(?\w+),\s+(?\w+)','tokens','names'); -%! assert (size(t), [1,2]); -%! assert (t{1}{1},'John'); -%! assert (t{1}{2},'Davis'); -%! assert (t{2}{1},'Rogers'); -%! assert (t{2}{2},'James'); -%! assert (size(nm), [1,1]); -%! assert (nm.first{1},'John'); -%! assert (nm.first{2},'James'); -%! assert (nm.last{1},'Davis'); -%! assert (nm.last{2},'Rogers'); -%! endif +%! [t, nm] = regexp("John Davis\nRogers, James",'(?\w+)\s+(?\w+)|(?\w+),\s+(?\w+)','tokens','names'); +%! assert (size(t), [1,2]); +%! assert (t{1}{1},'John'); +%! assert (t{1}{2},'Davis'); +%! assert (t{2}{1},'Rogers'); +%! assert (t{2}{2},'James'); +%! assert (size(nm), [1,1]); +%! assert (nm.first{1},'John'); +%! assert (nm.first{2},'James'); +%! assert (nm.last{1},'Davis'); +%! assert (nm.last{2},'Rogers'); %!assert(regexp("abc\nabc",'.'),[1:7]) %!assert(regexp("abc\nabc",'.','dotall'),[1:7]) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert(regexp("abc\nabc",'(?s).'),[1:7]) -%! assert(regexp("abc\nabc",'.','dotexceptnewline'),[1,2,3,5,6,7]) -%! assert(regexp("abc\nabc",'(?-s).'),[1,2,3,5,6,7]) -%! endif +%!testif HAVE_PCRE +%! assert(regexp("abc\nabc",'(?s).'),[1:7]) +%! assert(regexp("abc\nabc",'.','dotexceptnewline'),[1,2,3,5,6,7]) +%! assert(regexp("abc\nabc",'(?-s).'),[1,2,3,5,6,7]) %!assert(regexp("caseCaSe",'case'),1) %!assert(regexp("caseCaSe",'case',"matchcase"),1) %!assert(regexp("caseCaSe",'case',"ignorecase"),[1,5]) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert(regexp("caseCaSe",'(?-i)case'),1) -%! assert(regexp("caseCaSe",'(?i)case'),[1,5]) -%! endif +%!testif HAVE_PCRE +%! assert(regexp("caseCaSe",'(?-i)case'),1) +%! assert(regexp("caseCaSe",'(?i)case'),[1,5]) %!assert (regexp("abc\nabc",'c$'),7) %!assert (regexp("abc\nabc",'c$',"stringanchors"),7) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert (regexp("abc\nabc",'(?-m)c$'),7) -%! assert (regexp("abc\nabc",'c$',"lineanchors"),[3,7]) -%! assert (regexp("abc\nabc",'(?m)c$'),[3,7]) -%! endif +%!testif HAVE_PCRE +%! assert (regexp("abc\nabc",'(?-m)c$'),7) +%! assert (regexp("abc\nabc",'c$',"lineanchors"),[3,7]) +%! assert (regexp("abc\nabc",'(?m)c$'),[3,7]) %!assert (regexp("this word",'s w'),4) %!assert (regexp("this word",'s w','literalspacing'),4) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert (regexp("this word",'(?-x)s w','literalspacing'),4) -%! assert (regexp("this word",'s w','freespacing'),zeros(1,0)) -%! assert (regexp("this word",'(?x)s w'),zeros(1,0)) -%! endif +%!testif HAVE_PCRE +%! assert (regexp("this word",'(?-x)s w','literalspacing'),4) +%! assert (regexp("this word",'s w','freespacing'),zeros(1,0)) +%! assert (regexp("this word",'(?x)s w'),zeros(1,0)) %!error regexp('string', 'tri', 'BadArg'); %!error regexp('string'); @@ -1117,79 +1103,67 @@ %! ## Matlab gives [1,0] here but that seems wrong. %! assert (size(t), [1,1]) -%!test +%!testif HAVE_PCRE %! ## This test is expected to fail if PCRE is not installed -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! [s, e, te, m, t, nm] = regexpi('ShoRt Test String','(?\w*t)\s*(?\w*t)'); -%! assert (s,1) -%! assert (e,10) -%! assert (size(te), [1,1]) -%! assert (te{1}, [1 5; 7, 10]) -%! assert (m{1},'ShoRt Test') -%! assert (size(t),[1,1]) -%! assert (t{1}{1},'ShoRt') -%! assert (t{1}{2},'Test') -%! assert (size(nm), [1,1]) -%! assert (!isempty(fieldnames(nm))) -%! assert (sort(fieldnames(nm)),{'word1';'word2'}) -%! assert (nm.word1,'ShoRt') -%! assert (nm.word2,'Test') -%! endif +%! [s, e, te, m, t, nm] = regexpi('ShoRt Test String','(?\w*t)\s*(?\w*t)'); +%! assert (s,1) +%! assert (e,10) +%! assert (size(te), [1,1]) +%! assert (te{1}, [1 5; 7, 10]) +%! assert (m{1},'ShoRt Test') +%! assert (size(t),[1,1]) +%! assert (t{1}{1},'ShoRt') +%! assert (t{1}{2},'Test') +%! assert (size(nm), [1,1]) +%! assert (!isempty(fieldnames(nm))) +%! assert (sort(fieldnames(nm)),{'word1';'word2'}) +%! assert (nm.word1,'ShoRt') +%! assert (nm.word2,'Test') -%!test +%!testif HAVE_PCRE %! ## This test is expected to fail if PCRE is not installed -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! [nm, m, te, e, s, t] = regexpi('ShoRt Test String','(?\w*t)\s*(?\w*t)', 'names', 'match', 'tokenExtents', 'end', 'start', 'tokens'); -%! assert (s,1) -%! assert (e,10) -%! assert (size(te), [1,1]) -%! assert (te{1}, [1 5; 7, 10]) -%! assert (m{1},'ShoRt Test') -%! assert (size(t),[1,1]) -%! assert (t{1}{1},'ShoRt') -%! assert (t{1}{2},'Test') -%! assert (size(nm), [1,1]) -%! assert (!isempty(fieldnames(nm))) -%! assert (sort(fieldnames(nm)),{'word1';'word2'}) -%! assert (nm.word1,'ShoRt') -%! assert (nm.word2,'Test') -%! endif +%! [nm, m, te, e, s, t] = regexpi('ShoRt Test String','(?\w*t)\s*(?\w*t)', 'names', 'match', 'tokenExtents', 'end', 'start', 'tokens'); +%! assert (s,1) +%! assert (e,10) +%! assert (size(te), [1,1]) +%! assert (te{1}, [1 5; 7, 10]) +%! assert (m{1},'ShoRt Test') +%! assert (size(t),[1,1]) +%! assert (t{1}{1},'ShoRt') +%! assert (t{1}{2},'Test') +%! assert (size(nm), [1,1]) +%! assert (!isempty(fieldnames(nm))) +%! assert (sort(fieldnames(nm)),{'word1';'word2'}) +%! assert (nm.word1,'ShoRt') +%! assert (nm.word2,'Test') %!assert(regexpi("abc\nabc",'.'),[1:7]) %!assert(regexpi("abc\nabc",'.','dotall'),[1:7]) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert(regexpi("abc\nabc",'(?s).'),[1:7]) -%! assert(regexpi("abc\nabc",'.','dotexceptnewline'),[1,2,3,5,6,7]) -%! assert(regexpi("abc\nabc",'(?-s).'),[1,2,3,5,6,7]) -%! endif +%!testif HAVE_PCRE +%! assert(regexpi("abc\nabc",'(?s).'),[1:7]) +%! assert(regexpi("abc\nabc",'.','dotexceptnewline'),[1,2,3,5,6,7]) +%! assert(regexpi("abc\nabc",'(?-s).'),[1,2,3,5,6,7]) %!assert(regexpi("caseCaSe",'case'),[1,5]) %!assert(regexpi("caseCaSe",'case',"matchcase"),1) %!assert(regexpi("caseCaSe",'case',"ignorecase"),[1,5]) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert(regexpi("caseCaSe",'(?-i)case'),1) -%! assert(regexpi("caseCaSe",'(?i)case'),[1,5]) -%! endif +%!testif HAVE_PCRE +%! assert(regexpi("caseCaSe",'(?-i)case'),1) +%! assert(regexpi("caseCaSe",'(?i)case'),[1,5]) %!assert (regexpi("abc\nabc",'c$'),7) %!assert (regexpi("abc\nabc",'c$',"stringanchors"),7) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert (regexpi("abc\nabc",'(?-m)c$'),7) -%! assert (regexpi("abc\nabc",'c$',"lineanchors"),[3,7]) -%! assert (regexpi("abc\nabc",'(?m)c$'),[3,7]) -%! endif +%!testif HAVE_PCRE +%! assert (regexpi("abc\nabc",'(?-m)c$'),7) +%! assert (regexpi("abc\nabc",'c$',"lineanchors"),[3,7]) +%! assert (regexpi("abc\nabc",'(?m)c$'),[3,7]) %!assert (regexpi("this word",'s w'),4) %!assert (regexpi("this word",'s w','literalspacing'),4) -%!test -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! assert (regexpi("this word",'(?-x)s w','literalspacing'),4) -%! assert (regexpi("this word",'s w','freespacing'),zeros(1,0)) -%! assert (regexpi("this word",'(?x)s w'),zeros(1,0)) -%! endif +%!testif HAVE_PCRE +%! assert (regexpi("this word",'(?-x)s w','literalspacing'),4) +%! assert (regexpi("this word",'s w','freespacing'),zeros(1,0)) +%! assert (regexpi("this word",'(?x)s w'),zeros(1,0)) %!error regexpi('string', 'tri', 'BadArg'); %!error regexpi('string'); @@ -1532,13 +1506,11 @@ %! t = regexprep(xml,'<[!?][^>]*>','','tokenize'); %! assert(t,' some stuff') -%!test # Capture replacement -%! if (!isempty(findstr(octave_config_info ("DEFS"),"HAVE_PCRE"))) -%! data = "Bob Smith\nDavid Hollerith\nSam Jenkins"; -%! result = "Smith, Bob\nHollerith, David\nJenkins, Sam"; -%! t = regexprep(data,'(?m)^(\w+)\s+(\w+)$','$2, $1'); -%! assert(t,result) -%! end +%!testif HAVE_PCRE # Capture replacement +%! data = "Bob Smith\nDavid Hollerith\nSam Jenkins"; +%! result = "Smith, Bob\nHollerith, David\nJenkins, Sam"; +%! t = regexprep(data,'(?m)^(\w+)\s+(\w+)$','$2, $1'); +%! assert(t,result) # Return the original if no match %!assert(regexprep('hello','world','earth'),'hello')