package Ġcom . fib el att i . pin board . core . util Ċ Ċ import Ġcom . fib el att i . pin board . core . android . Preferred DateFormat Ċ import Ġcom . fib el att i . pin board . features . user . domain . UserRepository Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . spy k Ċ import Ġio . mock k . verify Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . TimeZone Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ internal Ġclass ĠDate Formatter Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtest UserRepository Ġ= Ġmock k < UserRepository >() ĊĠĠĠ Ġprivate Ġval Ġdate Formatter Ġ= Ġspy k ( Date Formatter ( test UserRepository )) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WHEN Ġtz Format To Display Format Ġis Ġcalled ĠAND Ġpreferred Ġdate Ġformat Ġis ĠDay Month Year With Time ĠTHEN Ġit Ġis Ġcorrectly Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtest UserRepository . preferred DateFormat Ġ} Ġreturns ĠP referred DateFormat . Day Month Year With Time ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Formatter . getSimple DateFormat ( Preferred DateFormat . Day Month Year With Time . value , Ġtime Zone Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġdate Formatter . getSimple DateFormat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP referred DateFormat . Day Month Year With Time . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone Ġ= ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( date Formatter . tz Format To Display Format (" 1 9 9 1 - 0 8 - 2 0 T 1 1 : 0 0 : 0 0 Z ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" 2 0 / 0 8 / 9 1 , Ġ 1 1 : 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WHEN Ġtz Format To Display Format Ġis Ġcalled ĠAND Ġpreferred Ġdate Ġformat Ġis ĠMonth Day Year With Time ĠTHEN Ġit Ġis Ġcorrectly Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtest UserRepository . preferred DateFormat Ġ} Ġreturns ĠP referred DateFormat . Month Day Year With Time ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Formatter . getSimple DateFormat ( Preferred DateFormat . Month Day Year With Time . value , Ġtime Zone Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġdate Formatter . getSimple DateFormat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP referred DateFormat . Month Day Year With Time . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone Ġ= ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( date Formatter . tz Format To Display Format (" 1 9 9 1 - 0 8 - 2 0 T 1 1 : 0 0 : 0 0 Z ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" 0 8 / 2 0 / 9 1 , Ġ 1 1 : 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WHEN Ġnotes Format To Display Format Ġis Ġcalled ĠAND Ġpreferred Ġdate Ġformat Ġis ĠDay Month Year With Time ĠTHEN Ġit Ġis Ġcorrectly Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtest UserRepository . preferred DateFormat Ġ} Ġreturns ĠP referred DateFormat . Day Month Year With Time ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Formatter . getSimple DateFormat ( Preferred DateFormat . Day Month Year With Time . value , Ġtime Zone Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġdate Formatter . getSimple DateFormat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP referred DateFormat . Day Month Year With Time . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone Ġ= ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( date Formatter . notes Format To Display Format (" 1 9 9 1 - 0 8 - 2 0 Ġ 1 1 : 0 0 : 0 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" 2 0 / 0 8 / 9 1 , Ġ 1 1 : 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WHEN Ġnotes Format To Display Format Ġis Ġcalled ĠAND Ġpreferred Ġdate Ġformat Ġis ĠMonth Day Year With Time ĠTHEN Ġit Ġis Ġcorrectly Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtest UserRepository . preferred DateFormat Ġ} Ġreturns ĠP referred DateFormat . Month Day Year With Time ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Formatter . getSimple DateFormat ( Preferred DateFormat . Month Day Year With Time . value , Ġtime Zone Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġdate Formatter . getSimple DateFormat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP referred DateFormat . Month Day Year With Time . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone Ġ= ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( date Formatter . notes Format To Display Format (" 1 9 9 1 - 0 8 - 2 0 Ġ 1 1 : 0 0 : 0 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" 0 8 / 2 0 / 9 1 , Ġ 1 1 : 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` WHEN Ġnow As Tz Format Ġis Ġcalled ĠTHEN Ġformat Ġshould Ġbe Ġcorrect `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdate Formatter . now As Tz Format (). matches ("^ \\ d { 4 }- \\ d { 2 }- \\ d { 2 } T \\ d { 2 }: \\ d { 2 }: \\ d { 2 } Z $ ". to Regex ()) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Utc Format Ġshould Ġcall Ġget SimpleDateFormat Ġand Ġthe Ġtimezone Ġshould Ġbe ĠUTC `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdate Formatter . getSimple DateFormat ( any (), Ġany ()) Ġ} Ġreturns ĠSimpleDateFormat () ĊĊĠĠĠĠĠĠĠ Ġdate Formatter . get Utc Format (" any ") ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġdate Formatter . getSimple DateFormat (" any ", ĠTime Zone . getTime Zone (" UTC ")) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ