From fc6f6ca9bf82442367d25bc07f739086477f9cb5 Mon Sep 17 00:00:00 2001 From: jtiradohernandez Date: Sat, 10 Feb 2024 14:08:55 +0100 Subject: [PATCH] Solucion para el lab de intro a testing --- java-intro-testing/.gitignore | 38 ++++ java-intro-testing/.idea/.gitignore | 3 + java-intro-testing/.idea/encodings.xml | 7 + java-intro-testing/.idea/misc.xml | 14 ++ java-intro-testing/.idea/vcs.xml | 6 + README.md => java-intro-testing/README.md | 0 java-intro-testing/pom.xml | 31 ++++ .../src/main/java/org/example/Main.java | 33 ++++ .../java/org/example/PlayerClass/Elf.java | 37 ++++ .../java/org/example/PlayerClass/Player.java | 44 +++++ .../java/org/example/PlayerClass/Warrior.java | 43 +++++ .../java/org/example/PlayerClass/Wizard.java | 42 +++++ .../src/test/java/org/example/MainTest.java | 26 +++ .../org/example/PlayerClass/PlayerTest.java | 168 ++++++++++++++++++ 14 files changed, 492 insertions(+) create mode 100644 java-intro-testing/.gitignore create mode 100644 java-intro-testing/.idea/.gitignore create mode 100644 java-intro-testing/.idea/encodings.xml create mode 100644 java-intro-testing/.idea/misc.xml create mode 100644 java-intro-testing/.idea/vcs.xml rename README.md => java-intro-testing/README.md (100%) create mode 100644 java-intro-testing/pom.xml create mode 100644 java-intro-testing/src/main/java/org/example/Main.java create mode 100644 java-intro-testing/src/main/java/org/example/PlayerClass/Elf.java create mode 100644 java-intro-testing/src/main/java/org/example/PlayerClass/Player.java create mode 100644 java-intro-testing/src/main/java/org/example/PlayerClass/Warrior.java create mode 100644 java-intro-testing/src/main/java/org/example/PlayerClass/Wizard.java create mode 100644 java-intro-testing/src/test/java/org/example/MainTest.java create mode 100644 java-intro-testing/src/test/java/org/example/PlayerClass/PlayerTest.java diff --git a/java-intro-testing/.gitignore b/java-intro-testing/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/java-intro-testing/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/java-intro-testing/.idea/.gitignore b/java-intro-testing/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/java-intro-testing/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/java-intro-testing/.idea/encodings.xml b/java-intro-testing/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/java-intro-testing/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/java-intro-testing/.idea/misc.xml b/java-intro-testing/.idea/misc.xml new file mode 100644 index 0000000..82dbec8 --- /dev/null +++ b/java-intro-testing/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/java-intro-testing/.idea/vcs.xml b/java-intro-testing/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/java-intro-testing/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/java-intro-testing/README.md similarity index 100% rename from README.md rename to java-intro-testing/README.md diff --git a/java-intro-testing/pom.xml b/java-intro-testing/pom.xml new file mode 100644 index 0000000..777b3a1 --- /dev/null +++ b/java-intro-testing/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + org.example + java-intro-testing + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + org.junit.jupiter + junit-jupiter + RELEASE + test + + + org.junit.jupiter + junit-jupiter + RELEASE + test + + + + \ No newline at end of file diff --git a/java-intro-testing/src/main/java/org/example/Main.java b/java-intro-testing/src/main/java/org/example/Main.java new file mode 100644 index 0000000..239727e --- /dev/null +++ b/java-intro-testing/src/main/java/org/example/Main.java @@ -0,0 +1,33 @@ +package org.example; + +public class Main { + public static void main(String[] args) { + + + } + + public int[] myFirstTestedMethod(int num){ + int longitudArray = (num+1)/2; + int [] arrayNums = new int[longitudArray];; + int index = 1; + + for(int i = 0;index <= num;i++){ + arrayNums[i] = index; + index = index+2; + } + return arrayNums; + } + + public boolean stringToBoolean(String string){ + String[] listOfKeywords = {"abstract","continue","for","new","switch","assert","default","goto","package","synchronized","boolean","do","if","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while"}; + String[] wordsFromString = string.split(" ");; + for(int i=0;i<=listOfKeywords.length-1;i++){ + for(int j=0;j<=wordsFromString.length-1;j++){ + if(listOfKeywords[i].equals(wordsFromString[j])){ + return true; + } + } + } + return false; + } +} \ No newline at end of file diff --git a/java-intro-testing/src/main/java/org/example/PlayerClass/Elf.java b/java-intro-testing/src/main/java/org/example/PlayerClass/Elf.java new file mode 100644 index 0000000..3a69f34 --- /dev/null +++ b/java-intro-testing/src/main/java/org/example/PlayerClass/Elf.java @@ -0,0 +1,37 @@ +package org.example.PlayerClass; + +public class Elf extends Player{ + private int speed; + final private int initialHealth; + public Elf(int health, int strength, int lives, int speed) { + super(health, strength, lives); + setSpeed(speed); + initialHealth = health; + } + + public int getSpeed() { + return speed; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public void decrementLive() { + setHealth(initialHealth); + super.setLives(super.getLives()-1); + if(getLives()<=0){ + System.out.println("This character is dead"); + } + } + + public void attack(Player playerToAttack) { + playerToAttack.setHealth(playerToAttack.getHealth()-getStrength()); + } + + public void checkHealth() { + if(getHealth()<=0){ + decrementLive(); + } + } +} diff --git a/java-intro-testing/src/main/java/org/example/PlayerClass/Player.java b/java-intro-testing/src/main/java/org/example/PlayerClass/Player.java new file mode 100644 index 0000000..213a88d --- /dev/null +++ b/java-intro-testing/src/main/java/org/example/PlayerClass/Player.java @@ -0,0 +1,44 @@ +package org.example.PlayerClass; + +abstract public class Player { + private int health; + private int strength; + private int lives; + + public Player(int health, int strength, int lives) { + setHealth(health); + setStrength(strength); + setLives(lives); + } + + public int getHealth() { + return health; + } + + public void setHealth(int health) { + this.health = health; + } + + public int getStrength() { + return strength; + } + + public void setStrength(int strength) { + this.strength = strength; + } + + public int getLives() { + return lives; + } + + public void setLives(int lives) { + this.lives = lives; + } + + abstract public void decrementLive(); + + abstract public void attack(Player playerToAttack); + + abstract public void checkHealth(); + +} diff --git a/java-intro-testing/src/main/java/org/example/PlayerClass/Warrior.java b/java-intro-testing/src/main/java/org/example/PlayerClass/Warrior.java new file mode 100644 index 0000000..b33f10e --- /dev/null +++ b/java-intro-testing/src/main/java/org/example/PlayerClass/Warrior.java @@ -0,0 +1,43 @@ +package org.example.PlayerClass; + +public class Warrior extends Player { + private int force; + final private int initialHealth; + + public Warrior(int health, int strength, int lives, int force) { + super(health, strength, lives); + setForce(force); + initialHealth = health; + } + + public int getForce() { + return force; + } + + public void setForce(int force) { + this.force = force; + } + + public void decrementLive() { + setHealth(initialHealth); + super.setLives(super.getLives() - 1); + if (getLives() <= 0) { + System.out.println("This character is dead"); + } + } + + public void attack(Player playerToAttack) { + playerToAttack.setHealth(playerToAttack.getHealth() - getStrength()); + } + + public void checkHealth() { + if(getHealth()<=0){ + decrementLive(); + } + } + + public Elf convertToElf () { + Elf elf = new Elf(getHealth(), getStrength(), getLives(), getForce()); + return elf; + } +} diff --git a/java-intro-testing/src/main/java/org/example/PlayerClass/Wizard.java b/java-intro-testing/src/main/java/org/example/PlayerClass/Wizard.java new file mode 100644 index 0000000..5f1f01c --- /dev/null +++ b/java-intro-testing/src/main/java/org/example/PlayerClass/Wizard.java @@ -0,0 +1,42 @@ +package org.example.PlayerClass; + +public class Wizard extends Player { + private int spell; + final private int initialHealth; + public Wizard(int health, int strength, int lives, int spell) { + super(health, strength, lives); + setSpell(spell); + initialHealth = health; + } + + public int getSpell() { + return spell; + } + + public void setSpell(int spell) { + this.spell = spell; + } + + public void decrementLive() { + setHealth(initialHealth); + super.setLives(super.getLives()-1); + if(getLives()<=0){ + System.out.println("This character is dead"); + } + } + + public void attack(Player playerToAttack) { + playerToAttack.setHealth(playerToAttack.getHealth()-getStrength()); + } + + public void checkHealth() { + if(getHealth()<=0){ + decrementLive(); + } + } + + public Elf convertToElf(){ + Elf elf = new Elf(getHealth(),getStrength(),getLives(),getSpell()); + return elf; + } +} diff --git a/java-intro-testing/src/test/java/org/example/MainTest.java b/java-intro-testing/src/test/java/org/example/MainTest.java new file mode 100644 index 0000000..b81bd73 --- /dev/null +++ b/java-intro-testing/src/test/java/org/example/MainTest.java @@ -0,0 +1,26 @@ +package org.example; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class MainTest { + + + @Test + void testMyFirstTDD() { + Main my = new Main(); + int num = 10; + int[] oddNumbers = my.myFirstTestedMethod(num); + int[] oddResult = {1,3,5,7,9}; + assertArrayEquals(oddResult, oddNumbers); + } + + @Test + void stringToBoolean() { + String string = "Hola este es un test"; + Main my = new Main(); + boolean result = my.stringToBoolean(string); + assertEquals(false,result); + + } +} \ No newline at end of file diff --git a/java-intro-testing/src/test/java/org/example/PlayerClass/PlayerTest.java b/java-intro-testing/src/test/java/org/example/PlayerClass/PlayerTest.java new file mode 100644 index 0000000..84b759e --- /dev/null +++ b/java-intro-testing/src/test/java/org/example/PlayerClass/PlayerTest.java @@ -0,0 +1,168 @@ +package org.example.PlayerClass; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; + + +class PlayerTest { + private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + private final PrintStream originalOut = System.out; + Warrior warrior; + Wizard wizard; + Elf elf; + + @BeforeEach + void setPlayers(){ + System.setOut(new PrintStream(outputStreamCaptor)); + this.warrior = new Warrior(10,10,10, 10); + this.wizard = new Wizard(10,10,10, 10); + this.elf = new Elf(10,10,10, 10); + } + + @AfterEach + void closePrintln(){ + System.setOut(originalOut); + } + + + //TESTING OF DECREMENTLIVE() METHOD + @Test @Tag("decrementLive") + void warriorDecrementsLive() { + this.warrior.setHealth(0); + this.warrior.decrementLive(); + assertEquals(9,this.warrior.getLives()); + assertEquals(10,this.warrior.getHealth()); + } + + @Test @Tag("decrementLive") + void warriorIsDefeated() { + this.warrior.setLives(1); + this.warrior.decrementLive(); + assertEquals("This character is dead", outputStreamCaptor.toString().trim()); + } + + @Test @Tag("decrementLive") + void wizardDecrementsLive() { + this.wizard.setHealth(0); + this.wizard.decrementLive(); + assertEquals(9,this.wizard.getLives()); + assertEquals(10,this.wizard.getHealth()); + } + @Test @Tag("decrementLive") + void wizardIsDefeated() { + this.wizard.setLives(1); + this.wizard.decrementLive(); + assertEquals("This character is dead", outputStreamCaptor.toString().trim()); + } + @Test @Tag("decrementLive") + void elfDecrementsLive() { + this.elf.setHealth(0); + this.elf.decrementLive(); + assertEquals(9,this.elf.getLives()); + assertEquals(10,this.elf.getHealth()); + } + @Test @Tag("decrementLive") + void elfIsDefeated() { + this.elf.setLives(1); + this.elf.decrementLive(); + assertEquals("This character is dead", outputStreamCaptor.toString().trim()); + } + + + + + + + //TESTING OF CHECKHEALTH() METHOD + @Test @Tag("checkHealth") + void wizardHealthDecrementsLive(){ + this.wizard.setHealth(0); + this.wizard.checkHealth(); + assertEquals(9,this.wizard.getLives()); + assertEquals(10,this.wizard.getHealth()); + + } + + @Test @Tag("checkHealth") + void wizardHealthDontDecrementsLive(){ + this.wizard.checkHealth(); + assertEquals(10,this.wizard.getLives()); + assertEquals(10,this.wizard.getHealth()); + } + + @Test @Tag("checkHealth") + void warriorHealthDecrementsLive(){ + this.warrior.setHealth(0); + this.warrior.checkHealth(); + assertEquals(9,this.warrior.getLives()); + assertEquals(10,this.warrior.getHealth()); + } + + @Test @Tag("checkHealth") + void warriorHealthDontDecrementsLive(){ + this.warrior.checkHealth(); + assertEquals(10,this.warrior.getLives()); + assertEquals(10,this.warrior.getHealth()); + } + + @Test @Tag("checkHealth") + void elfHealthDecrementsLive(){ + this.elf.setHealth(0); + this.elf.checkHealth(); + assertEquals(9,this.elf.getLives()); + assertEquals(10,this.elf.getHealth()); + } + + @Test @Tag("checkHealth") + void elfHealthDontDecrementsLive(){ + this.elf.checkHealth(); + assertEquals(10,this.elf.getLives()); + assertEquals(10,this.elf.getHealth()); + } + + + + + + //TESTING OF ATTACK() METHOD + @Test @Tag("attack") + void wizardAttacks() { + this.wizard.setStrength(5); + this.wizard.attack(warrior); + assertEquals(5,this.warrior.getHealth()); + } + @Test @Tag("attack") + void warriordAttacks() { + this.warrior.setStrength(5); + this.warrior.attack(wizard); + assertEquals(5,this.wizard.getHealth()); + } + + @Test @Tag("attack") + void elfAttacks() { + this.elf.setStrength(5); + this.elf.attack(warrior); + assertEquals(5,this.warrior.getHealth()); + } + + + + //TESTING OF CONVERTSTOELF() METHOD + @Test @Tag("convertToElf") + void warriorConvertsToElf(){ + assertEquals(Elf.class,this.warrior.convertToElf().getClass()); + } + + @Test @Tag("convertToElf") + void wizardConvertsToElf(){ + assertEquals(Elf.class,this.wizard.convertToElf().getClass()); + } +} \ No newline at end of file