package Ġmat ht ools . numbers . strict Ċ Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ /** ĠTesting Ġthe ĠRe stricted Int Ġclass Ċ Ġ* Ġ@ author ĠD K 9 6 - OS Ġ: Ġ 2 0 1 9 Ġ- Ġ 2 0 2 2 Ġ*/ Ċ class ĠRe stricted Int Test Ġ{ ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Increment Loop () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 , Ġ 1 0 ) Ċĉ ĉ for Ġ( k Ġin Ġ 1 Ġuntil Ġi . range . last ) Ġ{ Ċĉĉ ĉ assertEquals ( k , Ġi . value ) Ċĉĉ ĉ assertEquals ( k Ġ+ Ġ 1 , Ġi . inc ()) Ċĉ ĉ } Ċĉ ĉ assertEquals ( i . range . last , Ġi . value ) Ċĉ ĉ assertEquals ( true , Ġi . isIn creasing ) Ċĉ ĉ assertEquals ( i . range . last Ġ- Ġ 1 , Ġi . inc ()) Ċĉ ĉ assertEquals ( false , Ġi . isIn creasing ) Ċĉ ĉ for Ġ( k Ġin Ġi . range . last Ġ- Ġ 1 Ġdown To Ġi . range . first Ġ+ Ġ 1 ) Ġ{ Ċĉĉ ĉ assertEquals ( k , Ġi . value ) Ċĉĉ ĉ assertEquals ( k Ġ- Ġ 1 , Ġi . inc ()) Ċĉ ĉ } Ċĉ ĉ assertEquals ( 1 , Ġi . value ) Ċĉ ĉ assertEquals ( false , Ġi . isIn creasing ) Ċĉ ĉ assertEquals ( 2 , Ġi . inc ()) Ċĉ ĉ assertEquals ( true , Ġi . isIn creasing ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Increment Loop 2 () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 2 , Ġ 5 , ĠisIn creasing Ġ= Ġfalse ) Ċĉ ĉ assertEquals ( 1 , Ġi . inc ()) Ċĉ ĉ assertEquals ( false , Ġi . isIn creasing ) Ċĉ ĉ assertEquals ( 2 , Ġi . inc ()) Ċĉ ĉ assertEquals ( true , Ġi . isIn creasing ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun ĠtestGet Then Increment () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 , Ġ 1 0 ) Ċĉ ĉ for Ġ( k Ġin Ġ 1 Ġ.. Ġ 9 ) Ġ{ Ċĉĉ ĉ assertEquals ( k , Ġi . value ) Ċĉĉ ĉ assertEquals ( k , Ġi . get And Inc ()) Ċĉ ĉ } Ċĉ ĉ for Ġ( k Ġin Ġ 1 0 Ġdown To Ġ 1 ) Ġ{ Ċĉĉ ĉ assertEquals ( k , Ġi . value ) Ċĉĉ ĉ assertEquals ( k , Ġi . get And Inc ()) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Random ize () Ġ{ Ċĉ ĉ val Ġrestricted Range Ġ= Ġ 2 0 _ 0 1 2 Ġ.. Ġ 5 0 _ 4 5 6 Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 , Ġrestricted Range ) Ċĉ ĉ for Ġ( k Ġin Ġ 0 Ġuntil Ġ 2 0 0 0 ) Ġ{ Ċĉĉ ĉ assert ( i . random ize () Ġin Ġrestricted Range ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Random ize With Inner Range () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 , Ġ 2 0 _ 0 1 2 Ġ.. Ġ 5 0 _ 4 5 6 ) Ċĉ ĉ val Ġinner Range Ġ= Ġ 4 0 _ 0 0 0 Ġ.. Ġ 4 2 _ 0 0 0 Ċĉ ĉ for Ġ( k Ġin Ġ 0 Ġuntil Ġ 1 0 0 ) Ġ{ Ċĉĉ ĉ assert ( i . random ize ( inner Range ) Ġin Ġinner Range ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Random ize With Lower Bound OutOfRange () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 0 , Ġ 2 0 0 Ġ.. Ġ 6 0 0 ) Ċĉ ĉ val Ġrange Too Low Ġ= Ġ 1 0 0 Ġ.. Ġ 2 5 0 Ċĉ ĉ val Ġvalid Range Ġ= Ġ 2 0 0 Ġ.. Ġ 2 5 0 Ċĉ ĉ for Ġ( k Ġin Ġ 0 Ġuntil Ġ 3 0 0 ) Ċĉĉ ĉ assert ( i . random ize ( range Too Low ) Ġin Ġvalid Range ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Random ize With Upper Bound OutOfRange () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 0 , Ġ 2 0 0 Ġ.. Ġ 6 0 0 ) Ċĉ ĉ val Ġrange Too High Ġ= Ġ 5 0 0 Ġ.. Ġ 9 0 0 Ċĉ ĉ val Ġvalid Range Ġ= Ġ 5 0 0 Ġ.. Ġ 6 0 0 Ċĉ ĉ for Ġ( k Ġin Ġ 0 Ġuntil Ġ 3 0 0 ) Ċĉĉ ĉ assert ( i . random ize ( range Too High ) Ġin Ġvalid Range ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Random ize With Max Int Value () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 , Ġ 2 _ 0 0 0 _ 0 0 0 _ 0 0 0 Ġ.. ĠInt . MAX _ VALUE ) Ċĉ ĉ val Ġinner Range 1 Ġ= Ġ 2 _ 1 0 0 _ 0 0 0 _ 0 0 0 Ġ.. ĠInt . MAX _ VALUE Ċĉ ĉ val Ġinner Range 2 Ġ= Ġ 1 _ 1 0 0 _ 0 0 0 _ 0 0 0 Ġ.. ĠInt . MAX _ VALUE Ċĉ ĉ // Ċĉ ĉ for Ġ( k Ġin Ġ 0 Ġuntil Ġ 3 0 0 ) Ġ{ Ċĉĉ ĉ assertEquals ( true , Ġi . random ize () Ġin Ġi . range ) Ċĉĉ ĉ assertEquals ( true , Ġi . random ize ( inner Range 1 ) Ġin Ġinner Range 1 ) Ċĉĉ ĉ assertEquals ( true , Ġi . random ize ( inner Range 2 ) Ġin Ġi . range ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Random ize With Invalid Range () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 , Ġ 2 0 _ 0 1 2 Ġ.. Ġ 5 0 _ 4 5 6 ) Ċĉ ĉ val Ġinvalid Range Ġ= Ġ 4 0 0 _ 0 0 0 Ġ.. Ġ 4 2 0 _ 0 0 0 Ċĉ ĉ for Ġ( k Ġin Ġ 0 Ġuntil Ġ 1 0 0 ) Ġ{ Ċĉĉ ĉ assert ( i . random ize ( invalid Range ) Ġin Ġi . range ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Random ize With Invalid Range 2 () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 , Ġ 2 0 0 , Ġ 6 0 0 ) Ċĉ ĉ val Ġinvalid Range Ġ= Ġ 5 0 0 0 Ġ.. Ġ 4 0 0 0 Ċĉ ĉ for Ġ( k Ġin Ġ 0 Ġuntil Ġ 1 0 0 ) Ċĉĉ ĉ assert ( i . random ize ( invalid Range ) Ġin Ġi . range ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Constructor () Ġ{ Ċĉ ĉ var Ġi Ġ= ĠRe stricted Int ( 1 , Ġ 1 0 0 Ġ.. Ġ 2 0 0 ) Ċĉ ĉ assertEquals ( 1 0 0 , Ġi . value ) Ċĉ ĉ i Ġ= ĠRe stricted Int ( 4 0 0 , Ġ 1 0 0 Ġ.. Ġ 2 0 0 ) Ċĉ ĉ assertEquals ( 2 0 0 , Ġi . value ) Ċĉ ĉ // Ċĉ ĉ i Ġ= ĠRe stricted Int ( 1 0 , Ġ 1 0 Ġ.. Ġ 2 0 , Ġfalse ) Ċĉ ĉ assertEquals ( 1 0 , Ġi . get And Inc ()) Ċĉ ĉ assertEquals ( 1 1 , Ġi . value ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Try Set N () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 1 0 0 , Ġ 1 0 0 Ġ.. Ġ 2 0 0 ) Ċĉ ĉ i . try Set N ( 1 5 0 ) Ċĉ ĉ assertEquals ( 1 5 0 , Ġi . value ) Ċĉ ĉ i . try Set N ( 2 1 0 ) Ċĉ ĉ assertEquals ( 2 0 0 , Ġi . value ) Ċĉ ĉ i . try Set N ( 9 0 ) Ċĉ ĉ assertEquals ( 1 0 0 , Ġi . value ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Addition Operation () Ġ{ Ċĉ ĉ val Ġn 1 Ġ= ĠRe stricted Int ( 2 0 , Ġ 1 Ġ.. Ġ 5 0 ) Ċĉ ĉ val Ġn 2 Ġ= ĠRe stricted Int ( 1 0 , Ġ 2 Ġ.. Ġ 4 5 ) Ċĉ ĉ val Ġsum 1 Ġ= Ġn 1 Ġ+ Ġn 2 Ċĉ ĉ val Ġsum 2 Ġ= Ġn 2 Ġ+ Ġn 1 Ċĉ ĉ val Ġsum 3 Ġ= Ġn 1 Ġ+ Ġ 1 0 Ċĉ ĉ val Ġsum 4 Ġ= Ġn 1 Ġ+ Ġ 1 0 f Ċĉ ĉ assertEquals ( 3 0 , Ġsum 1 ) Ċĉ ĉ assertEquals ( 3 0 , Ġsum 2 ) Ċĉ ĉ assertEquals ( 3 0 , Ġsum 3 ) Ċĉ ĉ assertEquals ( 3 0 f , Ġsum 4 ) Ċĉ ĉ // ĠRe stricted ĠDig it Ċĉ ĉ val Ġd Ġ= ĠRe stricted Digit ( 5 ) Ċĉ ĉ assertEquals ( 2 5 , Ġn 1 Ġ+ Ġd ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Sub traction Operation () Ġ{ Ċĉ ĉ val Ġn 1 Ġ= ĠRe stricted Int ( 2 0 , Ġ 1 Ġ.. Ġ 5 0 ) Ċĉ ĉ val Ġn 2 Ġ= ĠRe stricted Int ( 1 0 , Ġ 2 Ġ.. Ġ 4 5 ) Ċĉ ĉ val Ġdiff 1 Ġ= Ġn 1 Ġ- Ġn 2 Ċĉ ĉ val Ġdiff 2 Ġ= Ġn 2 Ġ- Ġn 1 Ċĉ ĉ val Ġdiff 3 Ġ= Ġn 1 Ġ- Ġ 1 0 Ċĉ ĉ val Ġdiff 4 Ġ= Ġn 1 Ġ- Ġ 1 0 f Ċĉ ĉ assertEquals ( 1 0 , Ġdiff 1 ) Ċĉ ĉ assertEquals (- 1 0 , Ġdiff 2 ) Ċĉ ĉ assertEquals ( 1 0 , Ġdiff 3 ) Ċĉ ĉ assertEquals ( 1 0 f , Ġdiff 4 ) Ċĉ ĉ // ĠRe stricted ĠDig it Ċĉ ĉ val Ġd Ġ= ĠRe stricted Digit ( 5 ) Ċĉ ĉ assertEquals ( 1 5 , Ġn 1 Ġ- Ġd ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Multip lication Operation () Ġ{ Ċĉ ĉ val Ġn 1 Ġ= ĠRe stricted Int ( 2 0 , Ġ 1 Ġ.. Ġ 5 0 ) Ċĉ ĉ val Ġn 2 Ġ= ĠRe stricted Int ( 1 0 , Ġ 2 Ġ.. Ġ 4 5 ) Ċĉ ĉ val Ġsum 1 Ġ= Ġn 1 Ġ* Ġn 2 Ċĉ ĉ val Ġsum 2 Ġ= Ġn 2 Ġ* Ġn 1 Ċĉ ĉ val Ġsum 3 Ġ= Ġn 1 Ġ* Ġ 1 0 Ċĉ ĉ val Ġsum 4 Ġ= Ġn 1 Ġ* Ġ 1 0 f Ċĉ ĉ assertEquals ( 2 0 0 , Ġsum 1 ) Ċĉ ĉ assertEquals ( 2 0 0 , Ġsum 2 ) Ċĉ ĉ assertEquals ( 2 0 0 , Ġsum 3 ) Ċĉ ĉ assertEquals ( 2 0 0 f , Ġsum 4 ) Ċĉ ĉ // ĠRe stricted ĠDig it Ċĉ ĉ val Ġd Ġ= ĠRe stricted Digit ( 5 ) Ċĉ ĉ assertEquals ( 1 0 0 , Ġn 1 Ġ* Ġd ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Division Operation () Ġ{ Ċĉ ĉ val Ġn 1 Ġ= ĠRe stricted Int ( 2 0 , Ġ 1 Ġ.. Ġ 5 0 ) Ċĉ ĉ val Ġn 2 Ġ= ĠRe stricted Int ( 1 0 , Ġ 2 Ġ.. Ġ 4 5 ) Ċĉ ĉ val Ġsum 1 Ġ= Ġn 1 Ġ/ Ġn 2 Ċĉ ĉ val Ġsum 2 Ġ= Ġn 2 Ġ/ Ġn 1 Ċĉ ĉ val Ġsum 3 Ġ= Ġn 1 Ġ/ Ġ 1 0 Ċĉ ĉ val Ġsum 4 Ġ= Ġn 1 Ġ/ Ġ 1 0 f Ċĉ ĉ assertEquals ( 2 , Ġsum 1 ) Ċĉ ĉ assertEquals ( 0 , Ġsum 2 ) Ċĉ ĉ assertEquals ( 2 , Ġsum 3 ) Ċĉ ĉ assertEquals ( 2 f , Ġsum 4 ) Ċĉ ĉ // ĠRe stricted ĠDig it Ċĉ ĉ val Ġd Ġ= ĠRe stricted Digit ( 5 ) Ċĉ ĉ assertEquals ( 4 , Ġn 1 Ġ/ Ġd ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest CompareTo () Ġ{ Ċĉ ĉ val Ġn 1 Ġ= ĠRe stricted Int ( 2 0 , Ġ 1 Ġ.. Ġ 5 0 ) Ċĉ ĉ assertEquals ( true , Ġn 1 Ġ> Ġ 1 0 ) Ċĉ ĉ assertEquals ( true , Ġn 1 Ġ< Ġ 2 1 ) Ċĉ ĉ assertEquals ( 0 , Ġn 1 . compareTo ( 2 0 )) Ċĉ ĉ assertEquals (- 1 , Ġn 1 . compareTo ( 2 1 )) Ċĉ ĉ assertEquals ( 1 , Ġn 1 . compareTo ( 1 9 )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest ToString () Ġ{ Ċĉ ĉ val Ġi Ġ= ĠRe stricted Int ( 2 0 , Ġ 1 Ġ.. Ġ 4 0 ) Ċĉ ĉ assertEquals (" 2 0 ", Ġi . toString ()) Ċ ĉ } Ċ Ċ }