From 34b3fab8f15802c090f168516a203f2b48e0d74e Mon Sep 17 00:00:00 2001 From: Angela Ruiz Date: Sat, 12 Apr 2025 23:13:08 +0200 Subject: [PATCH] Lab solved --- .gitignore | 1 + lab-exceptions/pom.xml | 32 +++++++++ lab-exceptions/src/main/java/Person.java | 68 ++++++++++++++++++ lab-exceptions/src/main/java/PersonList.java | 50 +++++++++++++ .../src/test/java/PersonListTest.java | 20 ++++++ lab-exceptions/src/test/java/PersonTest.java | 35 +++++++++ lab-exceptions/target/classes/Person.class | Bin 0 -> 1904 bytes .../target/classes/PersonList.class | Bin 0 -> 2618 bytes .../target/test-classes/PersonListTest.class | Bin 0 -> 1200 bytes .../target/test-classes/PersonTest.class | Bin 0 -> 2642 bytes 10 files changed, 206 insertions(+) create mode 100644 .gitignore create mode 100644 lab-exceptions/pom.xml create mode 100644 lab-exceptions/src/main/java/Person.java create mode 100644 lab-exceptions/src/main/java/PersonList.java create mode 100644 lab-exceptions/src/test/java/PersonListTest.java create mode 100644 lab-exceptions/src/test/java/PersonTest.java create mode 100644 lab-exceptions/target/classes/Person.class create mode 100644 lab-exceptions/target/classes/PersonList.class create mode 100644 lab-exceptions/target/test-classes/PersonListTest.class create mode 100644 lab-exceptions/target/test-classes/PersonTest.class diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/lab-exceptions/pom.xml b/lab-exceptions/pom.xml new file mode 100644 index 0000000..6924456 --- /dev/null +++ b/lab-exceptions/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + org.example + lab-exceptions + 1.0-SNAPSHOT + + + junit + junit + RELEASE + test + + + junit + junit + RELEASE + test + + + org.junit.jupiter + junit-jupiter + RELEASE + test + + + + + \ No newline at end of file diff --git a/lab-exceptions/src/main/java/Person.java b/lab-exceptions/src/main/java/Person.java new file mode 100644 index 0000000..270180f --- /dev/null +++ b/lab-exceptions/src/main/java/Person.java @@ -0,0 +1,68 @@ +import java.util.Objects; + +public class Person { + private int id; + private String name; + private int age; + private String occupation; + + public Person(int id, String name, int age, String occupation) { + setId(id); + setName(name); + setAge(age); + setOccupation(occupation); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) throws IllegalArgumentException { + if (age < 0) { + throw new IllegalArgumentException("Age must be a positive integer"); + } + this.age = age; + } + + public String getOccupation() { + return occupation; + } + + public void setOccupation(String occupation) { + this.occupation = occupation; + } + + @Override + + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Person person = (Person) o; + return id == person.getId() && + Objects.equals(age, person.getAge()) && + Objects.equals(name, person.getName()) && + Objects.equals(occupation, person.getOccupation()) + ; + } +} diff --git a/lab-exceptions/src/main/java/PersonList.java b/lab-exceptions/src/main/java/PersonList.java new file mode 100644 index 0000000..2434258 --- /dev/null +++ b/lab-exceptions/src/main/java/PersonList.java @@ -0,0 +1,50 @@ +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + + +public class PersonList { + private List personList; + + public PersonList() { + this.personList = new ArrayList<>(); + } + + public List getPersonList() { + return personList; + } + + public void addPerson(Person person) { + this.personList.add(person); + } + + public Person findByName(String name) { + if (name == null || !name.contains(" ")) { + throw new IllegalArgumentException("Name must be in the format 'FirstName LastName'"); + } + for (Person person : personList) { + + if (person.getName().equals(name)) { + return person; + } + } + return null; + } + + + public Person clone(Person person) { + return new Person(person.getId() + 1, person.getName(), person.getAge(), person.getOccupation()); + } + + public void writeToFile(Object o) { + + try (FileWriter fw = new FileWriter("personList.txt", true)) { + fw.write(o.toString()); + } catch (IOException e) { + System.out.println("Couldn´t write to file" + e.getMessage()); + throw new RuntimeException(e); + } + + } +} \ No newline at end of file diff --git a/lab-exceptions/src/test/java/PersonListTest.java b/lab-exceptions/src/test/java/PersonListTest.java new file mode 100644 index 0000000..9d562da --- /dev/null +++ b/lab-exceptions/src/test/java/PersonListTest.java @@ -0,0 +1,20 @@ +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class PersonListTest { + @Test + @DisplayName("Gives an error if cloned person doesn`t have same properties") + void testCloneCreatesNewPerson() { + PersonList personList = new PersonList(); + Person person = new Person(1, "Carlos Gomez", 40, "Abogado"); + personList.addPerson(person); + + Person clonedPerson = personList.clone(person); + + assertNotEquals(person.getId(), clonedPerson.getId()); + assertEquals(person.getName(), clonedPerson.getName()); + assertEquals(person.getAge(), clonedPerson.getAge()); + assertEquals(person.getOccupation(), clonedPerson.getOccupation()); + } +} diff --git a/lab-exceptions/src/test/java/PersonTest.java b/lab-exceptions/src/test/java/PersonTest.java new file mode 100644 index 0000000..705a6b6 --- /dev/null +++ b/lab-exceptions/src/test/java/PersonTest.java @@ -0,0 +1,35 @@ +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class PersonTest { + + @Test + @DisplayName("It should gives an error if age is negative") + void negativeAgeException() { + Person person = new Person(1, "Juan Perez", 30, "Developer"); + + assertThrows(IllegalArgumentException.class, () -> person.setAge(-5)); + } + + @Test + @DisplayName("Gives an error if it doesn't return correct person ") + void testFindByNameReturnsCorrectPerson() { + PersonList personList = new PersonList(); + Person person = new Person(1, "María Ruiz", 25, "Actriz"); + personList.addPerson(person); + + Person foundPerson = personList.findByName("María Ruiz"); + assertNotNull(foundPerson); + assertEquals("María Ruiz", foundPerson.getName()); + } + + @Test + @DisplayName("Gives an error if format is not correct and exception is not thrown ") + void testCorrectFormatException() { + PersonList personList = new PersonList(); + personList.addPerson(new Person(1, "María Ruiz", 25, "Actriz")); + + assertThrows(IllegalArgumentException.class, () -> personList.findByName("MaríaRuiz")); + } +} diff --git a/lab-exceptions/target/classes/Person.class b/lab-exceptions/target/classes/Person.class new file mode 100644 index 0000000000000000000000000000000000000000..b2e92837933faba8150d91af5832267444f3f74b GIT binary patch literal 1904 zcmZ`(&u<%55dNNjt+QFXiR+|IOcFPxt-TIS3#Fk=nOgQ z@(Ex1DO3i|_q?{#sILdM83QMMZ?xU2+Y)2Oz^pt^QB|$g zx-H9dnvDtGoHj6rd4-6>aH=e-mkcamk--~&pv;SL#42y#j6955bz8$(h2;U9vg_J) z%iU_%yN7neyZvR&Zb`r-&M7PsQ~t2q@$v_D-paR{9mjKy?7Y+P?7H37v5X5s-;_it z8ZZTm-t40midPK0f{O~ty6tVdR;QzIvQQiX>MPeJ^-BgW<5f~hQ=yc!mvxrvbq!Yy ztlp!<$&vC=z z6J^5wqHDQ4To^82&>QPRQ9@1e6G>s)z+1RYObingKl@y=VfDrIZ3FL!X^N(ULMs#t zhnQE?jfZujuOZr`>xv3vX3cWovvypb+5|8Eb_zq3<=j?V5eZ5h#;Ew2Sh9eVAlV z05Ps?W}YI_!T!!3^>=m=cO7g5l)1i3=_}gBxzC$Vpv+tknz_;IA$HOq> zL`&}3+&4)5g5{4hFF(Qg--Mqfffe=H&9Df-Ij-kf$O21R9DqwFNco@H6(R~QR*&{y30e@5`An5`9;!)!Y1Aief`DUrO_Uk zrSB1s9hd$<+U%iJ;`bfm(c{wZNbX3dvEx_2#Tt)GPw^V1YuujV#@9GYU5<)3eQAbL zfzlmc(qca#7L}R=JenK};3_e$LBln6+jX4AO^)FPR&Wbj#8%~cpR$ZgK0w#c;Q>Ct g9TuZCJv8^GwDG7earxEP`3!sZQ(*OVf literal 0 HcmV?d00001 diff --git a/lab-exceptions/target/classes/PersonList.class b/lab-exceptions/target/classes/PersonList.class new file mode 100644 index 0000000000000000000000000000000000000000..5df6f9fc527de73cf42012f391a0b8cc2860bae6 GIT binary patch literal 2618 zcmZuzTUQfT6#h;~7!n4dQM@2(v_(m{L@T|KpZChJO8AT@q z1x-P;LRHYFVguR*LdSKxXqj@FgF?fgBUMi!rxUHX2Vn&pRcu11z=rkHTw9x;7wGKu z;u`8pL}y#DML=uYmXn8%7FBP50oE|aEh_k3i7A!lj zIgx#1hFx@Ahm_`h>uC z#n7jqU&R0h1;TaWsxAV`qE?*Hm)Qiia8^d_S8)LM3;0dfys4VIkyr&oY`)jR5Dwx& z6%XNIX3Od>CV}-~6#%jgkE%$>Ha3$~EmxG$kEu9}BLV?NC)r9?l9cvg6(iE#O#5(F zm!_jCj>(1EXqwDqN(D`_EoYvP#62kx?M*fap|bE@Oj55;RY@_d_?VH?PuY^w7Nn@M zx+DjkWlA`S3Aw_gWc$tqW}|7jTTZArDa&hdEN^8QH?86s+0ww0OfM~`R6HwpR3MYH zin@Z?>b`L~o?f)AC2cN8*BLyo;sv}&z!dpZsZg->Vo@hYTN{h0MNlFN&Q!AzRdTW> z$sp#CQ82GU$HMwOuu^pNJbAZD)Iq0*j={&dH5}s5wR}RsqQI8A@I81VB_lVl+aYAp z)Pi&L7_~~ddGq({PQ*nUajeJ!nUx-S6(%gUQ!5m7lNbgXF;qHL5wc6fx-}9ZoW^+- zw&XX&_K%YZO{yY`6CspvLBW!WWy!R62(3pzaTX+=oT=a?fv!4~lO@wJ@_LP^5LWPt z>@{f*P8nHKb4s?(kcK@b52iyYZv!L_C%9Wit$F&irwmh{DCOsLds?=T0!vvLEtl48 zLyjv(zq4rYq){sw++)rYwU^R67Q@x8=N_jOr|vt9>*@$nCtePL*4}D`(KKoI6isnf zt>kgRFy}{BlM@&ZFQ9~ZOI*X z+d=2uD^#(7Z()h2NKK3N?MbqQjH^vGXk5-wVU0CbQWEQwRkAa>w`zNx=Rv6i?B@04 z zqh#@_OwxA)9X_0@7bFiRU?a=f{I5K##z9{|!V1E@1~h;sU?n;KV=~5A>Ds$Rz{@u3owImyo!c zTwFW(R{+?8Hf-gyi~lmZaRfUsj9o+#aqElFcZeRcDoN#7t zf(l~0{vjfP&+$d2`U&zUF?X%u;0!A{#8yHCBE`< ziw^P|D%dl951Mz22l_0u!v z&d2%O&x<~VL0&fpTs$#XguC%Iz9Ap`(SvXCoy$zRhB1xr**%ZbAvE7&!X^c+3VaH0 fDxqNJ7JKHenP_mW%HI$p3QqSh_A)E-;fMbLa$sOc literal 0 HcmV?d00001 diff --git a/lab-exceptions/target/test-classes/PersonListTest.class b/lab-exceptions/target/test-classes/PersonListTest.class new file mode 100644 index 0000000000000000000000000000000000000000..636701d271424ef9b4d8cae10c15d47b194c0c11 GIT binary patch literal 1200 zcmZ`&>rN9v6#fQ!T^3pjiYV&JwFOEQZ)ovS3)CjH5Ft(Y=d>NmknL{W-PY(^`NtAT zd;lNHc&6J@60k|nocsCCe6xT4{`w8z35ps2YXL(h>`BYTZ2RZ&x>b=<&BhA6Ms{ZR~K$&#;T{hV7mW^tP#STk)) zFeHZYL81aMr{gZ}QCdTI#d>csx(5Rf!kE{wfJFwwb{d(}HZ4xFB|YI}cuQt-t}7f* z+Lp@@<2|End%IuS+$2vhSu83b8kTjeAW3V}gfedul<8#Z>auF+s*W|R)1CS42EA62 zm(qPIvR6I+v<)2@wNHqqH$ zdAm+nVLN>ajhhwjNM-k(0q;c8*75$;s^_5EWEo~XI`fKyydyXn zW$|^unbx{^Jhb$sTB-~AF^0&1E=uWfc|rN?$F}9krl?3)5|o@}*WQSM^zEsilJxa~;W=p;I+^mUcENu1!doO& zSf#xnsrU7l$dUzYQ*@+P+$AkQp8a!#kGqJL&Y>L#5_&wDnCK$@VQu{e3%gw@CvU9`V3{h!CQhnPjxxcM)8ii#>kVWbBA(vUF^|OAaexo{{iyS9E<<} literal 0 HcmV?d00001 diff --git a/lab-exceptions/target/test-classes/PersonTest.class b/lab-exceptions/target/test-classes/PersonTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e28a246b95c332652f8c9f1d6c4ec79d458e0cf9 GIT binary patch literal 2642 zcmb7FTUQfT6#fPxiE%V(#0!cr3Q7WM#7kQnt3@t~4QPR)_I^lC!r){k&V{P~qCcb$ zeLDE^8v2W+^)xbEc_3ZSu`|eO$leQtZE!)p$UxVye@<>o z%V|qDi!=@?*qnw^ak1J%UiDqmZdUeKQVu@SaHe;5(XwPySTk-jXi3|je^!%i-*oH( z=^xfHh$9-(@|mm!zSMB7SdF+#^gmbU^@=YQMurCSzlv)l;mnzAp?hc;rvl9eou z;dmNDI!@rE24io_8PAihGW9g*BAl#ky3Ws>t`-x~&05^7e1Q8>!Z<_>Nu_a$>PFF2 zP0!C_82uR-8V)Q8_m5wNu@acn{0#FkQ=_6U)QNE&XK{{c5cPUw%kw=^*43G!juIvb z-Z1U@?dQv)MdgN*A;bwPb;MKxo!4;z7d0G=LSJ_L<-oEu97!5RHB%|kPa2nWOye@s z)0BSXWU!cwHTI&wuj;slkGs0gKMjOMT_^UyPKed@R)B_2RWV%GaJ>_)677S^AcG1; ziNsafsu(`kaTB*Fu_yhRCUr^`7gdqYbaS&NJvK>d)~RzhS2b<99JDs1yQZ?Jp-^>d z!de%uspj!w%HK3q6~+202)Z7$S?RvHE$OIR=XA|pVz+6?bkd<=XeF?HvnAI}&m`=O zZ96_q!`d8vN9o00#@?|#XL@Z*gw;SU`?iG@kp9%7Z+M$dVAYK#nRy1AUAnI08fL=~ zO=*~((V@-0^%==Rx2jg8AGo$R>$om&l1@2hqj*$$dJ=@mVyQNq!0s0Al{;^_G<~D) zNY9?|4L3wLY7x2-p|U+rC=#*H1;=fP-ld^o?rq3McqRpC2)$cZa zj9H?!Q5WOyb~QfDYS>+h>#Uh>UcEHF(QvqT(RDjt!>Jg(BW$uB#xD_N)d}31TrgFE zD0YE266)sS$u&F9pB;{XLU7`I@a-!vt|~XFw@x5 z@dRw@#06~H+s+eNu7&{e^#FEB5%+Z>ho)zr%5OK87w(1%(6t8H~`j{kZ*p2q@bz#Z=P zg~pG<5itA)>Bp(U{`^Scz)Kvg7V=ZC!FTf&jy~*R9zs8@v&a$gBo2nyM?+G>h_G{9 zy^BTqyT_9`?tRH`mGdPJ%N*YCy8eZu6j!F-VEFM%j8r2Eqxqr2X;N64I=_RlslwUuFF=zbe6*$--w;D3PQn@uw4s&xD}BBc4yu>M@bn*)h^|jFg_t z|Gk47J#`}>Jpq&s6-xk7v+oGnhwt$Nzp54*T>B9}@fVG19JRQYrDGdyxET5uNW`4| literal 0 HcmV?d00001