package Ġlamb d ada . parse c . parser Ċ Ċ import Ġlamb d ada . parse c . io . Reader Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ Ċ class ĠT 0 0 _ Core Parser Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġ< A > ĠResponse < *, ĠA >. get (): ĠA ? Ġ= Ġthis . fold ({ Ġit . value Ġ}, Ġ{ Ġnull Ġ}) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Returns Parser Returns Accept () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser : ĠParser < Char , ĠBoolean > Ġ= Ġreturns ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). is Success () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Fails Parser Returns Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġfails < Char , ĠChar >() ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). is Success () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Lazy Returns Parser Returns Accept () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġlazy Ġ{ Ġreturns < Char , ĠChar >(' a ') Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). get () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġ' a ') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Lazy Fails Parser Returns Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġlazy Ġ{ Ġfails < Char , ĠChar >() Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). fold ({ Ġfalse Ġ}, Ġ{ Ġtrue Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Any Returns Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġany < Char >() ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader (" a ")). fold ({ Ġtrue Ġ}, Ġ{ Ġfalse Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Any Returns Reject () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġany < Char >() ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). fold ({ Ġfalse Ġ}, Ġ{ Ġtrue Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Not Returns Reject () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġnot ( any < Char >()) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader (" a ")). fold ({ Ġfalse Ġ}, Ġ{ Ġtrue Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven A Reader ( s : String Ġ= Ġ"") Ġ= ĠReader . string ( s ) Ċ Ċ } Ċ