public void testHandleAnnounced() {
   assertEquals(0, mockPermissionsManager.getAvailableRemoteFiles().size());
   announcer.handleAnnounced(generateKnownAnnouncedDummyDescriptorArray("bar"), "bar");
   assertEquals(6, mockPermissionsManager.getAvailableRemoteFiles().size());
   announcer.handleAnnounced(generateKnownSharedDummyDescriptorArray("foo"), "foo");
   assertEquals(12, mockPermissionsManager.getAvailableRemoteFiles().size());
 }
  public void testGetKnownFileDescriptor() {
    byte[] fileId = new byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    FileDescriptor fd;

    testHandleAnnounced();

    // Key exists, fileId is present
    fd = mockPermissionsManager.getKnownFileDescriptor(fileId, "bar");
    assertNotNull(fd);

    fileId =
        new byte[] {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10};
    fd = mockPermissionsManager.getKnownFileDescriptor(fileId, "foo");
    assertNotNull(fd);

    // Key does not exist
    fd = mockPermissionsManager.getKnownFileDescriptor(fileId, "dave");
    assertNull(fd);

    // Key exists, fileId is not presents
    fileId = new byte[] {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8};
    fd = mockPermissionsManager.getKnownFileDescriptor(fileId, "bar");
    assertNull(fd);

    fd = mockPermissionsManager.getKnownFileDescriptor(fileId, "foo");
    assertNull(fd);
  }
  public void testIsShared() {
    testShareFile();

    byte[] fileId = new byte[] {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9};
    assertTrue(mockPermissionsManager.isShared(fileId));

    fileId = new byte[] {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8};
    assertFalse(mockPermissionsManager.isShared(fileId));
  }
  public void testIsAnnounced() {
    testAnnounce();

    byte[] fileId = new byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    assertTrue(mockPermissionsManager.isAnnounced(fileId));

    fileId = new byte[] {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8};
    assertFalse(mockPermissionsManager.isAnnounced(fileId));
  }
  public void testGetLocalFileDescriptor() {
    testAnnounce();
    testShareFile();

    byte[] fileId = new byte[] {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
    assertNotNull(mockPermissionsManager.getLocalFileDescriptor(fileId));

    fileId = new byte[] {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9};
    assertNotNull(mockPermissionsManager.getLocalFileDescriptor(fileId));

    fileId = new byte[] {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7};
    assertNull(mockPermissionsManager.getLocalFileDescriptor(fileId));
  }
  public void testGetFileId() {
    testHandleAnnounced();

    String filePath = "sdcard/photos/house.png";
    assertNotNull(mockPermissionsManager.getFileID("bar", filePath));

    filePath = "sdcard/photos/backyard.png";
    assertNotNull(mockPermissionsManager.getFileID("bar", filePath));

    filePath = "sdcard/photos/fireplace.png";
    assertNotNull(mockPermissionsManager.getFileID("bar", filePath));

    filePath = "sdcard/reports/animals.txt";
    assertNotNull(mockPermissionsManager.getFileID("bar", filePath));

    filePath = "sdcard/reports/inventors.txt";
    assertNotNull(mockPermissionsManager.getFileID("bar", filePath));

    filePath = "sdcard/reports/driving.txt";
    assertNotNull(mockPermissionsManager.getFileID("bar", filePath));

    filePath = "invalid_path";
    assertNull(mockPermissionsManager.getFileID("bar", filePath));

    assertNull(mockPermissionsManager.getFileID("bad_peer_name", filePath));
  }
  public void testAnnounce() {
    ArrayList<FileDescriptor> announcedFiles = mockPermissionsManager.getAnnouncedLocalFiles();
    assertEquals(0, announcedFiles.size());

    mockDispatcher.setTestListener(
        new TestListener() {
          public void sendBackAction(Action action) {
            FileDescriptor[] files = (FileDescriptor[]) action.parameters.get(0);
            boolean isFileIdResponse = (Boolean) action.parameters.get(1);
            assertEquals(6, files.length);
            assertFalse(isFileIdResponse);
            assertNull(action.peer);
            assertEquals(ActionType.ANNOUNCE, action.actionType);
          }
        });

    announcer.setFileAnnouncmentSentListener(
        new FileAnnouncementSentListener() {
          public void announcementSent(ArrayList<String> failedPaths) {
            System.out.println(
                "AnnouncementSentListener - callback to announcementSent() executing");
            assertEquals(4, failedPaths.size());
          }
        });

    ArrayList<String> pathList = new ArrayList<String>();
    announcer.announce(pathList);

    try {
      Thread.sleep(5000);
    } catch (Exception ex) {
      System.out.println("Exception caught in thread sleep try catch block");
    }

    announcedFiles = mockPermissionsManager.getAnnouncedLocalFiles();
    assertEquals(6, announcedFiles.size());
  }
  public void testStopAnnounce() {
    testAnnounce();

    mockDispatcher.setTestListener(
        new TestListener() {
          public void sendBackAction(Action action) {
            FileDescriptor[] files = (FileDescriptor[]) action.parameters.get(0);
            boolean isFileIdResponse = (Boolean) action.parameters.get(1);
            assertEquals(3, files.length);
            assertFalse(isFileIdResponse);
            assertNull(action.peer);
            assertEquals(ActionType.ANNOUNCE, action.actionType);
          }
        });

    ArrayList<String> failedPaths = announcer.stopAnnounce(generatePathsToUnannounce());
    assertEquals(1, failedPaths.size());

    ArrayList<FileDescriptor> announcedFiles = mockPermissionsManager.getAnnouncedLocalFiles();
    assertEquals(3, announcedFiles.size());
  }
 public void testShareFile() {
   assertEquals(0, mockPermissionsManager.getOfferedLocalFiles().size());
   mockPermissionsManager.addOfferedLocalFile(generateSharedFileDescriptor());
   assertEquals(1, mockPermissionsManager.getOfferedLocalFiles().size());
 }
 public void testGetSharedFiles() {
   assertEquals(0, mockPermissionsManager.getOfferedLocalFiles().size());
   testShareFile();
   assertEquals(1, mockPermissionsManager.getOfferedLocalFiles().size());
 }
 public void testGetAnnouncedFiles() {
   assertEquals(0, mockPermissionsManager.getAnnouncedLocalFiles().size());
   testAnnounce();
   assertEquals(6, mockPermissionsManager.getAnnouncedLocalFiles().size());
 }
 public void testGetKnownFiles() {
   assertEquals(0, mockPermissionsManager.getAvailableRemoteFiles().size());
   testHandleAnnounced();
   assertEquals(12, mockPermissionsManager.getAvailableRemoteFiles().size());
 }