package Ġcom . dong tr onic . di abot . util Ċ Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ import Ġjava . util . stream . Stream Ċ Ċ class ĠPattern s Test Ġ{ ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" inline Bg Provider ") ĊĠĠĠ Ġfun Ġinline Bg Pattern Test ( data : ĠB g Parse Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġdata . input ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġdata . expected ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPattern s . inline Bg Pattern . find ( input ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( expected Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( null , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( result ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġresult Ġwon 't Ġbe Ġnull Ġhere Ġbecause Ġof Ġthe Ġabove Ġassertion ĊĠĠĠĠĠĠĠ Ġresult !! ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Value Ġ= Ġresult . groups [" value "] !!. value ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( expected . value , Ġactual Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinline Bg Provider () Ġ= ĠStream . of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 1 0 0 . 5 _", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 1 0 0 _", Ġexpected Ġ= ĠB g Data (" 1 0 0 ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 5 . 5 _", Ġexpected Ġ= ĠB g Data (" 5 . 5 ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 5 _", Ġexpected Ġ= ĠB g Data (" 5 ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinvalid ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 1 0 0 . 5 Ġmg _", Ġexpected Ġ= Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 1 0 0 Ġmg _", Ġexpected Ġ= Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 5 . 5 Ġmm ol _", Ġexpected Ġ= Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 5 Ġmm ol _", Ġexpected Ġ= Ġnull ), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinvalid Ġ+ Ġspaces ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 1 0 0 . 5 mg _", Ġexpected Ġ= Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 1 0 0 mg _", Ġexpected Ġ= Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 5 . 5 mm ol _", Ġexpected Ġ= Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" test Ġ_ 5 mm ol _", Ġexpected Ġ= Ġnull ), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" unit Bg Provider ") ĊĠĠĠ Ġfun Ġunit Bg Pattern Test ( data : ĠB g Parse Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġdata . input ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġdata . expected ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPattern s . unit Bg Pattern . find ( input ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( expected Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( null , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( result ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġresult Ġwon 't Ġbe Ġnull Ġhere Ġbecause Ġof Ġthe Ġabove Ġassertion ĊĠĠĠĠĠĠĠ Ġresult !! ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Value Ġ= Ġresult . groups [" value "] !!. value ĊĠĠĠĠĠĠĠ Ġval Ġactual Unit Ġ= Ġresult . groups [" unit "] !!. value ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( expected . value , Ġactual Value ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( expected . unit , Ġactual Unit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġunit Bg Provider () Ġ= ĠStream . of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 1 0 0 . 5 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 1 0 0 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 5 . 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġspaces ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 1 0 0 . 5 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 1 0 0 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 5 . 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 1 0 0 . 5 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 1 0 0 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 5 . 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtext Ġ+ Ġspaces ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 1 0 0 . 5 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 1 0 0 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 5 . 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnegative ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 1 0 0 . 5 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 1 0 0 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 5 . 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnegative Ġ+ Ġspaces ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 1 0 0 . 5 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 1 0 0 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 5 . 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ"- 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnegative Ġ+ Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 1 0 0 . 5 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 1 0 0 mg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 5 . 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 5 mm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnegative Ġ+ Ġtext Ġ+ Ġspaces ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 1 0 0 . 5 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 . 5 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 1 0 0 Ġmg ", Ġexpected Ġ= ĠB g Data (" 1 0 0 ", Ġ" mg ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 5 . 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 . 5 ", Ġ" mm ol ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB g Parse Data ( input Ġ= Ġ" bl a Ġb la Ġ- 5 Ġmm ol ", Ġexpected Ġ= ĠB g Data (" 5 ", Ġ" mm ol ")), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠB g Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunit : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠB g Parse Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected : ĠB g Data ? ĊĠĠĠ Ġ) Ċ } Ċ