diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..24eccee --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..cb7de09 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..528e38c --- /dev/null +++ b/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + groupId + lab-java-intro-to-testing + 1.0-SNAPSHOT + + + 18 + 18 + UTF-8 + + + + + org.junit.jupiter + junit-jupiter-engine + 5.10.0 + + + \ No newline at end of file diff --git a/src/main/java/exercise1/Ex1.java b/src/main/java/exercise1/Ex1.java new file mode 100644 index 0000000..ca64405 --- /dev/null +++ b/src/main/java/exercise1/Ex1.java @@ -0,0 +1,21 @@ +package exercise1; + +public class Ex1 { + public static int[] getOddInts(int n) throws IllegalArgumentException { + if (n < 1) { + throw new IllegalArgumentException("the number must be greater than or equal to 1"); + } + + int[] oddNums = new int[(n + 1) / 2]; + int index = 0; + + for (int i = 1; i <= n; i++) { + if (i % 2 != 0) { + oddNums[index] = i; + index++; + } + } + + return oddNums; + } +} \ No newline at end of file diff --git a/src/main/java/exercise2/Ex2.java b/src/main/java/exercise2/Ex2.java new file mode 100644 index 0000000..cb91efc --- /dev/null +++ b/src/main/java/exercise2/Ex2.java @@ -0,0 +1,25 @@ +package exercise2; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class Ex2 { + private static final Set javaKeywords = new HashSet<>(Arrays.asList( + "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", + "const", "continue", "default", "do", "double", "else", "enum", "extends", "final", + "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", + "interface", "long", "native", "new", "package", "private", "protected", "public", + "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", + "throw", "throws", "transient", "try", "void", "volatile", "while" + )); + + public static boolean hasKeyword(String str) { + for (String word : str.split("\\s+")) { + if (javaKeywords.contains(word)) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/exercise3/Elf.java b/src/main/java/exercise3/Elf.java new file mode 100644 index 0000000..c928415 --- /dev/null +++ b/src/main/java/exercise3/Elf.java @@ -0,0 +1,17 @@ +package exercise3; + +class Elf extends Player { + final int speed; + + public Elf(int health, int strength, int lives, int speed) { + super(health, strength, lives); + this.speed = speed; + } + + //Getters + + public int getSpeed() { + return speed; + } +} + diff --git a/src/main/java/exercise3/Player.java b/src/main/java/exercise3/Player.java new file mode 100644 index 0000000..85bdb3a --- /dev/null +++ b/src/main/java/exercise3/Player.java @@ -0,0 +1,63 @@ +package exercise3; + +abstract class Player { + private int health; + private int strength; + private int lives; + private final int initialHealth; + + //Constructor + public Player(int health, int strength, int lives) { + setHealth(health); + setStrength(strength); + setLives(lives); + initialHealth = health; + } + + //Getters + public int getHealth() { + return health; + } + + public int getStrength() { + return strength; + } + + public int getLives() { + return lives; + } + + //Setters + public void setHealth(int health) { + this.health = health; + } + + public void setStrength(int strength) { + this.strength = strength; + } + + public void setLives(int lives) { + this.lives = lives; + } + + //Methods + // Methods + public void decrementLive() { + if (lives <= 0) { + System.out.println("This character is dead"); + } else { + lives--; + setHealth(initialHealth); + } + } + + public void attack(Player playerToAttack) { + playerToAttack.setHealth(playerToAttack.getHealth() - strength); + } + + public void checkHealth() { + if (health <= 0) { + decrementLive(); + } + } +} diff --git a/src/main/java/exercise3/Warrior.java b/src/main/java/exercise3/Warrior.java new file mode 100644 index 0000000..d0cbfa9 --- /dev/null +++ b/src/main/java/exercise3/Warrior.java @@ -0,0 +1,20 @@ +package exercise3; + +class Warrior extends Player { + final int force; + + public Warrior(int health, int strength, int lives, int force) { + super(health, strength, lives); + this.force = force; + } + + //Getter + public int getForce() { + return force; + } + + // Method + public Elf convertToElf() { + return new Elf(getHealth(), getStrength(), getLives(), 0); + } +} diff --git a/src/main/java/exercise3/Wizard.java b/src/main/java/exercise3/Wizard.java new file mode 100644 index 0000000..365b113 --- /dev/null +++ b/src/main/java/exercise3/Wizard.java @@ -0,0 +1,20 @@ +package exercise3; + +class Wizard extends Player { + private String spell; + + public Wizard(int health, int strength, int lives, String spell) { + super(health, strength, lives); + this.spell = spell; + } + + //Getters + public String getSpell() { + return spell; + } + + //Methods + public Elf convertToElf() { + return new Elf(getHealth(), getStrength(), getLives(), 0); + } +} diff --git a/src/test/java/exercise1/TestEx1.java b/src/test/java/exercise1/TestEx1.java new file mode 100644 index 0000000..d93cb05 --- /dev/null +++ b/src/test/java/exercise1/TestEx1.java @@ -0,0 +1,12 @@ +package exercise1; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +public class TestEx1 { + @Test + public void getOddInts() { + int[] expected = {1, 3, 5, 7, 9}; + assertArrayEquals(expected, Ex1.getOddInts(10)); + } +} diff --git a/src/test/java/exercise2/TestEx2.java b/src/test/java/exercise2/TestEx2.java new file mode 100644 index 0000000..9c997b9 --- /dev/null +++ b/src/test/java/exercise2/TestEx2.java @@ -0,0 +1,12 @@ +package exercise2; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class TestEx2 { + @Test + public void getJavaKeyword() { + assertTrue(Ex2.hasKeyword("Don't break my heart"), "Expected 'Don't break my heart' to contain a Java keyword"); + assertTrue(!Ex2.hasKeyword("I love to breakdance"), "Expected 'I love to breakdance' not to contain any Java keyword"); + } +} diff --git a/src/test/java/exercise3/TestEx3.java b/src/test/java/exercise3/TestEx3.java new file mode 100644 index 0000000..013a8bf --- /dev/null +++ b/src/test/java/exercise3/TestEx3.java @@ -0,0 +1,72 @@ +package exercise3; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TestEx3 { + private Warrior warrior; + private Elf elf; + private Wizard wizard; + private Player playerToAttack; + + @BeforeEach + public void setUp() { + warrior = new Warrior(100, 20, 3, 50); + elf = new Elf(80, 15, 4, 30); + wizard = new Wizard(90, 10, 5, "Fireball"); + playerToAttack = new Warrior(100, 20, 3, 50); + } + + @Test + public void testWarrior() { + assertEquals(100, warrior.getHealth()); + assertEquals(20, warrior.getStrength()); + assertEquals(3, warrior.getLives()); + assertEquals(50, warrior.getForce()); + } + + @Test + public void testElf() { + assertEquals(80, elf.getHealth()); + assertEquals(15, elf.getStrength()); + assertEquals(4, elf.getLives()); + assertEquals(30, elf.getSpeed()); + } + + @Test + public void testWizard() { + assertEquals(90, wizard.getHealth()); + assertEquals(10, wizard.getStrength()); + assertEquals(5, wizard.getLives()); + assertEquals("Fireball", wizard.getSpell()); + } + + @Test + public void testAttack() { + warrior.attack(playerToAttack); + assertEquals(80, playerToAttack.getHealth()); + } + + @Test + public void testCheckHealth() { + warrior.setHealth(0); + warrior.checkHealth(); + assertEquals(2, warrior.getLives()); + } + + @Test + public void testConvertToElf() { + Elf elfFromWarrior = warrior.convertToElf(); + assertEquals(100, elfFromWarrior.getHealth()); + assertEquals(20, elfFromWarrior.getStrength()); + assertEquals(3, elfFromWarrior.getLives()); + assertEquals(0, elfFromWarrior.getSpeed()); + + Elf elfFromWizard = wizard.convertToElf(); + assertEquals(90, elfFromWizard.getHealth()); + assertEquals(10, elfFromWizard.getStrength()); + assertEquals(5, elfFromWizard.getLives()); + assertEquals(0, elfFromWizard.getSpeed()); + } +} diff --git a/target/classes/exercise1/ex1.class b/target/classes/exercise1/ex1.class new file mode 100644 index 0000000..6a567eb Binary files /dev/null and b/target/classes/exercise1/ex1.class differ diff --git a/target/classes/exercise2/Ex2.class b/target/classes/exercise2/Ex2.class new file mode 100644 index 0000000..2539a6b Binary files /dev/null and b/target/classes/exercise2/Ex2.class differ diff --git a/target/classes/exercise3/Elf.class b/target/classes/exercise3/Elf.class new file mode 100644 index 0000000..85c0690 Binary files /dev/null and b/target/classes/exercise3/Elf.class differ diff --git a/target/classes/exercise3/Player.class b/target/classes/exercise3/Player.class new file mode 100644 index 0000000..64f9448 Binary files /dev/null and b/target/classes/exercise3/Player.class differ diff --git a/target/classes/exercise3/Warrior.class b/target/classes/exercise3/Warrior.class new file mode 100644 index 0000000..f9d6d9a Binary files /dev/null and b/target/classes/exercise3/Warrior.class differ diff --git a/target/classes/exercise3/Wizard.class b/target/classes/exercise3/Wizard.class new file mode 100644 index 0000000..a505d48 Binary files /dev/null and b/target/classes/exercise3/Wizard.class differ diff --git a/target/test-classes/exercise1/testEx1.class b/target/test-classes/exercise1/testEx1.class new file mode 100644 index 0000000..931d0cf Binary files /dev/null and b/target/test-classes/exercise1/testEx1.class differ diff --git a/target/test-classes/exercise2/TestEx2.class b/target/test-classes/exercise2/TestEx2.class new file mode 100644 index 0000000..ddc1477 Binary files /dev/null and b/target/test-classes/exercise2/TestEx2.class differ diff --git a/target/test-classes/exercise3/TestEx3.class b/target/test-classes/exercise3/TestEx3.class new file mode 100644 index 0000000..4161102 Binary files /dev/null and b/target/test-classes/exercise3/TestEx3.class differ