package com.blazemeter.jmeter;
import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
public class DirectoryListingIteratorTest {
@Test
public void testReRead() throws Exception {
File rootDir = TestDirectoryListingConfigActionTest.createFileTree();
List<File> etalonList = DirectoryListingIterator.getDirectoryListing(rootDir.getAbsoluteFile(), true);
DirectoryListingIterator iterator = new DirectoryListingIterator(
rootDir.getAbsolutePath(),
false,
true,
true,
true
);
testFlow(etalonList, iterator);
File.createTempFile("tmpFile3_", ".csv", rootDir);
etalonList = DirectoryListingIterator.getDirectoryListing(rootDir.getAbsoluteFile(), true);
testFlow(etalonList, iterator);
}
@Test
public void testRewindWithRandom() throws Exception {
File rootDir = TestDirectoryListingConfigActionTest.createFileTree();
List<File> etalonList = DirectoryListingIterator.getDirectoryListing(rootDir.getAbsoluteFile(), true);
DirectoryListingIterator iterator = new DirectoryListingIterator(
rootDir.getAbsolutePath(),
true,
true,
true,
false
);
testRandomFlow(etalonList, iterator);
testRandomFlow(etalonList, iterator);
}
private void testRandomFlow(List<File> etalonList, DirectoryListingIterator iterator) {
List<String> filesNames = new ArrayList<>(etalonList.size());
for (File f : etalonList) {
filesNames.add(f.getAbsolutePath());
}
for (int i = 0; i < etalonList.size(); i++) {
assertTrue(iterator.hasNext());
String fname = iterator.next().getAbsolutePath();
assertTrue(filesNames.contains(fname));
filesNames.remove(fname);
}
assertEquals(0, filesNames.size());
}
private void testFlow(List<File> etalonList, DirectoryListingIterator iterator) {
assertNotNull(etalonList);
for (File etalonFile : etalonList) {
assertTrue(iterator.hasNext());
assertEquals(etalonFile.getAbsolutePath(), iterator.next().getAbsolutePath());
}
}
}