Mercurial > hg > octave-nkf
changeset 15962:a3d7b927ce47 classdef
Add classdef tests for static methods and constant properties.
* test/classdef/foo_static_method_constant_property.m: New file.
* test/classdef/module.mk: Include new file.
* test/classdef/test_classdef.m: Add tests.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Thu, 17 Jan 2013 18:11:48 -0500 |
parents | 3e782e337f8d |
children | 24ceda35d146 |
files | test/classdef/foo_static_method_constant_property.m test/classdef/module.mk test/classdef/test_classdef.m |
diffstat | 3 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/test/classdef/foo_static_method_constant_property.m @@ -0,0 +1,30 @@ +classdef foo_static_method_constant_property + properties + frequency; + end + properties (Constant = true) + pie = pi; + end + methods + function obj = foo_static_method_constant_property (f) + if (nargin == 1) + obj.frequency = f; + elseif (nargin ~= 0) + error ('foo_static_method_constant_property:SyntaxError', ... + 'foo_static_method_constant_property: Invalid syntax') + end + end + function res = cosine (obj, t) + res = cos (obj.radians_per_cycle () * obj.frequency * t); + end + function res = sine (obj, t) + res = sin (obj.radians_per_cycle () * obj.frequency * t); + end + end + methods (Static) + function res = radians_per_cycle () + res = 2 * foo_static_method_constant_property.pie; + end + end +end +
--- a/test/classdef/module.mk +++ b/test/classdef/module.mk @@ -1,5 +1,6 @@ classdef_FCN_FILES = \ classdef/foo_value_class.m \ + classdef/foo_static_method_constant_property.m \ classdef/test_classdef.m FCN_FILES += $(classdef_FCN_FILES)
--- a/test/classdef/test_classdef.m +++ b/test/classdef/test_classdef.m @@ -55,3 +55,15 @@ %! assert (methods (p), {'amount'; 'foo_value_class'}) %!assert (isempty (foo_value_class().rate)) %!error <property `rate' is not constant> foo_value_class.rate + +%% Static method and Constant Property +%!assert (foo_static_method_constant_property.radians_per_cycle, 2*pi); +%!assert (foo_static_method_constant_property().radians_per_cycle, 2*pi); +%!assert (foo_static_method_constant_property().pie, pi); +%!error <property `frequency' is not constant> foo_static_method_constant_property.frequency +%!error <method `cosine' is not static> foo_static_method_constant_property.cosine +%!test +%! obj = foo_static_method_constant_property; +%! obj.frequency = 10; +%! assert (obj.cosine (0.1), cos (2 * pi * 10 * 0.1), eps ()) +%! assert (obj.sine (0.1), sin (2 * pi * 10 * 0.1), eps ())