11import { arrayToSegment , cronToSegment } from '@/cron'
2- import { FieldWrapper } from '@/types'
2+ import { FieldWrapper , type CronFormat } from '@/types'
33import { genItems } from '@/util'
44import { describe , expect , it } from 'vitest'
55
6- const r = ( min : number , max : number ) => {
7- return new FieldWrapper ( { id : 'fieldId' , items : genItems ( min , max ) } )
6+ const r = ( min : number , max : number , format : CronFormat = 'crontab' ) => {
7+ return new FieldWrapper ( { id : 'fieldId' , items : genItems ( min , max ) } , { format } )
88}
99
1010describe ( 'segments' , ( ) => {
@@ -23,6 +23,7 @@ describe('segments', () => {
2323 expect ( cronToArray ( '*/10' , r ( 1 , 10 ) ) ) . toEqual ( [ 1 ] )
2424 expect ( cronToArray ( '2-6/2' , r ( 1 , 10 ) ) ) . toEqual ( [ 2 , 4 , 6 ] )
2525 expect ( cronToArray ( '3-5/10' , r ( 1 , 10 ) ) ) . toEqual ( [ 3 ] )
26+ expect ( cronToArray ( '5/2' , r ( 1 , 10 , 'quartz' ) ) ) . toEqual ( [ 5 , 7 , 9 ] )
2627
2728 expect ( cronToArray ( 'x' , r ( 0 , 59 ) ) ) . toBe ( null )
2829 expect ( cronToArray ( '1-60' , r ( 0 , 59 ) ) ) . toBe ( null )
@@ -32,6 +33,7 @@ describe('segments', () => {
3233 expect ( cronToArray ( '*/90' , r ( 1 , 10 ) ) ) . toBe ( null )
3334 expect ( cronToArray ( '*/11' , r ( 1 , 10 ) ) ) . toBe ( null )
3435 expect ( cronToArray ( '2-6/11' , r ( 1 , 10 ) ) ) . toBe ( null )
36+ expect ( cronToArray ( '5/2' , r ( 1 , 10 ) ) ) . toEqual ( null )
3537 } )
3638
3739 it ( 'arrayToSegment' , ( ) => {
@@ -48,5 +50,7 @@ describe('segments', () => {
4850 expect ( arrayToCron ( [ 5 , 12 , 19 , 26 ] , r ( 5 , 30 ) ) ) . toEqual ( '*/7' )
4951 expect ( arrayToCron ( [ 0 , 5 , 10 ] , r ( 0 , 20 ) ) ) . toEqual ( '0-10/5' )
5052 expect ( arrayToCron ( [ 1 , 2 , 5 , 8 , 9 , 10 ] , r ( 1 , 10 ) ) ) . toEqual ( '1-2,5,8-10' )
53+ expect ( arrayToCron ( [ 5 , 7 , 9 ] , r ( 1 , 10 , 'quartz' ) ) ) . toEqual ( '5/2' )
54+ expect ( arrayToCron ( [ 5 , 7 , 9 ] , r ( 1 , 10 ) ) ) . toEqual ( '5-9/2' )
5155 } )
5256} )
0 commit comments