index.test-d.ts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import {expectAssignable, expectError, expectNotAssignable, expectType} from 'tsd';
  2. import {
  3. CronDate,
  4. CronExpression,
  5. CronFields, DateType,
  6. parseExpression,
  7. parseFile, ParserOptions,
  8. parseString,
  9. fieldsToExpression,
  10. StringResult
  11. } from '../index';
  12. const interval = parseExpression('0 1 2 3 * 1-3,5');
  13. const intervalIterator = parseExpression('0 1 2 3 * 1-3,5', {iterator: true});
  14. expectError(interval.fields = interval.fields);
  15. expectError(interval.fields.second = []);
  16. expectError(interval.fields.second.push(1));
  17. expectError(interval.fields.minute = []);
  18. expectError(interval.fields.minute.push(1));
  19. expectError(interval.fields.hour = []);
  20. expectError(interval.fields.hour.push(1));
  21. expectError(interval.fields.dayOfMonth = []);
  22. expectError(interval.fields.dayOfMonth.push(1));
  23. expectError(interval.fields.month = []);
  24. expectError(interval.fields.month.push(1));
  25. expectError(interval.fields.dayOfWeek = []);
  26. expectError(interval.fields.dayOfWeek.push(1));
  27. expectAssignable<typeof interval.fields.second[0]>(0);
  28. expectAssignable<typeof interval.fields.second[0]>(59);
  29. expectNotAssignable<typeof interval.fields.second[0]>(-1);
  30. expectNotAssignable<typeof interval.fields.second[0]>(60);
  31. expectAssignable<typeof interval.fields.minute[0]>(0);
  32. expectAssignable<typeof interval.fields.minute[0]>(59);
  33. expectNotAssignable<typeof interval.fields.minute[0]>(-1);
  34. expectNotAssignable<typeof interval.fields.minute[0]>(60);
  35. expectAssignable<typeof interval.fields.hour[0]>(0);
  36. expectAssignable<typeof interval.fields.hour[0]>(23);
  37. expectNotAssignable<typeof interval.fields.hour[0]>(-1);
  38. expectNotAssignable<typeof interval.fields.hour[0]>(24);
  39. expectAssignable<typeof interval.fields.dayOfMonth[0]>(1);
  40. expectAssignable<typeof interval.fields.dayOfMonth[0]>(31);
  41. expectAssignable<typeof interval.fields.dayOfMonth[0]>('L');
  42. expectNotAssignable<typeof interval.fields.dayOfMonth[0]>(0);
  43. expectNotAssignable<typeof interval.fields.dayOfMonth[0]>(32);
  44. expectAssignable<typeof interval.fields.month[0]>(1);
  45. expectAssignable<typeof interval.fields.month[0]>(12);
  46. expectNotAssignable<typeof interval.fields.month[0]>(0);
  47. expectNotAssignable<typeof interval.fields.month[0]>(13);
  48. expectAssignable<typeof interval.fields.dayOfWeek[0]>(0);
  49. expectAssignable<typeof interval.fields.dayOfWeek[0]>(7);
  50. expectNotAssignable<typeof interval.fields.dayOfWeek[0]>(-1);
  51. expectNotAssignable<typeof interval.fields.dayOfWeek[0]>(8);
  52. const parseOptions: ParserOptions<true> = {
  53. currentDate: 'f',
  54. startDate: 4,
  55. endDate: new Date(),
  56. iterator: true,
  57. utc: true,
  58. tz: 'f',
  59. nthDayOfWeek: 5,
  60. }
  61. expectAssignable<{
  62. currentDate?: string | number | Date
  63. startDate?: string | number | Date
  64. endDate?: string | number | Date
  65. iterator?: boolean
  66. utc?: boolean
  67. tz?: string
  68. nthDayOfWeek?: number
  69. }>(parseOptions)
  70. expectType<CronExpression>(parseExpression('0 1 2 3 * 1-3,5'))
  71. expectType<CronExpression<true>>(parseExpression('0 1 2 3 * 1-3,5', parseOptions))
  72. const fields: CronFields = {
  73. second: [1, 1],
  74. minute: [1],
  75. hour: [1],
  76. dayOfMonth: [1],
  77. month: [1],
  78. dayOfWeek: [1],
  79. }
  80. expectType<CronExpression>(fieldsToExpression(fields))
  81. expectType<CronExpression<true>>(fieldsToExpression(fields, parseOptions))
  82. expectType<string>(fieldsToExpression(fields).stringify())
  83. expectType<string>(fieldsToExpression(fields, parseOptions).stringify())
  84. expectType<string>(fieldsToExpression(fields, parseOptions).stringify(true))
  85. expectType<void>(parseFile('path', (err: any, data: StringResult) => console.log(data)))
  86. expectType<StringResult>(parseString('path'))
  87. const stringResult = parseString('path');
  88. expectType<{
  89. variables: Record<string, string>,
  90. expressions: CronExpression[],
  91. errors: Record<string, any>,
  92. }>(stringResult)
  93. expectType<CronFields>(interval.fields)
  94. expectType<CronDate>(interval.next())
  95. expectType<CronDate>(interval.prev())
  96. expectType<boolean>(interval.hasNext())
  97. expectType<boolean>(interval.hasPrev())
  98. expectType<string>(interval.stringify())
  99. expectType<string>(interval.stringify(true))
  100. expectType<void>(interval.reset())
  101. expectType<void>(interval.reset("Sdf"))
  102. expectType<void>(interval.reset(5))
  103. expectType<void>(interval.reset(new Date()))
  104. expectType<CronDate[]>(interval.iterate(5))
  105. expectType<CronDate[]>(interval.iterate(5, (item: CronDate, i: number) => {}))
  106. expectAssignable<DateType>(new Date())
  107. expectAssignable<DateType>(5)
  108. expectAssignable<DateType>("SDf")
  109. expectType<IteratorResult<CronDate, CronDate>>(intervalIterator.next())
  110. expectType<IteratorResult<CronDate, CronDate>>(intervalIterator.prev())
  111. expectType<IteratorResult<CronDate, CronDate>[]>(intervalIterator.iterate(5))
  112. expectType<IteratorResult<CronDate, CronDate>[]>(intervalIterator.iterate(5, (item: IteratorResult<CronDate, CronDate>, i: number) => {}))