package Ġio . github . j mat su . license . presentation Ċ Ċ import Ġio . github . j mat su . license . Factory . provide Artifact Ċ import Ġio . github . j mat su . license . Factory . provide License Key Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠDiff Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcalculate For Artifact () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Artifact ( key Ġ= Ġ" key 1 "). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Artifact ( key Ġ= Ġ" key 2 "). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Artifact ( key Ġ= Ġ" key 3 "). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnewer Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Artifact ( key Ġ= Ġ" key 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Artifact ( key Ġ= Ġ" key 4 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDiff . calculate For Artifact ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= Ġbase , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnewer Ġ= Ġnewer ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of (" key 1 "), Ġresult . keep Keys ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of (" key 3 "), Ġresult . will Be Removed Keys ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of (" key 4 "), Ġresult . missing Keys ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcalculate For License () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide License Key ( value Ġ= Ġ" key 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide License Key ( value Ġ= Ġ" key 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide License Key ( value Ġ= Ġ" key 3 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnewer Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide License Key ( value Ġ= Ġ" key 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide License Key ( value Ġ= Ġ" key 4 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDiff . calculate For License ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= Ġbase , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnewer Ġ= Ġnewer ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġresult . keep Keys ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of (" key 1 ", Ġ" key 3 "), Ġresult . will Be Removed Keys ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of (" key 4 "), Ġresult . missing Keys ) ĊĠĠĠ Ġ} Ċ } Ċ