Skip to content

Commit

Permalink
Add constructors and tests for Person and file filtering
Browse files Browse the repository at this point in the history
Implemented varargs and copy constructors for the Person class. Added various tests for filtering directories and Java source files, including methods with lambdas, method references, and anonymous inner classes.
  • Loading branch information
kousen committed Sep 17, 2024
1 parent cd369ff commit 99a6ae1
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/main/java/lambdas/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import java.util.Objects;

// public record Person(String name) {}

public class Person {
private String name;

Expand All @@ -11,10 +13,12 @@ public Person(String name) {
this.name = name;
}

// copy constructor
public Person(Person other) {
this.name = other.name;
}

// varargs constructor
public Person(String... names) {
this.name = String.join(" ", names);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/lambdas/UsePerson.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public static void main(String[] args) {

people = names.stream()
.map(Person::new) // uses the Person(String) ctr
// .map(Person::new) // uses the Person(Person) ctr
.map(Person::new) // uses the Person(Person) ctr
.collect(Collectors.toList());
System.out.println(people);

Expand Down
29 changes: 28 additions & 1 deletion src/test/java/lambdas/FileFilterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ void listFiles() {
assertEquals(22, files.length);
}

@SuppressWarnings({"Convert2Lambda", "Anonymous2MethodRef"})
@Test
void listDirectories_anonInnerClass() {
File[] directories = root.listFiles(new FileFilter() {
Expand All @@ -28,12 +29,22 @@ public boolean accept(File file) {
return file.isDirectory();
}
});
assert directories != null;
assertEquals(14, directories.length);
}

@SuppressWarnings("Convert2MethodRef")
@Test
void listDirectories_expressionLambda() {
File[] directories = root.listFiles(file -> file.isDirectory());
assert directories != null;
assertEquals(14, directories.length);
}

@Test
void listDirectories_methodReference() {
File[] directories = root.listFiles(File::isDirectory);
assert directories != null;
assertEquals(14, directories.length);
}

Expand All @@ -43,13 +54,29 @@ void listDirectories_blockLambda() {
System.out.println("Checking: " + file);
return file.isDirectory();
});
assert directories != null;
assertEquals(14, directories.length);
}

@Test
void listDirectories_assignedToVariable() {
FileFilter filter = (File file) -> file.isDirectory();
FileFilter filter = File::isDirectory;
File[] directories = root.listFiles(filter);
assert directories != null;
assertEquals(14, directories.length);
}

@Test
void listJavaSrcFiles_fileFilter() {
File[] javaFiles = root.listFiles(file -> file.getName().endsWith(".java"));
assert javaFiles != null;
assertEquals(8, javaFiles.length);
}

@Test
void listJavaSrcFiles_filenameFilter() {
File[] javaFiles = root.listFiles((dir, name) -> name.endsWith(".java"));
assert javaFiles != null;
assertEquals(8, javaFiles.length);
}
}

0 comments on commit 99a6ae1

Please sign in to comment.