package Ġse . e el de . build Optimization . evalu ators Ċ Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertFalse Ċ import Ġorg . junit . jupiter . api . Assertions . assertNull Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ internal Ġclass ĠSemantic Version Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġregexp `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġversion Regexp Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ^ (? < major > 0 |[ 1 - 9 ]\ d *) \. (? < minor > 0 |[ 1 - 9 ]\ d *) \. ?( ?< patch > 0 |[ 1 - 9 ]\ d *) ?( ?: -( ?< pr erelease >( ?: 0 |[ 1 - 9 ]\ d * |\ d *[ a - zA - Z - ][ 0 - 9 a - zA - Z - ]* )( ?: \. (?: 0 |[ 1 - 9 ]\ d * |\ d *[ a - zA - Z - ][ 0 - 9 a - zA - Z - ]* ))* )) ?( ?: \+ (? < build metadata >[ 0 - 9 a - zA - Z - ]+ (?: \. [ 0 - 9 a - zA - Z - ]+ )* )) ? ${ '$ '} """. to Regex () ĊĊĠĠĠĠĠĠĠ Ġversion Regexp . find (" 5 . 6 . 7 ") !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmajor : ĠInt ? Ġ= Ġgroups [" major "] !!. value . toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminor : ĠInt ? Ġ= Ġgroups [" minor "] ?. value ?. toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpatch : ĠInt ? Ġ= Ġgroups [" patch "] ?. value ?. toInt OrNull () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġmajor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġminor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 7 , Ġpatch ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġgroups . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġversion Regexp . find (" 5 . 6 ") !!. apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmajor : ĠInt ? Ġ= Ġgroups [" major "] !!. value . toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminor : ĠInt ? Ġ= Ġgroups [" minor "] ?. value ?. toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpatch : ĠInt ? Ġ= Ġgroups [" patch "] ?. value ?. toInt OrNull () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġmajor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġminor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( patch ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġgroups . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġparse `() Ġ{ ĊĠĠĠĠĠĠĠ ĠSemantic Version . parse (" 6 . 6 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġmajor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġminor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġpatch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSemantic Version . parse (" 6 . 7 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġmajor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 7 , Ġminor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġpatch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSemantic Version . parse (" 6 . 8 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġmajor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 8 , Ġminor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġpatch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSemantic Version . parse (" 6 . 7 . 1 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġmajor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 7 , Ġminor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġpatch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSemantic Version . parse (" 6 . 8 . 1 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġmajor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 8 , Ġminor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġpatch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġcompatibility t `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv 6 _ 7 Ġ= ĠSemantic Version . parse (" 6 . 7 ") ĊĠĠĠĠĠĠĠ Ġval Ġv 6 _ 6 Ġ= ĠSemantic Version . parse (" 6 . 6 ") ĊĠĠĠĠĠĠĠ Ġval Ġv 6 _ 7 _ 1 Ġ= ĠSemantic Version . parse (" 6 . 7 ") ĊĠĠĠĠĠĠĠ Ġval Ġv 6 _ 6 _ 1 Ġ= ĠSemantic Version . parse (" 6 . 6 . 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġv 6 _ 8 Ġ= ĠSemantic Version . parse (" 6 . 8 ") ĊĠĠĠĠĠĠĠ Ġval Ġv 6 _ 8 _ 1 Ġ= ĠSemantic Version . parse (" 6 . 8 . 1 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġv 6 _ 4 _ 1 Ġ= ĠSemantic Version . parse (" 6 . 4 . 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġv 7 _ 0 Ġ= ĠSemantic Version . parse (" 7 . 0 ") ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( v 6 _ 7 . compatible With ( v 6 _ 8 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( v 6 _ 7 . compatible With ( v 6 _ 7 _ 1 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( v 6 _ 7 . compatible With ( v 6 _ 8 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( v 6 _ 7 . compatible With ( v 6 _ 8 _ 1 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( v 6 _ 7 . compatible With ( v 6 _ 6 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( v 6 _ 7 . compatible With ( v 6 _ 6 _ 1 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( v 6 _ 7 . compatible With ( v 6 _ 4 _ 1 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( v 6 _ 7 . compatible With ( v 7 _ 0 )) ĊĠĠĠ Ġ} Ċ } Ċ