@Test
  public void testWindowTriggerTimeAlignment() {
    try {
      @SuppressWarnings("unchecked")
      final Output<StreamRecord<String>> mockOut = mock(Output.class);
      final StreamTask<?, ?> mockTask = createMockTask();

      AccumulatingProcessingTimeWindowOperator<String, String, String> op;

      op =
          new AccumulatingProcessingTimeWindowOperator<>(
              mockFunction,
              mockKeySelector,
              StringSerializer.INSTANCE,
              StringSerializer.INSTANCE,
              5000,
              1000);
      op.setup(mockTask, new StreamConfig(new Configuration()), mockOut);
      op.open();
      assertTrue(op.getNextSlideTime() % 1000 == 0);
      assertTrue(op.getNextEvaluationTime() % 1000 == 0);
      op.dispose();

      op =
          new AccumulatingProcessingTimeWindowOperator<>(
              mockFunction,
              mockKeySelector,
              StringSerializer.INSTANCE,
              StringSerializer.INSTANCE,
              1000,
              1000);
      op.setup(mockTask, new StreamConfig(new Configuration()), mockOut);
      op.open();
      assertTrue(op.getNextSlideTime() % 1000 == 0);
      assertTrue(op.getNextEvaluationTime() % 1000 == 0);
      op.dispose();

      op =
          new AccumulatingProcessingTimeWindowOperator<>(
              mockFunction,
              mockKeySelector,
              StringSerializer.INSTANCE,
              StringSerializer.INSTANCE,
              1500,
              1000);
      op.setup(mockTask, new StreamConfig(new Configuration()), mockOut);
      op.open();
      assertTrue(op.getNextSlideTime() % 500 == 0);
      assertTrue(op.getNextEvaluationTime() % 1000 == 0);
      op.dispose();

      op =
          new AccumulatingProcessingTimeWindowOperator<>(
              mockFunction,
              mockKeySelector,
              StringSerializer.INSTANCE,
              StringSerializer.INSTANCE,
              1200,
              1100);
      op.setup(mockTask, new StreamConfig(new Configuration()), mockOut);
      op.open();
      assertTrue(op.getNextSlideTime() % 100 == 0);
      assertTrue(op.getNextEvaluationTime() % 1100 == 0);
      op.dispose();
    } catch (Exception e) {
      e.printStackTrace();
      fail(e.getMessage());
    }
  }