ChangeRecorder.java

  1. /*
  2.  * Copyright (C) 2017, Thomas Wolf <thomas.wolf@paranor.ch> and others
  3.  *
  4.  * This program and the accompanying materials are made available under the
  5.  * terms of the Eclipse Distribution License v. 1.0 which is available at
  6.  * https://www.eclipse.org/org/documents/edl-v10.php.
  7.  *
  8.  * SPDX-License-Identifier: BSD-3-Clause
  9.  */

  10. package org.eclipse.jgit.events;

  11. import static org.junit.Assert.assertEquals;

  12. import java.util.Arrays;
  13. import java.util.HashSet;
  14. import java.util.Set;

  15. /**
  16.  * A {@link WorkingTreeModifiedListener} that can be used in tests to check
  17.  * expected events.
  18.  */
  19. public class ChangeRecorder implements WorkingTreeModifiedListener {

  20.     public static final String[] EMPTY = new String[0];

  21.     private Set<String> modified = new HashSet<>();

  22.     private Set<String> deleted = new HashSet<>();

  23.     private int eventCount;

  24.     @Override
  25.     public void onWorkingTreeModified(WorkingTreeModifiedEvent event) {
  26.         eventCount++;
  27.         modified.removeAll(event.getDeleted());
  28.         deleted.removeAll(event.getModified());
  29.         modified.addAll(event.getModified());
  30.         deleted.addAll(event.getDeleted());
  31.     }

  32.     private String[] getModified() {
  33.         return modified.toArray(new String[0]);
  34.     }

  35.     private String[] getDeleted() {
  36.         return deleted.toArray(new String[0]);
  37.     }

  38.     private void reset() {
  39.         eventCount = 0;
  40.         modified.clear();
  41.         deleted.clear();
  42.     }

  43.     public void assertNoEvent() {
  44.         assertEquals("Unexpected WorkingTreeModifiedEvent ", 0, eventCount);
  45.     }

  46.     public void assertEvent(String[] expectedModified,
  47.             String[] expectedDeleted) {
  48.         String[] actuallyModified = getModified();
  49.         String[] actuallyDeleted = getDeleted();
  50.         Arrays.sort(actuallyModified);
  51.         Arrays.sort(expectedModified);
  52.         Arrays.sort(actuallyDeleted);
  53.         Arrays.sort(expectedDeleted);
  54.         assertEquals("Unexpected modifications reported",
  55.                 Arrays.toString(expectedModified),
  56.                 Arrays.toString(actuallyModified));
  57.         assertEquals("Unexpected deletions reported",
  58.                 Arrays.toString(expectedDeleted),
  59.                 Arrays.toString(actuallyDeleted));
  60.         reset();
  61.     }
  62. }