ending function in tests

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ending function in tests

marco atzeri-2
Controlling the test results of odepkg

https://bitbucket.org/odepkg/odepkg/src/default/

with octave 5.2 on Cygwin I hit a strange error

***** end
!!!!! unknown test type!

the error is caused by ending functions with just "end"

%!function [ydot] = pendulum (vt, vy)
%!  ydot = [0.5*vy(length(vy)/2+1:end);
-(2*5*9.806)*[zeros(length(vy)/4);ones(length(vy)/4)]];
%!end

of course replacing

    %!end
with
    %!endfunction

works, but also declaring a normal function with "end" works

function [ydot] = pendulum (vt, vy)
    ydot = [0.5*vy(length(vy)/2+1:end);
-(2*5*9.806)*[zeros(length(vy)/4);ones(length(vy)/4)]];
end

as this maintain compatibility with Matlab.
Is this by design or should I open a bug ?

Regards
Marco






Reply | Threaded
Open this post in threaded view
|

Re: ending function in tests

John W. Eaton
Administrator
On 5/21/20 4:24 PM, Marco Atzeri wrote:

> Controlling the test results of odepkg
>
> https://bitbucket.org/odepkg/odepkg/src/default/
>
> with octave 5.2 on Cygwin I hit a strange error
>
> ***** end
> !!!!! unknown test type!
>
> the error is caused by ending functions with just "end"
>
> %!function [ydot] = pendulum (vt, vy)
> %!  ydot = [0.5*vy(length(vy)/2+1:end);
> -(2*5*9.806)*[zeros(length(vy)/4);ones(length(vy)/4)]];
> %!end
>
> of course replacing
>
>     %!end
> with
>     %!endfunction
>
> works, but also declaring a normal function with "end" works
>
> function [ydot] = pendulum (vt, vy)
>     ydot = [0.5*vy(length(vy)/2+1:end);
> -(2*5*9.806)*[zeros(length(vy)/4);ones(length(vy)/4)]];
> end
>
> as this maintain compatibility with Matlab.
> Is this by design or should I open a bug ?

I think it is by design, to simplify the code that breaks the test
chunks into parts.  It's reasonable to expect "%!endfunction" to have
only one purpose.  But %!end could be the end of any block.

jwe