@Test
public void files() {
assertThat(fs.inputFiles(fs.predicates().all())).isEmpty();
fs.add(new TestInputFileBuilder("foo", "src/Foo.php").setLanguage("php").build());
fs.add(new TestInputFileBuilder("foo", "src/Bar.java").setLanguage("java").build());
fs.add(new TestInputFileBuilder("foo", "src/Baz.java").setLanguage("java").build());
fs.add(new TestInputFileBuilder("foo", "src/readme.txt").build());
assertThat(fs.inputFile(fs.predicates().hasRelativePath("src/Bar.java"))).isNotNull();
assertThat(fs.inputFile(fs.predicates().hasRelativePath("does/not/exist"))).isNull();
assertThat(fs.inputFile(fs.predicates().hasAbsolutePath(new File(basedir, "src/Bar.java").getAbsolutePath()))).isNotNull();
assertThat(fs.inputFile(fs.predicates().hasAbsolutePath(new File(basedir, "does/not/exist").getAbsolutePath()))).isNull();
assertThat(fs.inputFile(fs.predicates().hasAbsolutePath(new File(basedir, "../src/Bar.java").getAbsolutePath()))).isNull();
assertThat(fs.inputFile(fs.predicates().hasURI(new File(basedir, "src/Bar.java").toURI()))).isNotNull();
assertThat(fs.inputFile(fs.predicates().hasURI(new File(basedir, "does/not/exist").toURI()))).isNull();
assertThat(fs.inputFile(fs.predicates().hasURI(new File(basedir, "../src/Bar.java").toURI()))).isNull();
assertThat(fs.files(fs.predicates().all())).hasSize(4);
assertThat(fs.files(fs.predicates().hasLanguage("java"))).hasSize(2);
assertThat(fs.files(fs.predicates().hasLanguage("cobol"))).isEmpty();
assertThat(fs.hasFiles(fs.predicates().all())).isTrue();
assertThat(fs.hasFiles(fs.predicates().hasLanguage("java"))).isTrue();
assertThat(fs.hasFiles(fs.predicates().hasLanguage("cobol"))).isFalse();
assertThat(fs.inputFiles(fs.predicates().all())).hasSize(4);
assertThat(fs.inputFiles(fs.predicates().hasLanguage("php"))).hasSize(1);
assertThat(fs.inputFiles(fs.predicates().hasLanguage("java"))).hasSize(2);
assertThat(fs.inputFiles(fs.predicates().hasLanguage("cobol"))).isEmpty();
assertThat(fs.languages()).containsOnly("java", "php");
}