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 2 _ Flow Parser Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġ< A > ĠResponse < *, ĠA >. get (): ĠA ? Ġ= Ġthis . fold ({ Ġit . value Ġ}, Ġ{ Ġnull Ġ}) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Sequence Parser Returns Accept () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġreturns < Char , ĠChar >(' a ') Ġthen Ġreturns ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). fold ({ Ġit . value Ġ== Ġ' a ' Ġto Ġ 1 Ġ}, Ġ{ Ġfalse Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Sequence Parser Returns Reject () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġany < Char >() Ġthen Ġfails < Char , ĠUnit >() ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). fold ({ Ġfalse Ġ}, Ġ{ Ġtrue Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Sequence Parser Returns Accept With Left Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġreturns < Char , ĠChar >(' a ') Ġthen Left Ġreturns ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). get () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġ' a ') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Sequence Parser Returns Accept With Right Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġreturns < Char , ĠChar >(' a ') Ġthen Right Ġreturns ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). get () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Choice Parser Returns Accept () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġreturns < Char , ĠChar >(' a ') Ġor Ġreturns (' b ') ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). fold ({ Ġit . value Ġ== Ġ' a ' Ġ}, Ġ{ Ġfalse Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Choice With Fails Parser Returns Accept () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġfails < Char , ĠChar >() Ġor Ġreturns (' b ') ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparser . invoke ( given A Reader ()). fold ({ Ġit . value Ġ== Ġ' b ' Ġ}, Ġ{ Ġfalse Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven A Reader () Ġ= ĠReader . string (" an Ġexample ") ĊĊ Ċ }