% $Id: FiniteFunTest.oz,v 1.4 2012/01/03 15:20:19 leavens Exp $ \insert 'FiniteFun.oz' \insert 'TestingNoStop.oz' %% from the course library {StartTesting 'FiniteFunTest $Revision: 1.4 $'} {Test {HasFF {EmptyFF} k} '==' false} local FF2 = {ExtendFF {EmptyFF} k x} in {Test {HasFF FF2 k} '==' true} {Test {HasFF FF2 v2} '==' false} {Test {ApplyFF FF2 k} '==' x} {Test {DomainFF FF2} '==' [k]} local FF3 = {ExtendFFList FF2 v1|k|v2|nil x1|y|x2|nil} in {Test {HasFF FF3 k} '==' true} {Test {HasFF FF3 v1} '==' true} {Test {HasFF FF3 v2} '==' true} {Test {ApplyFF FF3 k} '==' y} {Test {ApplyFF FF3 v1} '==' x1} {Test {ApplyFF FF3 v2} '==' x2} {Test {DomainFF FF3} '==' [v1 v2 k]} {Test {DomainFF {ExtendFF FF3 k z}} '==' [v1 v2 k]} {Test {ApplyFF {ExtendFF FF3 k z} k} '==' z} end end local EqualFF = {EqualFFMaker fun {$ X Y} X == Y end} in {Assert {EqualFF {EmptyFF} {EmptyFF}}} {Assert {EqualFF {ExtendFF {EmptyFF} v1 x1} {ExtendFF {EmptyFF} v1 x1}}} {Assert {Not {EqualFF {ExtendFF {EmptyFF} v1 x1} {ExtendFF {EmptyFF} k x2}}}} {Assert {EqualFF {ExtendFF {ExtendFF {EmptyFF} v1 x1} k x2} {ExtendFF {ExtendFF {EmptyFF} k x2} v1 x1}}} {Assert {EqualFF {ExtendFFList {EmptyFF} v1|k|nil x1|x2|nil} {ExtendFFList {EmptyFF} k|v1|nil x2|x1|nil}}} end {DoneTesting}