### Question:
GlusterFileSystemProvider extends FileSystemProvider { @Override public DirectoryStream<Path> newDirectoryStream(Path path, DirectoryStream.Filter<? super Path> filter) throws IOException { if (!Files.isDirectory(path)) { throw new NotDirectoryException("Not a directory! " + path.toString()); } GlusterPath glusterPath = (GlusterPath) path; GlusterDirectoryStream stream = new GlusterDirectoryStream(); stream.setFileSystem(glusterPath.getFileSystem()); stream.open(glusterPath); stream.setFilter(filter); return stream; }  @Override String getScheme(); @Override FileSystem newFileSystem(URI uri, Map<String, ?> stringMap); @Override FileSystem getFileSystem(URI uri); @Override Path getPath(URI uri); @Override SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> openOptions, FileAttribute<?>... fileAttributes); @Override FileChannel newFileChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs); @Override DirectoryStream<Path> newDirectoryStream(Path path, DirectoryStream.Filter<? super Path> filter); @Override void createDirectory(Path path, FileAttribute<?>... fileAttributes); @Override void delete(Path path); @Override void copy(Path path, Path path2, CopyOption... copyOptions); @Override void move(Path path, Path path2, CopyOption... copyOptions); @Override boolean isSameFile(Path path, Path path2); @Override boolean isHidden(Path path); @Override FileStore getFileStore(Path path); @Override void checkAccess(Path path, AccessMode... accessModes); @Override V getFileAttributeView(Path path, Class<V> vClass, LinkOption... linkOptions); @Override A readAttributes(Path path, Class<A> type, LinkOption... linkOptions); @Override Map<String, Object> readAttributes(Path path, String s, LinkOption... linkOptions); @Override void setAttribute(Path path, String s, Object o, LinkOption... linkOptions); @Override Path readSymbolicLink(Path link); @Override void createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs); static final String GLUSTER; static final int GLUSTERD_PORT; static final String TCP; }### Answer:
@Test(expected = NotDirectoryException.class) public void testNewDirectoryStream_whenNotDirectory() throws IOException { mockStatic(Files.class); when(Files.isDirectory(mockPath)).thenReturn(false); provider.newDirectoryStream(mockPath, mockFilter); }
@Test public void testNewDirectoryStream() throws Exception { mockStatic(Files.class); when(Files.isDirectory(mockPath)).thenReturn(true); whenNew(GlusterDirectoryStream.class).withNoArguments().thenReturn(mockStream); doReturn(mockFileSystem).when(mockPath).getFileSystem(); doNothing().when(mockStream).setFileSystem(mockFileSystem); doNothing().when(mockStream).open(mockPath); doNothing().when(mockStream).setFilter(mockFilter); DirectoryStream<Path> stream = provider.newDirectoryStream(mockPath, mockFilter); assertEquals(mockStream, stream); verify(mockStream).setFileSystem(mockFileSystem); verify(mockStream).open(mockPath); verify(mockStream).setFilter(mockFilter); verify(mockPath).getFileSystem(); verifyNew(GlusterDirectoryStream.class).withNoArguments(); verifyStatic(); Files.isDirectory(mockPath); }