From 248c744efea75e68e09700669cbd1f78d78fc48e Mon Sep 17 00:00:00 2001
From: MASSY FERNANDEZ Neva Aracely
 <neva-aracely.massy-fernandez@imt-atlantique.net>
Date: Thu, 15 May 2025 10:09:26 +0200
Subject: [PATCH] fix: ConsultITemFilmTest

---
 .../opinion/SocialNetwork.class               | Bin 7769 -> 7969 bytes
 src/opinion/SocialNetwork.java                |  11 +++
 src/tests/ConsultItemFilmTest.java            |  75 ++++++++++++++++++
 3 files changed, 86 insertions(+)
 create mode 100644 src/tests/ConsultItemFilmTest.java

diff --git a/out/production/infrastructureLogicielleClient/opinion/SocialNetwork.class b/out/production/infrastructureLogicielleClient/opinion/SocialNetwork.class
index c1aea344efaad2d15b7b062784fd51cef66130cb..2fa5842a0df30e57043402766fb26b3dd70f2198 100644
GIT binary patch
delta 2048
zcmca<v(S#~)W2Q(7#J8_809u{v2r>#Gi>K#Xl6LX!*H0vn2~`yJ+;IovnVyWB)<qG
zew2sd7)YEaJ+&k_IW;e_D6_Z(B(aZ+ft?|rgW=R<QBFg~Gn3sp71_@7FkE1`I603q
zg7Na^<D6$$qy-rn*cci06d1Yq*%*bn7)2OG*%`%n7%ni1PhQ7&nMI0`L3Q#5emO1`
zpZxsn(gJoynaOMUjfF2Ua4;}2@G<Z+Ffv?WU|?WkxH|bWzoIdOeT{*MVHLw_u(&9a
zn(GWq4Dt+;3=9kc42%q{3~UUH3^yjb3%D`foZKg%E`5uEfq{pCk%581l;JkR9R>yl
zMuxi#4q#Om1jJHqGBAMkFfiyaAk?zL)!u`sWnf^?XJ7=I!>YA~L23=yAqdTuST!dw
z*nlna5_Dm_Ik{g@S{-DC0s}LHG=nh1eTFOsW(EcZW2j{y)&quz42%qqCSMekWV|u?
zwV)&8&B?k#@<AYdS_~`<3=9Tv)dma@)gZCQ3=bKY7?>FJ7@jaZWngA_#K6G7$-wf5
zfsc`so0H)g0|NsK10#bY0~13nLoC=)^MoQ8Z%+O$B<~F~T!ujn>?n{m?r>||;nuh_
zK&$~7&cnd`hk=8gLDljX0}}%y!#V~V1}26ZlM{tQ7;jGACamlWG8N=i69z7Z=M1aC
zUUi0>>df#0;#CF)20jK>e$GD(?CcDxG9c3su4QC+$&dy%S4|{^@#f@i5p92vxsad;
zhMN`)cVjTrjSLLI46hg-LW6>Zfr(EH913g<Obm_;i42SkuNmHeOy0~Y%Erieb25)u
zbUn!EGzKn)bqs<GZyDY(a56A3e1%)`6>iB_xFuh~-T=koSBCct55Y0?mEi-!Lk3o`
z-j56q8Q8$APYjX_><kYWL>WFaykp=1$B-BUuP7%!81f1IVTc8Vry48-I2f2292x2u
z+87uazF<v-vgoOBAJ$a(mEjx6qm!M*XEWZMd|%ue>`xB{c7{X-8L&Uu85kJ4;Qs7_
z`?Cw~&n~z>yBNMR`~ds2i{U5OpP=L*z`!oX$0-C!5{Bqrn90D%@QdL$$Q29>jB6&(
zlz7f~b8@3(a3m<igBUm%rZ5PC6A1?c1H&!2OK!nkatrQ~TX2`$f`|AmhCg7Jfb{-l
zkYr$Ecr;m8N>Ut@kYK^Mh=GyeA2cLlr4BIOoGd3Do(!@-hJllzia`KuKPbl6!|h)W
zw|_m{{`GMC*TX|%Jv1cD7%Cb5GdyKrV~A!5VPs%f&A`s^Xz~qdS!HCG%w%9>WMpJw
zU}m_%z`!_>ff<}a_D{|gmYi%T<6W<{g+X{5gMt-{B+E_)6-I`c44xpC79+y}hGr{P
zN!D!)2evV6*4f6ea~6Xlh<gyu6#{XOK)Ev+cy&Si<J%ar!<YZxth)hR41h{4I|hCR
z21Wx0envwENk$U}MMhHwO-6GD4@Qf6hHyqphD1hdh7?9yhGs@PhAE8p42u~Z7&b6E
zGVEe>X4uQ<3QlNt3~US@43gl0V`XS&Fb5|lP{Q9255oQ6;9_J@WSGau3@)TJ8KyBj
zVc=(AW(1Wppt2b(!pI8Et8r=!ocx^s7$n#kOxeMOg5EC%CP>Qq!{Efu(EN*m6PCgt
zg&MeuU<4KY`x%Tug&P9{!x08%a2|Bi+QPuKjp4*h1~#FS8-z|z_LfzxKf8<J90P+-
z3lrn=|97;vF_?fthM55rGHRe)&*;a%#put#%NWQYz!=0J#2Cz=#~8w3%^1pH#~8-o
z$QTX|08lZc#~=VNG~J-y7GN-AWCs^-LJTI191M~SOyK-3z`)G=kAa6hi@}tUok8^%
zgBk-TBPSyl)XCc5+KGXIaU*K&!k7TI4HQ%i42+E2j64hs49twYAXSWfjQk7?3>*xM
aj6w{Ii~@`j3=9lh42+DDjM9v<43Yp(gQ0c+

delta 1936
zcmZ2zchiRJ)W2Q(7#J8_7{xYnv2wDpGvsqH9GV=!X{d38kwKIzC^bE^xFoeGHANve
zH8&}>sMv~&i$RZJpAZ8B!*L#l6AULOujGtiJiVET>kNxDCnEzJBcq-IBNsm#BR3Z#
z4<j!-BOedL2}b_OFZnJr3QgY2uf-z5$RIcQ0KeR1P5~j|Qw$soObmPs{0xi?XBZe5
zm>AAZ))P=PhOo~uFfpuRSPd2zMN)H~fr&w$L6U)iL4bjgft7)cfsx_D<R$?(#*33r
z3aHm#Vqjq4VPIrnU@&F4%y5N)fq{|XDuV+^6$1l<J_93Ij#X<5gV-9d;TIVgz=kj|
z=rABOv%)oB!>U;dU9%-bvlzs9xb6f78<5qLTLoPhFHSxsD6I~%LxF*rL7G9B;W|SW
z12Y2ygE3S+h;@VECIchGt;sw>l8hH7s|h(WUYwjEBp(FQr^Ud+z`$StS8c!mQ4JEi
z&2W=}iGhhhkKqo(T?S@`TMP^goD3{~82A`Dxj7l`F)%Q&FfcMWGB7dJGQ@%%byFy!
z9^`!~1~vu;hBO8lhI9r4h71M=hD-)0hHM5`h8(c3K-S7IsDYgea)3MB0q$@IxHCW;
z0J4^cf%y*u2RnnR<u3*%21bT;3^oi*3>O#}7}hc{gT3IaeT;!mdmDqv<PE|Oj29<=
z6jt^Hc@PvZCJbB*_Ze1$1I8I{lQY8uNWd^KFz_+3@^k)SU}tAgl>ym+@Eaq;Lxwbv
zU6T_<QW!5zJ|?2=4>A|z0|tg*xM{&~cLzh=4U&Dta1$DEEDTJ1V&E`iV_;%%WJqLS
zWO&T*1Z47N2T?Xg#*35P#iDaTMyD}wF|1<{WO&N(jDeGZf#ECMlCN+}zQQf}3ibvl
z&c8A|XSfLtjIRtY7;ZAKg7v;+xCxGouMDpkBpKKl9x#Y9yk>aDz`<~9GQYUAILNCU
z49pCU40Q}`42%qKAgOb*qqvwlC@MkOfq`KkINBiD0Fjd4GQ0zMU~--KY{rX|r6jDu
znZ<*FogtAy2JC)z1_p*Mxcj@{?(c%TzYFgEE{69EAHeSKV)zJlKPc)27}&-5IE5h5
zZwQMVn2TpJFfx2%_zZFd0|Vol$yX$vGhUp$M=}`fk{|{ShA9k!;K=7-U|_ffcgZcd
zOK!nkatrQ~Tkw#)#qb5}5|G}n43Z3N;9MZWz%9zj&&kip2X&Vky1N!}F)%WGg9gtG
zsRN7`Cr3($gB=yaz{ya>AOLn0D0<h!9km|rsP%A1t%o~mJv?~ULxabRp_1V{!(9e8
zhG>Qmh93;88Q8(jlVIQ!<Kz6pAj&B8mw}s|A()*(RrMDG6Q2q=0V0RpPljI%%%F_K
z$il!3PA6%TgJn|cbvJ->Hz)z9ff6C30RumyA%i5NF@qwb34<o1DT4>28ACXuIYT0&
zB|{3M6*z&IFt9RsFi3*^21<TuaKEL2{lUnf$l%KG8(gqxGT1WQVc=(AX7~dwVId-a
z8JHOYKrt@@%9Q^YB-j~D*}+*;4;IRhVh2*J|6^ce*w0`LDt;Ik7>+P7gVVj6))oe?
zZ43uyGO!69+#qy#vap<L{n1?v#~2uVT9_D@|Gxt&D?pxPW<Yq-nSqPZg@KpRjX{9X
zok57vgF%nclfjzNi@}c3o57LM2kc2u*4JYYfEQkFP)`alm@)hZ7b!vvCX5UWk_=4X
z=n!CF=KaUO!=A-p%E->3`inu0fs>Ju5mb(WN-%A3jl#gdxDmDXU<?J@2FY`bjLeLn
of|8jL6s$~)Y>c3s#lgVH$i=|O$iXPUz`y`v2{H;ZiZVz702rlkd;kCd

diff --git a/src/opinion/SocialNetwork.java b/src/opinion/SocialNetwork.java
index 6c15041..eb49d9e 100644
--- a/src/opinion/SocialNetwork.java
+++ b/src/opinion/SocialNetwork.java
@@ -304,13 +304,24 @@ public class SocialNetwork implements ISocialNetwork {
         if (title == null || title.trim().length() <= 1) {
             throw new BadEntryException("Error: Title is null or too short");
         }
+
         String formattedTitle = title.trim().toLowerCase();
         LinkedList<String> result = new LinkedList<>();
+
         for (Book b : listBook) {
             if (b.getTitle().toLowerCase().contains(formattedTitle)) {
                 result.add(b.toString());
             }
         }
+
+        for (Film f : listFilm) {
+            if (f.getTitle().toLowerCase().contains(formattedTitle)
+                    || f.getDirector().toLowerCase().contains(formattedTitle)
+                    || f.getScenarist().toLowerCase().contains(formattedTitle)) {
+                result.add(f.toString());
+            }
+        }
+
         return result;
     }
 
diff --git a/src/tests/ConsultItemFilmTest.java b/src/tests/ConsultItemFilmTest.java
new file mode 100644
index 0000000..59bb273
--- /dev/null
+++ b/src/tests/ConsultItemFilmTest.java
@@ -0,0 +1,75 @@
+package tests;
+
+import exceptions.*;
+import opinion.ISocialNetwork;
+import opinion.SocialNetwork;
+
+import java.util.LinkedList;
+
+public class ConsultItemFilmTest {
+
+    private static int checkConsultItemFilmException(ISocialNetwork sn, String title, Class<?> expectedException, String testId) {
+        try {
+            sn.consultItems(title);
+            System.out.println("Err " + testId + " : Expected exception " + expectedException.getSimpleName() + " was not thrown");
+            return 1;
+        } catch (Exception e) {
+            if (e.getClass().equals(expectedException)) {
+                System.out.println("Test " + testId + " passed (caught expected " + expectedException.getSimpleName() + ")");
+                return 0;
+            } else {
+                System.out.println("Err " + testId + " : Unexpected exception " + e);
+                e.printStackTrace();
+                return 1;
+            }
+        }
+    }
+
+    private static int checkConsultItemFilmResult(ISocialNetwork sn, String title, int expectedSize, String testId) {
+        try {
+            LinkedList<String> results = sn.consultItems(title);
+            if (results.size() == expectedSize) {
+                System.out.println("Test " + testId + " passed.");
+                return 0;
+            } else {
+                System.out.println("Err " + testId + " : Expected " + expectedSize + " result(s) but got " + results.size());
+                return 1;
+            }
+        } catch (Exception e) {
+            System.out.println("Err " + testId + " : Unexpected exception " + e);
+            e.printStackTrace();
+            return 1;
+        }
+    }
+
+    public static void main(String[] args) {
+        ISocialNetwork sn = new SocialNetwork();
+        int nbTests = 0;
+        int nbErrors = 0;
+
+        try {
+            sn.addMember("cinefan", "securepass", "film fan");
+            sn.addItemFilm("cinefan", "securepass", "Interstellar", "Sci-Fi", "Christopher Nolan", "Jonathan Nolan", 169);
+            sn.addItemFilm("cinefan", "securepass", "Inception", "Thriller", "Christopher Nolan", "Christopher Nolan", 148);
+        } catch (Exception e) {
+            System.out.println("Setup failed: " + e);
+            return;
+        }
+
+        // Nominal tests
+        nbTests++;
+        nbErrors += checkConsultItemFilmResult(sn, "Inception", 1, "3.1");
+
+        nbTests++;
+        nbErrors += checkConsultItemFilmResult(sn, "nolan", 2, "3.2");
+
+        nbTests++;
+        nbErrors += checkConsultItemFilmResult(sn, "Unknown Film", 0, "3.3");
+
+        // Non-nominal test (expects exception)
+        nbTests++;
+        nbErrors += checkConsultItemFilmException(sn, "", BadEntryException.class, "3.4");
+
+        System.out.println("\nConsultItemFilmTest summary: " + nbErrors + " error(s) out of " + nbTests + " test(s).");
+    }
+}
-- 
GitLab