fix repo
This commit is contained in:
parent
13be85b707
commit
a5a8af76ed
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.idea
|
||||||
|
log.log
|
||||||
|
.iml
|
61
pom.xml
61
pom.xml
@ -4,12 +4,65 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>org.example</groupId>
|
<groupId>Pracownia</groupId>
|
||||||
<artifactId>Pracownia2020-2021</artifactId>
|
<artifactId>PracowniaMain</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>11</maven.compiler.source>
|
<maven.compiler.source>8</maven.compiler.source>
|
||||||
<maven.compiler.target>11</maven.compiler.target>
|
<maven.compiler.target>8</maven.compiler.target>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<attach>false</attach>
|
||||||
|
<appendAssemblyId>false</appendAssemblyId>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<mainClass>
|
||||||
|
second.debug.Breakpoints
|
||||||
|
</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>log4j</groupId>
|
||||||
|
<artifactId>log4j</artifactId>
|
||||||
|
<version>1.2.17</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.assertj</groupId>
|
||||||
|
<artifactId>assertj-core</artifactId>
|
||||||
|
<version>3.17.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.12</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -1,8 +0,0 @@
|
|||||||
package introduction;
|
|
||||||
|
|
||||||
public class HelloWorld {
|
|
||||||
|
|
||||||
public static void main(String [ ] args) {
|
|
||||||
System.out.println("Hello World");
|
|
||||||
}
|
|
||||||
}
|
|
20
src/main/java/second/debug/Breakpoints.java
Normal file
20
src/main/java/second/debug/Breakpoints.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package second.debug;
|
||||||
|
|
||||||
|
import second.debug.hidden.MakeThings;
|
||||||
|
|
||||||
|
public class Breakpoints {
|
||||||
|
|
||||||
|
public static void main(final String... args) {
|
||||||
|
//create objects
|
||||||
|
Object o = MakeThings.makeAThing();
|
||||||
|
System.out.println("Going inside print");
|
||||||
|
printThis(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static void printThis(final Object o) {
|
||||||
|
System.out.println("I will print you something very soon");
|
||||||
|
System.out.println(o.toString());
|
||||||
|
}
|
||||||
|
}
|
27
src/main/java/second/debug/ConditionalBreak.java
Normal file
27
src/main/java/second/debug/ConditionalBreak.java
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package second.debug;
|
||||||
|
|
||||||
|
import second.debug.hidden.ObjectAnalyzer;
|
||||||
|
import second.debug.hidden.ObjectMaker;
|
||||||
|
|
||||||
|
public class ConditionalBreak {
|
||||||
|
|
||||||
|
public static void main(final String... args) {
|
||||||
|
// In E2, getList didn't work so well. So let's try an array this time...
|
||||||
|
final Object[] myArray = ObjectMaker.getArray(100);
|
||||||
|
|
||||||
|
boolean everythingIsOK = true;
|
||||||
|
int i = 0;
|
||||||
|
while (i < myArray.length && everythingIsOK) {
|
||||||
|
// This time we're using an external library to process objects.
|
||||||
|
// If something goes wrong, this is the line where we'll want to set a
|
||||||
|
// breakpoint.
|
||||||
|
everythingIsOK = ObjectAnalyzer.processElementAtIndex(myArray, i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!everythingIsOK) {
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Oh noes - analysis incomplete! See console for more information.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
44
src/main/java/second/debug/EvaluateExpressions.java
Normal file
44
src/main/java/second/debug/EvaluateExpressions.java
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package second.debug;
|
||||||
|
|
||||||
|
import second.debug.hidden.ObjectMaker;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exercise 2: Using the Expression Window in the Debug perspective.
|
||||||
|
*
|
||||||
|
* @author Mark Hiner
|
||||||
|
*/
|
||||||
|
public class EvaluateExpressions {
|
||||||
|
|
||||||
|
public static void main(final String... args) {
|
||||||
|
// Let's make a list of 100000 objects
|
||||||
|
final List<Integer> myList = ObjectMaker.getList(100000);
|
||||||
|
|
||||||
|
// Now let's process some objects from our list
|
||||||
|
|
||||||
|
// Process first object
|
||||||
|
processElementAtIndex(myList, 0);
|
||||||
|
|
||||||
|
// Process middle object
|
||||||
|
processElementAtIndex(myList, 100000 / 2);
|
||||||
|
|
||||||
|
// Process last object
|
||||||
|
processElementAtIndex(myList, 100000 - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void processElementAtIndex(final List<Integer> list,
|
||||||
|
final int index)
|
||||||
|
{
|
||||||
|
// First let's check our method arguments to see if they're valid
|
||||||
|
if (index < 0 || index >= list.size()) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"If you don't mind, I would prefer not to process your object...");
|
||||||
|
}
|
||||||
|
System.out.println(100 * list.get(index));
|
||||||
|
|
||||||
|
// OK now we can process the argument.
|
||||||
|
// ... just kidding, I'm totally going to delete your precious objects.
|
||||||
|
list.set(index, null);
|
||||||
|
}
|
||||||
|
}
|
10
src/main/java/second/debug/hidden/MakeThings.java
Normal file
10
src/main/java/second/debug/hidden/MakeThings.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package second.debug.hidden;
|
||||||
|
|
||||||
|
public class MakeThings {
|
||||||
|
|
||||||
|
public static Object makeAThing() {
|
||||||
|
final Object o = new Object();
|
||||||
|
System.out.println(o);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
38
src/main/java/second/debug/hidden/ObjectAnalyzer.java
Normal file
38
src/main/java/second/debug/hidden/ObjectAnalyzer.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package second.debug.hidden;
|
||||||
|
|
||||||
|
public class ObjectAnalyzer {
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean processElementAtIndex(final Object[] myArray,
|
||||||
|
final int i) {
|
||||||
|
final Object o = myArray[i];
|
||||||
|
|
||||||
|
if (o == null) {
|
||||||
|
System.out.println("Something is wrong with the " + (i + 1) + suffix(i +
|
||||||
|
1) + " object... :(\n\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String suffix(int i) {
|
||||||
|
i = i % 10;
|
||||||
|
|
||||||
|
String suffix = "th";
|
||||||
|
switch (i) {
|
||||||
|
case 1:
|
||||||
|
suffix = "rst";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
suffix = "nd";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
suffix = "rd";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return suffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
74
src/main/java/second/debug/hidden/ObjectMaker.java
Normal file
74
src/main/java/second/debug/hidden/ObjectMaker.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* #%L
|
||||||
|
* ImageJ interactive debugging tutorials.
|
||||||
|
* %%
|
||||||
|
* Copyright (C) 2009 - 2016 Board of Regents of the University of
|
||||||
|
* Wisconsin-Madison.
|
||||||
|
* %%
|
||||||
|
* To the extent possible under law, the ImageJ developers have waived
|
||||||
|
* all copyright and related or neighboring rights to this tutorial code.
|
||||||
|
*
|
||||||
|
* See the CC0 1.0 Universal license for details:
|
||||||
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
* #L%
|
||||||
|
*/
|
||||||
|
|
||||||
|
package second.debug.hidden;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* STOP LOOKING AT THIS CLASS!! IT'S OFF LIMITS!
|
||||||
|
*
|
||||||
|
* @author Mark Hiner
|
||||||
|
*/
|
||||||
|
public class ObjectMaker {
|
||||||
|
|
||||||
|
final static Set<Object> cache = new HashSet<Object>();
|
||||||
|
|
||||||
|
public static List<Integer> getList(final int size) {
|
||||||
|
final List<Integer> list = new ArrayList<Integer>();
|
||||||
|
|
||||||
|
for (int i = 0; i < size - 1; i++) {
|
||||||
|
list.add(new Double(Math.random() * 100000).intValue());
|
||||||
|
}
|
||||||
|
list.add(null);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object[] getArray(final int size) {
|
||||||
|
final Object[] array = new Object[size];
|
||||||
|
|
||||||
|
for (int i = 0; i < size - 1; i++) {
|
||||||
|
array[i] = new Double(Math.random() * 100000);
|
||||||
|
}
|
||||||
|
|
||||||
|
array[(int) (Math.random() * (size - 1))] = null;
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Double[] getDoubleArray(final int size) {
|
||||||
|
final Double[] array = new Double[size];
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Float[] getFloatArray(final int size) {
|
||||||
|
final Float[] array = new Float[size];
|
||||||
|
|
||||||
|
cache.add(array);
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Long[] getLongArray(final int size) {
|
||||||
|
final Long[] array = new Long[size];
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
}
|
23
src/main/java/second/junit/AdvanceMath.java
Normal file
23
src/main/java/second/junit/AdvanceMath.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package second.junit;
|
||||||
|
|
||||||
|
public class AdvanceMath {
|
||||||
|
|
||||||
|
public int addition(int a, int b) {
|
||||||
|
return a+b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int addition(String a, int b) {
|
||||||
|
Integer i = Integer.valueOf(a);
|
||||||
|
return i+b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int multiply(int a, int b) throws Exception {
|
||||||
|
long la = a;
|
||||||
|
long lb = b;
|
||||||
|
if (la*lb > Integer.MAX_VALUE) throw new Exception("value over the limit");
|
||||||
|
return a*b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
51
src/main/java/second/shortcuts/ClassThatHaveItAll.java
Normal file
51
src/main/java/second/shortcuts/ClassThatHaveItAll.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package second.shortcuts;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ClassThatHaveItAll implements InterfaceOne {
|
||||||
|
|
||||||
|
String name;
|
||||||
|
Integer number;
|
||||||
|
List<Long> list;
|
||||||
|
|
||||||
|
public ClassThatHaveItAll() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClassThatHaveItAll(String name, Integer number, List<Long> list) {
|
||||||
|
this.name = name;
|
||||||
|
this.number = number;
|
||||||
|
this.list = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getNumber() {
|
||||||
|
return number;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumber(Integer number) {
|
||||||
|
this.number = number;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Long> getList() {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setList(List<Long> list) {
|
||||||
|
this.list = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printMe(String info) {
|
||||||
|
System.out.println(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void usageOfPrint() {
|
||||||
|
printMe("Hi");
|
||||||
|
}
|
||||||
|
}
|
29
src/main/java/second/shortcuts/ClassThatHaveItAllBis.java
Normal file
29
src/main/java/second/shortcuts/ClassThatHaveItAllBis.java
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package second.shortcuts;
|
||||||
|
|
||||||
|
public class ClassThatHaveItAllBis implements InterfaceOne {
|
||||||
|
|
||||||
|
String name;
|
||||||
|
Integer number;
|
||||||
|
|
||||||
|
public void printMe(String info) {
|
||||||
|
System.out.println(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void spam() {
|
||||||
|
long i = 0;
|
||||||
|
i = 10;
|
||||||
|
i = 110;
|
||||||
|
i = 1110;
|
||||||
|
i = 11110;
|
||||||
|
i = 111110;
|
||||||
|
i = 1111110;
|
||||||
|
i = 11111110;
|
||||||
|
i = 111111110;
|
||||||
|
i = 1111111110;
|
||||||
|
printMe(String.valueOf(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void usageOfPrint() {
|
||||||
|
printMe("Hi");
|
||||||
|
}
|
||||||
|
}
|
7
src/main/java/second/shortcuts/InterfaceOne.java
Normal file
7
src/main/java/second/shortcuts/InterfaceOne.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package second.shortcuts;
|
||||||
|
|
||||||
|
public interface InterfaceOne {
|
||||||
|
|
||||||
|
public void printMe(String info);
|
||||||
|
|
||||||
|
}
|
16
src/main/resources/log4j.properties
Normal file
16
src/main/resources/log4j.properties
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Root logger option
|
||||||
|
log4j.rootLogger=DEBUG, stdout, file
|
||||||
|
|
||||||
|
# Redirect log messages to console
|
||||||
|
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.stdout.Target=System.out
|
||||||
|
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||||
|
|
||||||
|
# Redirect log messages to a log file, support file rolling.
|
||||||
|
log4j.appender.file=org.apache.log4j.RollingFileAppender
|
||||||
|
log4j.appender.file.File=log.log
|
||||||
|
log4j.appender.file.MaxFileSize=5MB
|
||||||
|
log4j.appender.file.MaxBackupIndex=10
|
||||||
|
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
38
src/test/java/second/junit/AdvanceMathTest.java
Normal file
38
src/test/java/second/junit/AdvanceMathTest.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
package second.junit;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class AdvanceMathTest {
|
||||||
|
|
||||||
|
AdvanceMath math;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
System.out.println("Run setUp");
|
||||||
|
math = new AdvanceMath();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void additionTest() {
|
||||||
|
Integer a = math.addition(1, 4);
|
||||||
|
assertTrue(a == 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void additionTestString() {
|
||||||
|
long a = math.addition("1", 4);
|
||||||
|
Assert.assertEquals(5L, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test(expected = Exception.class)
|
||||||
|
public void additionTestString2() {
|
||||||
|
int a = math.addition("a1", 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
128
src/test/java/second/junit/FrodoTest.java
Normal file
128
src/test/java/second/junit/FrodoTest.java
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
package second.junit;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
public class FrodoTest {
|
||||||
|
|
||||||
|
Creature frodo = new Creature("Frodo", 33L, Race.HOBBIT);
|
||||||
|
Creature sauron = new Creature("Sauron", 10000L, Race.WIZARD);
|
||||||
|
List<Creature> fellowshipOfTheRing = new ArrayList<Creature>();
|
||||||
|
Creature boromir = new Creature("Boromir", 37L, Race.MAN);
|
||||||
|
Creature sam = new Creature("Sam", 38L, Race.HOBBIT);
|
||||||
|
Creature merry = new Creature("Merry", 36L, Race.HOBBIT);
|
||||||
|
Creature pippin = new Creature("Pippin", 28L, Race.HOBBIT);
|
||||||
|
Creature legolas = new Creature("Legolas", 2500L, Race.ELF);
|
||||||
|
Creature aragorn = new Creature("Aragorn", 87L, Race.MAN);
|
||||||
|
Creature gimli = new Creature("Gimli", 139L, Race.DWARF);
|
||||||
|
Creature gandalf = new Creature("Gandalf", 3000L, Race.WIZARD);
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void prepareData() {
|
||||||
|
fellowshipOfTheRing.add(frodo);
|
||||||
|
fellowshipOfTheRing.add(sam);
|
||||||
|
fellowshipOfTheRing.add(merry);
|
||||||
|
fellowshipOfTheRing.add(pippin);
|
||||||
|
fellowshipOfTheRing.add(legolas);
|
||||||
|
fellowshipOfTheRing.add(aragorn);
|
||||||
|
fellowshipOfTheRing.add(boromir);
|
||||||
|
fellowshipOfTheRing.add(gimli);
|
||||||
|
fellowshipOfTheRing.add(gandalf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void assertJtestexample() {
|
||||||
|
|
||||||
|
// basic assertions
|
||||||
|
assertThat(frodo.getName()).isEqualTo("Frodo");
|
||||||
|
assertThat(frodo).isNotEqualTo(sauron);
|
||||||
|
|
||||||
|
// chaining string specific assertions
|
||||||
|
assertThat(frodo.getName()).startsWith("Fro")
|
||||||
|
.endsWith("do")
|
||||||
|
.isEqualToIgnoringCase("frodo");
|
||||||
|
|
||||||
|
// collection specific assertions (there are plenty more)
|
||||||
|
assertThat(fellowshipOfTheRing).hasSize(9)
|
||||||
|
.contains(frodo, sam)
|
||||||
|
.doesNotContain(sauron);
|
||||||
|
|
||||||
|
// as() is used to describe the test and will be shown before the error message
|
||||||
|
assertThat(frodo.getAge()).isEqualTo(33);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
|
||||||
|
// using the 'extracting' feature to check fellowshipOfTheRing character's names
|
||||||
|
assertThat(fellowshipOfTheRing).extracting(Creature::getName)
|
||||||
|
.doesNotContain("Sauron", "Elrond");
|
||||||
|
|
||||||
|
// extracting multiple values at once grouped in tuples
|
||||||
|
assertThat(fellowshipOfTheRing).extracting("name", "age", "race")
|
||||||
|
.contains(tuple("Boromir", 37L, Race.MAN),
|
||||||
|
tuple("Sam", 38L, Race.HOBBIT),
|
||||||
|
tuple("Legolas", 2500L, Race.ELF));
|
||||||
|
|
||||||
|
// filtering a collection before asserting
|
||||||
|
assertThat(fellowshipOfTheRing).filteredOn(character -> character.getName().contains("o"))
|
||||||
|
.containsOnly(aragorn, frodo, legolas, boromir);
|
||||||
|
|
||||||
|
// combining filtering and extraction (yes we can)
|
||||||
|
assertThat(fellowshipOfTheRing).filteredOn(character -> character.getName().contains("o"))
|
||||||
|
.containsOnly(aragorn, frodo, legolas, boromir)
|
||||||
|
.extracting(character -> character.getRace())
|
||||||
|
.contains(Race.HOBBIT, Race.ELF, Race.MAN);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class Creature {
|
||||||
|
String name;
|
||||||
|
Long age;
|
||||||
|
Race race;
|
||||||
|
|
||||||
|
public Creature(String name, Long age, Race race) {
|
||||||
|
this.name = name;
|
||||||
|
this.age = age;
|
||||||
|
this.race = race;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAge(Long age) {
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Race getRace() {
|
||||||
|
return race;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRace(Race race) {
|
||||||
|
this.race = race;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Race {
|
||||||
|
HOBBIT,
|
||||||
|
ORK,
|
||||||
|
WIZARD,
|
||||||
|
ELF,
|
||||||
|
MAN,
|
||||||
|
DWARF
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user