package Ġorg . lex em . ang mar . analyzer . nodes . de scriptive . lex e mes Ċ Ċ import Ġorg . junit . jupiter . api .* Ċ import Ġorg . lex em . ang mar .* Ċ import Ġorg . lex em . ang mar . analyzer . data . primitives .* Ċ import Ġorg . lex em . ang mar . errors .* Ċ import Ġorg . lex em . ang mar . parser . de scriptive . lex e mes .* Ċ import Ġorg . lex em . ang mar . utils .* Ċ Ċ internal Ġclass ĠQuant ified Group Modifier Analyzer Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwith Ġnothing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ"${ Quant ified Group Modifier Node . start Token }${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġanalyzer . memory . getLast From Stack () Ġas ? ĠL xm Quant ifier Ġ?: Ġthrow ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġmust Ġbe Ġa ĠL xm Quant ifier ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (- 1 , Ġresult . min , Ġ" The Ġmin Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . isIn finite , Ġ" The Ġis Infinite Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (- 1 , Ġresult . max , Ġ" The Ġmax Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Lazy , Ġ" The Ġis Lazy Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Atomic , Ġ" The Ġis Atomic Ġproperty Ġis Ġincorrect ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove ĠLast Ġfrom Ġthe Ġstack . ĊĠĠĠĠĠĠĠ Ġanalyzer . memory . remove Last From Stack () ĊĊĠĠĠĠĠĠĠ ĠTestUtils . check Empty Stack And Context ( analyzer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwith Ġonly Ġminimum `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġminimum Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ"${ Quant ified Group Modifier Node . start Token }$ minimum ${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġanalyzer . memory . getLast From Stack () Ġas ? ĠL xm Quant ifier Ġ?: Ġthrow ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġmust Ġbe Ġa ĠL xm Quant ifier ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( minimum , Ġresult . min , Ġ" The Ġmin Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . isIn finite , Ġ" The Ġis Infinite Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( minimum , Ġresult . max , Ġ" The Ġmax Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Lazy , Ġ" The Ġis Lazy Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Atomic , Ġ" The Ġis Atomic Ġproperty Ġis Ġincorrect ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove ĠLast Ġfrom Ġthe Ġstack . ĊĠĠĠĠĠĠĠ Ġanalyzer . memory . remove Last From Stack () ĊĊĠĠĠĠĠĠĠ ĠTestUtils . check Empty Stack And Context ( analyzer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwith Ġminimum Ġand Ġmaximum `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġminimum Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġmaximum Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Quant ified Group Modifier Node . start Token }$ minimum ${ Quant ified Group Modifier Node . element Separator }$ maximum ${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġanalyzer . memory . getLast From Stack () Ġas ? ĠL xm Quant ifier Ġ?: Ġthrow ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġmust Ġbe Ġa ĠL xm Quant ifier ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( minimum , Ġresult . min , Ġ" The Ġmin Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . isIn finite , Ġ" The Ġis Infinite Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( maximum , Ġresult . max , Ġ" The Ġmax Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Lazy , Ġ" The Ġis Lazy Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Atomic , Ġ" The Ġis Atomic Ġproperty Ġis Ġincorrect ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove ĠLast Ġfrom Ġthe Ġstack . ĊĠĠĠĠĠĠĠ Ġanalyzer . memory . remove Last From Stack () ĊĊĠĠĠĠĠĠĠ ĠTestUtils . check Empty Stack And Context ( analyzer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwithout Ġmaximum `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġminimum Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Quant ified Group Modifier Node . start Token }$ minimum ${ Quant ified Group Modifier Node . element Separator }${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġanalyzer . memory . getLast From Stack () Ġas ? ĠL xm Quant ifier Ġ?: Ġthrow ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġmust Ġbe Ġa ĠL xm Quant ifier ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( minimum , Ġresult . min , Ġ" The Ġmin Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . isIn finite , Ġ" The Ġis Infinite Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (- 1 , Ġresult . max , Ġ" The Ġmax Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Lazy , Ġ" The Ġis Lazy Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Atomic , Ġ" The Ġis Atomic Ġproperty Ġis Ġincorrect ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove ĠLast Ġfrom Ġthe Ġstack . ĊĠĠĠĠĠĠĠ Ġanalyzer . memory . remove Last From Stack () ĊĊĠĠĠĠĠĠĠ ĠTestUtils . check Empty Stack And Context ( analyzer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwithout Ġminimum `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmaximum Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Quant ified Group Modifier Node . start Token }${ Quant ified Group Modifier Node . element Separator }$ maximum ${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġanalyzer . memory . getLast From Stack () Ġas ? ĠL xm Quant ifier Ġ?: Ġthrow ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġmust Ġbe Ġa ĠL xm Quant ifier ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (- 1 , Ġresult . min , Ġ" The Ġmin Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . isIn finite , Ġ" The Ġis Infinite Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( maximum , Ġresult . max , Ġ" The Ġmax Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Lazy , Ġ" The Ġis Lazy Ġproperty Ġis Ġincorrect ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( result . is Atomic , Ġ" The Ġis Atomic Ġproperty Ġis Ġincorrect ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove ĠLast Ġfrom Ġthe Ġstack . ĊĠĠĠĠĠĠĠ Ġanalyzer . memory . remove Last From Stack () ĊĊĠĠĠĠĠĠĠ ĠTestUtils . check Empty Stack And Context ( analyzer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Incorrect ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwith Ġnon Ġinteger Ġminimum `() Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils . assert Analyzer Exception ( Ang mar Analyzer Exception Type . In compatible Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminimum Ġ= ĠL xm Logic . False ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ"${ Quant ified Group Modifier Node . start Token }$ minimum ${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Incorrect ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwith Ġminimum Ġlower Ġthan Ġzero `() Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils . assert Analyzer Exception ( Ang mar Analyzer Exception Type . Incorrect Quant ifier Bounds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminimum Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ"${ Quant ified Group Modifier Node . start Token }$ minimum ${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Incorrect ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwith Ġnon Ġinteger Ġmaximum `() Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils . assert Analyzer Exception ( Ang mar Analyzer Exception Type . In compatible Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminimum Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaximum Ġ= ĠL xm Nil ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Quant ified Group Modifier Node . start Token }$ minimum ${ Quant ified Group Modifier Node . element Separator }$ maximum ${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Incorrect ĊĠĠĠ Ġfun Ġ` test Ġquant ifier Ġwith Ġmaximum Ġlower Ġthan Ġminimum `() Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils . assert Analyzer Exception ( Ang mar Analyzer Exception Type . Incorrect Quant ifier Bounds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminimum Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaximum Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Quant ified Group Modifier Node . start Token }$ minimum ${ Quant ified Group Modifier Node . element Separator }$ maximum ${ Quant ified Group Modifier Node . end Token }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . create Analyzer From ( text , Ġparser Function Ġ= ĠQuant ified Group Modifier Node . Companion :: parse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTestUtils . process And Check Empty ( analyzer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ