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">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.example</groupId>
|
||||
<artifactId>Pracownia2020-2021</artifactId>
|
||||
<groupId>Pracownia</groupId>
|
||||
<artifactId>PracowniaMain</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</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>
|
@ -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