@Test
public void testMergeStream() throws Exception {

	MergeStreamDataConsistency obj = new MergeStreamDataConsistency();
	testLocalMergeStreams(emptyStreamName, emptyPaths, obj);
	testLocalMergeStreams(emptyDirStreamName, emptyDirsPaths, obj);
	testLocalMergeStreams(missedFilesStreamName, missedFilePaths, obj);
	testLocalMergeStreams(consistentDataStreamName, emptyPaths, obj);
	testLocalMergeStreams(dataReplayFilesStreamName, dataReplayFilePaths, obj);
	testLocalMergeStreams(extrafilesStreamName, extraFilePaths, obj);
	testLocalMergeStreams(singleFileStreamName, emptyPaths, obj);
	testLocalMergeStreams(missingSingleFileStreamName, missingSingleFilePath, obj);
	testLocalMergeStreams(inconsistencyAtEndOfStream, inconsistencyEndPaths, obj);
	testLocalMergeStreams(purgedPathStreaName, purgedPaths, obj);
   testLocalMergeStreams(purgedOnLocalStream, purgedLocalPaths, obj);
   testLocalMergeStreams(duplicateFileStream, duplicateFilePaths, obj);
	
	LOG.info("all streams together");
	List<Path> allStreamPaths = new ArrayList<Path>();
	allStreamPaths.addAll(emptyPaths);
	allStreamPaths.addAll(emptyDirsPaths);
	allStreamPaths.addAll(missedFilePaths);
	allStreamPaths.addAll(dataReplayFilePaths);
	allStreamPaths.addAll(extraFilePaths);
	allStreamPaths.addAll(missingSingleFilePath);
	allStreamPaths.addAll(inconsistencyEndPaths);
	allStreamPaths.addAll(purgedPaths);
   allStreamPaths.addAll(purgedLocalPaths);
   allStreamPaths.addAll(duplicateFilePaths);
	testLocalMergeStreams(allStreamNames, allStreamPaths, obj);
	// testing run method
	List<Path> inconsistentdata = new ArrayList<Path>();
	String[] args = { ("file:///tmp/test/" + className + "/2/,file:///tmp/test/"
			+ className +"/3/"), "file:///tmp/test/" + className + "/1/"};
	LOG.info("testing run method");
	inconsistentdata = obj.run(args);
	Assert.assertEquals(inconsistentdata.size(), allStreamPaths.size());
	Assert.assertTrue(inconsistentdata.containsAll(allStreamPaths));
}