package Ġarrow . opt ics . std Ċ Ċ import Ġarrow . core . Map K Ċ import Ġarrow . core . Set K Ċ import Ġarrow . core . extensions . set k . mon oid . mon oid Ċ import Ġarrow . core . test . Unit Spec Ċ import Ġarrow . core . test . generators . function A To B Ċ import Ġarrow . core . test . generators . gen Set K Ċ import Ġarrow . core . test . generators . map K Ċ import Ġarrow . opt ics . Iso Ċ import Ġarrow . opt ics . map To Set Ċ import Ġarrow . opt ics . test . l aws . Iso L aws Ċ import Ġarrow . opt ics . toSet K Ċ import Ġarrow . type classes . Eq Ċ import Ġarrow . type classes . Mon oid Ċ import Ġio . kot lint est . properties . Gen Ċ Ċ class ĠMap Test Ġ: ĠUnit Spec () Ġ{ ĊĊĠ Ġinit Ġ{ ĊĊĠĠĠ Ġtest L aws ( ĊĠĠĠĠĠ ĠI so L aws . l aws ( ĊĠĠĠĠĠĠĠ Ġiso Ġ= ĠMap K . toSet K (), ĊĠĠĠĠĠĠĠ Ġa Gen Ġ= ĠGen . map K ( Gen . string (), ĠGen . create Ġ{ ĠUnit Ġ}), ĊĠĠĠĠĠĠĠ Ġb Gen Ġ= ĠGen . gen Set K ( Gen . string ()), ĊĠĠĠĠĠĠĠ Ġfunc Gen Ġ= ĠGen . function A To B ( Gen . gen Set K ( Gen . string ())), ĊĠĠĠĠĠĠĠ ĠE QA Ġ= ĠEq . any (), ĊĠĠĠĠĠĠĠ ĠE QB Ġ= ĠEq . any (), ĊĠĠĠĠĠĠĠ Ġb Mon oid Ġ= ĠSet K . mon oid () ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġtest L aws ( ĊĠĠĠĠĠ ĠI so L aws . l aws ( ĊĠĠĠĠĠĠĠ Ġiso Ġ= ĠI so . map To Set (), ĊĠĠĠĠĠĠĠ Ġa Gen Ġ= ĠGen . map ( Gen . string (), ĠGen . create Ġ{ ĠUnit Ġ}), ĊĠĠĠĠĠĠĠ Ġb Gen Ġ= ĠGen . set ( Gen . string ()), ĊĠĠĠĠĠĠĠ Ġfunc Gen Ġ= ĠGen . function A To B ( Gen . set ( Gen . string ())), ĊĠĠĠĠĠĠĠ ĠE QA Ġ= ĠEq . any (), ĊĠĠĠĠĠĠĠ ĠE QB Ġ= ĠEq . any (), ĊĠĠĠĠĠĠĠ Ġb Mon oid Ġ= Ġobject Ġ: ĠMon oid < Set < String >> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġempty (): ĠSet < String > Ġ= Ġempty Set () ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠSet < String >. combine ( b : ĠSet < String >): ĠSet < String > Ġ= Ġthis Ġ+ Ġb ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ