# HG changeset patch # User Ben Abbott # Date 1358101231 18000 # Node ID d19397deff431eaba5eb9b58442aad6bffe31ed2 # Parent da4cd4ab36db33ffc4bf9f1ad65a74be800cd312 Add basic tests for classdef * test/classes/foo_payment.m: New file defing a class via classdef. * test/classes/module.mk: Add Include foo_payment in classes_FCN_FILES. * test/classes/test_classes.m: Add tests for classdef. diff -r da4cd4ab36db -r d19397deff43 test/classes/foo_payment.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/classes/foo_payment.m Sun Jan 13 13:20:31 2013 -0500 @@ -0,0 +1,30 @@ +classdef foo_payment + properties + rate; + term; + principle; + end + methods + function obj = foo_payment (r, t, p) + if (nargin == 0) + obj = struct ('rate', 0, 'term', 0, 'principle', 0); + elseif (nargin == 3) + obj.rate = r; + obj.term = t; + obj.principle = p; + else + error ('foo_payment:SyntaxError', ... + 'foo_payment: Invalid syntax') + end + end + function amt = amount (obj) + i = obj.rate / (12 * 100); + if (i == 0 && obj.term == 0) + amt = obj.principle; + else + amt = (obj.principle * i) / (1 - (1 + i)^(-obj.term)); + end + end + end +end + diff -r da4cd4ab36db -r d19397deff43 test/classes/module.mk --- a/test/classes/module.mk Sat Jan 12 22:41:37 2013 -0500 +++ b/test/classes/module.mk Sun Jan 13 13:20:31 2013 -0500 @@ -4,6 +4,7 @@ classes/@Blork/display.m \ classes/@Blork/get.m \ classes/@Blork/set.m \ + classes/foo_payment.m \ classes/@Cork/Cork.m \ classes/@Cork/click.m \ classes/@Cork/display.m \ diff -r da4cd4ab36db -r d19397deff43 test/classes/test_classes.m --- a/test/classes/test_classes.m Sat Jan 12 22:41:37 2013 -0500 +++ b/test/classes/test_classes.m Sun Jan 13 13:20:31 2013 -0500 @@ -199,3 +199,20 @@ %! assert(isa(grk,'Blork')) %! assert(isa(grk,'Snork')) %! assert(isa(grk,'Spork')) + +%% Basic classdef tests +%!shared p, i, amt +%! p = foo_payment (4, 4*12, 50e3); +%! i = p.rate / (12 * 100); +%! amt = (p.principle * i) / (1 - (1 + i)^(-p.term)); +%!assert (class (p), "foo_payment"); +%!assert (p.term, 48); +%!assert (p.rate, 4.0); +%!assert (p.principle, 50e3); +%!assert (p.amount, amt, eps ()) +%!xtest +%! assert (amount (p), amt, eps ()) +%!xtest +%! xassert (properties (p), {'rate'; 'term'; 'principle'}) +%!xtest +%! xassert (methods (p), {'amount'; 'foo_payment'})