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