@@ -207,11 +207,7 @@ describe('size', () => {
207207
208208describe ( 'rewrite rules' , ( ) => {
209209
210- // TODO:
211- // - test intersection/complement rules.
212- // - test rules involving epsilon / empty set
213- // (can't be tested right now because parser does not
214- // support empty set `$.^` and epsilon `()`.
210+ // TODO: test intersection/complement rules.
215211
216212 const rewriteCases = [
217213 // concat rules:
@@ -225,8 +221,6 @@ describe('rewrite rules', () => {
225221 [ / ^ a ? a ? $ / , / ^ ( a ? ) { 2 } $ / ] ,
226222 [ / ^ ( ) a $ / , / ^ a $ / ] ,
227223 [ / ^ a ( ) $ / , / ^ a $ / ] ,
228- // TODO:
229- // [/^a($.^)$/, /$.^/],
230224 // union rules:
231225 [ / ^ ( a | a ) $ / , / ^ a $ / ] ,
232226 // expected expression:
@@ -245,12 +239,15 @@ describe('rewrite rules', () => {
245239 [ / ^ ( b a | a ) $ / , / ^ b ? a $ / ] ,
246240 [ / ^ ( a | a b ) $ / , / ^ a b ? $ / ] ,
247241 [ / ^ ( a | b a ) $ / , / ^ b ? a $ / ] ,
242+ // union-of-star rules:
243+ [ / ^ ( a * | ) $ / , / ^ a * $ / ] ,
248244 // TODO:
249245 // [/^(a|a{2}|a{3}|a{4}|a{5})$/, /^(a{1,5})$/],
250246 // [/^(a|a{2}|a{3}|a{4}|a{5}|b)$/, /^(a{1,5}|b)$/],
251247 // star rules:
252248 [ / ^ ( a * ) * $ / , / ^ a * $ / ] ,
253249 [ / ^ ( a * b * ) * $ / , / ^ [ a b ] * $ / ] ,
250+ [ / ^ ( ) * $ / , / ^ $ / ] ,
254251 ] as const
255252
256253 for ( const [ source , target ] of rewriteCases ) {
@@ -275,7 +272,7 @@ describe('derivative', () => {
275272
276273 for ( const [ input , str , expected ] of derivativeCases ) {
277274 it ( `of ${ input } with respect to "${ str } " is ${ expected } ` , ( ) => {
278- const actual = RE . derivative ( str , AST . toExtRegex ( parseRegExp ( input ) ) )
275+ const actual = RE . derivative ( str , AST . toExtRegex ( parseRegExp ( input ) ) )
279276 assert ( RE . isStdRegex ( actual ) )
280277 assert . deepEqual ( RE . toRegExp ( actual ) , expected )
281278 } )
0 commit comments