@@ -401,6 +401,99 @@ func TestTriggers_isReady(t *testing.T) {
401401 {triggerInput {newElementCount : 1 , endOfWindowReached : true }, false },
402402 {triggerInput {newElementCount : 1 , endOfWindowReached : true }, true }, // Late
403403 },
404+ }, {
405+ name : "afterProcessingTime_Delay_Exact" ,
406+ trig : & TriggerAfterProcessingTime {
407+ Transforms : []TimestampTransform {
408+ {Delay : 3 * time .Second },
409+ },
410+ },
411+ inputs : []io {
412+ {triggerInput {emNow : 0 }, false },
413+ {triggerInput {emNow : 1000 }, false },
414+ {triggerInput {emNow : 2000 }, false },
415+ {triggerInput {emNow : 3000 }, true },
416+ {triggerInput {emNow : 4000 }, false },
417+ {triggerInput {emNow : 5000 }, false },
418+ {triggerInput {emNow : 6000 }, false },
419+ {triggerInput {emNow : 7000 }, false },
420+ },
421+ }, {
422+ name : "afterProcessingTime_Delay_Late" ,
423+ trig : & TriggerAfterProcessingTime {
424+ Transforms : []TimestampTransform {
425+ {Delay : 3 * time .Second },
426+ },
427+ },
428+ inputs : []io {
429+ {triggerInput {emNow : 0 }, false },
430+ {triggerInput {emNow : 1000 }, false },
431+ {triggerInput {emNow : 2000 }, false },
432+ {triggerInput {emNow : 3001 }, true }, // a little after the expected firing time
433+ {triggerInput {emNow : 4000 }, false },
434+ },
435+ }, {
436+ name : "afterProcessingTime_AlignToPeriodOnly" ,
437+ trig : & TriggerAfterProcessingTime {
438+ Transforms : []TimestampTransform {
439+ {AlignToPeriod : 5 * time .Second },
440+ },
441+ },
442+ inputs : []io {
443+ {triggerInput {emNow : 1500 }, false },
444+ {triggerInput {emNow : 2000 }, false },
445+ {triggerInput {emNow : 4999 }, false },
446+ {triggerInput {emNow : 5000 }, true }, // 1.5 is aligned to 5
447+ {triggerInput {emNow : 5001 }, false },
448+ },
449+ }, {
450+ name : "afterProcessingTime_AlignToPeriodAndOffset" ,
451+ trig : & TriggerAfterProcessingTime {
452+ Transforms : []TimestampTransform {
453+ {AlignToPeriod : 5 * time .Second , AlignToOffset : 200 * time .Millisecond },
454+ },
455+ },
456+ inputs : []io {
457+ {triggerInput {emNow : 1500 }, false },
458+ {triggerInput {emNow : 2000 }, false },
459+ {triggerInput {emNow : 5119 }, false },
460+ {triggerInput {emNow : 5200 }, true }, // 1.5 is aligned to 5.2
461+ {triggerInput {emNow : 5201 }, false },
462+ },
463+ }, {
464+ name : "afterProcessingTime_TwoTransforms" ,
465+ trig : & TriggerAfterProcessingTime {
466+ Transforms : []TimestampTransform {
467+ {AlignToPeriod : 5 * time .Second , AlignToOffset : 200 * time .Millisecond },
468+ {Delay : 1 * time .Second },
469+ },
470+ },
471+ inputs : []io {
472+ {triggerInput {emNow : 1500 }, false },
473+ {triggerInput {emNow : 2000 }, false },
474+ {triggerInput {emNow : 5119 }, false },
475+ {triggerInput {emNow : 5200 }, false },
476+ {triggerInput {emNow : 5201 }, false },
477+ {triggerInput {emNow : 6119 }, false },
478+ {triggerInput {emNow : 6200 }, true }, // 1.5 is aligned to 6.2
479+ {triggerInput {emNow : 6201 }, false },
480+ },
481+ }, {
482+ name : "afterProcessingTime_Repeated" , trig : & TriggerRepeatedly {
483+ & TriggerAfterProcessingTime {
484+ Transforms : []TimestampTransform {
485+ {Delay : 3 * time .Second },
486+ }}},
487+ inputs : []io {
488+ {triggerInput {emNow : 0 }, false },
489+ {triggerInput {emNow : 1000 }, false },
490+ {triggerInput {emNow : 2000 }, false },
491+ {triggerInput {emNow : 3000 }, true }, // first the first time
492+ {triggerInput {emNow : 4000 }, false }, // trigger firing time is set again
493+ {triggerInput {emNow : 5000 }, false },
494+ {triggerInput {emNow : 6000 }, false },
495+ {triggerInput {emNow : 7000 }, true }, // trigger firing again
496+ },
404497 }, {
405498 name : "default" ,
406499 trig : & TriggerDefault {},
0 commit comments