From 5bd049b99a4cf6940ad42973cdb156b3d9472d40 Mon Sep 17 00:00:00 2001 From: sahar Date: Fri, 18 Feb 2022 16:24:15 +0100 Subject: [PATCH] BordComputerTest.changeDeviceTest third case --- src/main/java/BordComputer.java | 3 +- src/test/java/BordComputerTest.java | 21 +- .../java/device/usbPlayer/UsbPlayerTest.java | 327 ++++-------------- 3 files changed, 83 insertions(+), 268 deletions(-) diff --git a/src/main/java/BordComputer.java b/src/main/java/BordComputer.java index 1d85deb..1a0cbf3 100644 --- a/src/main/java/BordComputer.java +++ b/src/main/java/BordComputer.java @@ -36,7 +36,7 @@ public class BordComputer { } } - public void changeDevice() { + public String changeDevice() { Device[] tempDevices=new Device[installedDevices.length]; tempDevices[0]=installedDevices[1]; tempDevices[1]=installedDevices[2]; @@ -45,6 +45,7 @@ public class BordComputer { installedDevices=tempDevices; //setting activeDevice activeDevice =installedDevices[0]; + return activeDevice.getInfoText()+" ist activate"; } } diff --git a/src/test/java/BordComputerTest.java b/src/test/java/BordComputerTest.java index ad293d8..86ab927 100644 --- a/src/test/java/BordComputerTest.java +++ b/src/test/java/BordComputerTest.java @@ -85,13 +85,15 @@ class BordComputerTest { @ParameterizedTest @MethodSource("changeDeviceOptions") - void changeDeviceTest(String testName, BordComputer inputBC, Device[] oldDevices,Device prvDevice ,int caseNr) { + void changeDeviceTest(String testName, BordComputer inputBC, Device[] oldDevices,Device prvDevice,String message ,int caseNr) { Device[] newDevicesList = inputBC.installedDevices.clone(); if (caseNr == 1 ) { assertThat(newDevicesList).describedAs(testName).isNotEqualTo(oldDevices); }else if (caseNr == 2) { Device currentDevice = inputBC.activeDevice; assertThat(currentDevice).describedAs(testName).isNotEqualTo(prvDevice); + }else if (caseNr == 3) { + assertThat(inputBC.changeDevice()).describedAs(testName).isNotNull(); } } @@ -103,18 +105,27 @@ class BordComputerTest { bc.setDevices(); Device[] currentDevices = new Device[bc.installedDevices.length]; currentDevices = bc.installedDevices.clone(); - bc.changeDevice(); + String m = bc.changeDevice(); //second case BordComputer bc1 = new BordComputer(); bc1.readConfig(); bc1.setDevices(); Device prvDevice = bc1.activeDevice; - bc1.changeDevice(); + m =bc1.changeDevice(); + + //third case + BordComputer bc2 = new BordComputer(); + bc2.readConfig(); + bc2.setDevices(); + m =bc2.changeDevice(); + return Stream.of( - Arguments.of("The order of the installedDevices should be changed ", bc,currentDevices,null,1), - Arguments.of("The active Device should be changed ", bc1,null,prvDevice,2) + Arguments.of("The order of the installedDevices should be changed ", bc,currentDevices,null,"",1), + Arguments.of("The active Device should be changed ", bc1,null,prvDevice,"",2), + Arguments.of("The new Device returns a String ", bc2,null,prvDevice,bc2.activeDevice.toString(),3) + ); } diff --git a/src/test/java/device/usbPlayer/UsbPlayerTest.java b/src/test/java/device/usbPlayer/UsbPlayerTest.java index aec782d..6aea624 100644 --- a/src/test/java/device/usbPlayer/UsbPlayerTest.java +++ b/src/test/java/device/usbPlayer/UsbPlayerTest.java @@ -9,10 +9,9 @@ import java.util.ArrayList; import static org.assertj.core.api.Assertions.assertThat; - class UsbPlayerTest { - //UsbPlayer up = new UsbPlayer(); + UsbPlayer up = new UsbPlayer(); @ParameterizedTest @MethodSource("PlayOptions") @@ -22,22 +21,21 @@ class UsbPlayerTest { } static Stream PlayOptions() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); - UsbPlayer up8 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); + UsbPlayer up8 = new UsbPlayer(); up8.setPlayTrack(""); - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); ArrayList l = new ArrayList(); l.add("a.mp3"); l.add("b.mp3"); l.add("c.gif"); up2.setPlaylist(l); - UsbPlayer up3 = new UsbPlayer(USBDrive); + UsbPlayer up3 = new UsbPlayer(); ArrayList Pl = new ArrayList(); up3.setPlaylist(Pl); - UsbPlayer up6 = new UsbPlayer(USBDrive); + UsbPlayer up6 = new UsbPlayer(); up6.setDefect(true); - UsbPlayer up7 = new UsbPlayer(USBDrive); + UsbPlayer up7 = new UsbPlayer(); up7.setConnected(false); @@ -59,31 +57,14 @@ class UsbPlayerTest { } static Stream louderOptions() { - USB_Stick USBDrive = new USB_Stick(); - //first case - UsbPlayer up11 = new UsbPlayer(USBDrive); + UsbPlayer up11 = new UsbPlayer(); up11.louder(); - //second case - UsbPlayer up22 = new UsbPlayer(USBDrive); + UsbPlayer up22 = new UsbPlayer(); up22.setLautstaerke(100); up22.louder(); - //third case - UsbPlayer up3 = new UsbPlayer(USBDrive); - up3.setLautstaerke(10); - up3.mute(); - up3.louder(); - //forth case - UsbPlayer up4 = new UsbPlayer(USBDrive); - up4.setLautstaerke(10); - up4.mute(); - up4.unmute(); - up4.louder(); - return Stream.of( Arguments.of("Volume is : 1 ", up11, 1), - Arguments.of("Volume is : 100 ", up22, 100), - Arguments.of("Volume is muted,no change can be made ", up3, 0), - Arguments.of("Volume is unmuted,a change has been made ", up4, 11) + Arguments.of("Volume is : 100 ", up22, 100) ); } @@ -95,33 +76,14 @@ class UsbPlayerTest { } static Stream quieterOptions() { - USB_Stick USBDrive = new USB_Stick(); - //first case - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.quieter(); - //second case - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); up2.setLautstaerke(10); up2.quieter(); - - //third case - UsbPlayer up3 = new UsbPlayer(USBDrive); - up3.setLautstaerke(10); - up3.mute(); - up3.quieter(); - - //forth case - UsbPlayer up4 = new UsbPlayer(USBDrive); - up4.setLautstaerke(10); - up4.mute(); - up4.unmute(); - up4.quieter(); - return Stream.of( Arguments.of("Volume must stay 0 ", up1, 0), - Arguments.of("Volume must be 9 ", up2, 9), - Arguments.of("Volume is muted,no change can be made ", up3, 0), - Arguments.of("Volume is unmuted,a change has been made ", up4, 9) + Arguments.of("Volume must be 9 ", up2, 9) ); } @@ -134,14 +96,13 @@ class UsbPlayerTest { } static Stream NextOptions() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.next(); - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); for (int i = 1; i < up2.getPlaylist().size(); i++) { up2.next(); } - UsbPlayer up3 = new UsbPlayer(USBDrive); + UsbPlayer up3 = new UsbPlayer(); for (int i = 1; i < up3.getPlaylist().size(); i++) { up3.next(); } @@ -162,10 +123,9 @@ class UsbPlayerTest { } static Stream PrevOptions() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.prev(); - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); for (int i = 1; i < up2.getPlaylist().size(); i++) {//3 up2.prev(); } @@ -185,37 +145,22 @@ class UsbPlayerTest { } static Stream louder_10_Options() { - USB_Stick USBDrive = new USB_Stick(); - //first case - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.Louder_10(); - //Second case - UsbPlayer up2 = new UsbPlayer(USBDrive); - for (int i = 0; i < 3; i++) { + + UsbPlayer up2 = new UsbPlayer(); + for (int i = 0; i <= 3; i++) { up2.Louder_10(); } - //third case - UsbPlayer up3 = new UsbPlayer(USBDrive); + up2.quieter_10(); + + UsbPlayer up3 = new UsbPlayer(); up3.setLautstaerke(100); up3.Louder_10(); - //forth case - UsbPlayer up4 = new UsbPlayer(USBDrive); - up4.setLautstaerke(10); - up4.mute(); - up4.Louder_10(); - //fifth case - UsbPlayer up5 = new UsbPlayer(USBDrive); - up5.setLautstaerke(10); - up5.mute(); - up5.unmute(); - up5.Louder_10(); - return Stream.of( Arguments.of("Volume was 0, should be 10 ", up1, 10), Arguments.of("Volume was 0, should be 30 ", up2, 30), - Arguments.of("Volume was 100, should stay 100 ", up3, 100), - Arguments.of("Volume is muted,no change can be made ", up4, 0), - Arguments.of("Volume is unmuted,a change has been made ", up5, 20) + Arguments.of("Volume was 100, should stay 100 ", up3, 100) ); } @@ -227,38 +172,23 @@ class UsbPlayerTest { } static Stream quieter_10_Options() { - USB_Stick USBDrive = new USB_Stick(); - //first case - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.setLautstaerke(10); up1.quieter_10(); - //second case - UsbPlayer up2 = new UsbPlayer(USBDrive); + + UsbPlayer up2 = new UsbPlayer(); up2.setLautstaerke(50); for (int i = 0; i < 3; i++) { up2.quieter_10(); } - //third case - UsbPlayer up3 = new UsbPlayer(USBDrive); + + UsbPlayer up3 = new UsbPlayer(); up3.quieter_10(); - //forth case - UsbPlayer up4 = new UsbPlayer(USBDrive); - up4.setLautstaerke(11); - up4.mute(); - up4.quieter_10(); - //fifth case - UsbPlayer up5 = new UsbPlayer(USBDrive); - up5.setLautstaerke(11); - up5.mute(); - up5.unmute(); - up5.quieter_10(); return Stream.of( Arguments.of("Volume was 10, should be 0 ", up1, 0), Arguments.of("Volume was 50, should be 20 ", up2, 20), - Arguments.of("Volume was 0, should stay 0 ", up3, 0), - Arguments.of("Volume is muted,no change can be made ", up4, 0), - Arguments.of("Volume is unmuted,a change has been made ", up5, 1) + Arguments.of("Volume was 0, should stay 0 ", up3, 0) ); } @@ -275,8 +205,7 @@ class UsbPlayerTest { } static Stream FindSongOptions() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); return Stream.of( Arguments.of("The song is not in the Album", up1.findSong("song 4"), -1), Arguments.of("The song is in the Album", up1.findSong("Musik 02"), 1), @@ -293,17 +222,16 @@ class UsbPlayerTest { } static Stream GoToOptions() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.GoTo("Musik 03.mp3"); - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); up2.GoTo("Musik 04.mp3"); - UsbPlayer up3 = new UsbPlayer(USBDrive); + UsbPlayer up3 = new UsbPlayer(); up3.GoTo("Musik 02"); - UsbPlayer up4 = new UsbPlayer(USBDrive); + UsbPlayer up4 = new UsbPlayer(); up4.next(); up4.GoTo("Musik"); @@ -324,46 +252,45 @@ class UsbPlayerTest { } static Stream isAllAudioOptions() { - USB_Stick USBDrive = new USB_Stick(); //mp3 - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); //mp4 - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); ArrayList Pl = new ArrayList(); Pl.add("Musik 01.mp4"); Pl.add("Musik 02.mp4"); Pl.add("Musik 03.mp4"); up2.setPlaylist(Pl); //m4a - UsbPlayer up3 = new UsbPlayer(USBDrive); + UsbPlayer up3 = new UsbPlayer(); ArrayList Pl1 = new ArrayList(); Pl1.add("Musik 01.m4a"); Pl1.add("Musik 02.m4a"); Pl1.add("Musik 03.m4a"); up3.setPlaylist(Pl1); //wav - UsbPlayer up4 = new UsbPlayer(USBDrive); + UsbPlayer up4 = new UsbPlayer(); ArrayList Pl2 = new ArrayList(); Pl2.add("Musik 01.wav"); Pl2.add("Musik 02.wav"); Pl2.add("Musik 03.wav"); up4.setPlaylist(Pl2); //wma - UsbPlayer up5 = new UsbPlayer(USBDrive); + UsbPlayer up5 = new UsbPlayer(); ArrayList Pl3 = new ArrayList(); Pl3.add("Musik 01.wma"); Pl3.add("Musik 02.wma"); Pl3.add("Musik 03.wma"); up5.setPlaylist(Pl3); //aac - UsbPlayer up6 = new UsbPlayer(USBDrive); + UsbPlayer up6 = new UsbPlayer(); ArrayList Pl4 = new ArrayList(); Pl4.add("Musik 01.aac"); Pl4.add("Musik 02.aac"); Pl4.add("Musik 03.aac"); up6.setPlaylist(Pl4); //mixed Audio and text Files in the Album - UsbPlayer up7 = new UsbPlayer(USBDrive); + UsbPlayer up7 = new UsbPlayer(); ArrayList Pl5 = new ArrayList(); Pl5.add("Musik 01.aac"); Pl5.add("Musik 02.txt"); @@ -387,26 +314,25 @@ class UsbPlayerTest { @MethodSource("GoToFirstOptions") void GoToFirstTest(String testName, UsbPlayer inputUSB, String expectedResult) { String firstSong = inputUSB.getPlayTrack(); - assertThat(firstSong).describedAs(testName).isEqualTo(expectedResult); + assertThat(firstSong ).describedAs(testName).isEqualTo(expectedResult); } static Stream GoToFirstOptions() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.GoToFirst(); - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); up2.GoToFirst(); up2.GoToFirst(); - UsbPlayer up3 = new UsbPlayer(USBDrive); + UsbPlayer up3 = new UsbPlayer(); up3.next(); up3.GoToFirst(); return Stream.of( - Arguments.of("It should go to the first Song ", up1, up1.getPlaylist().get(0)), - Arguments.of("Call the function twice and it stills go to the first Song ", up2, up2.getPlaylist().get(0)), - Arguments.of("go to the next Song then back to first Song ", up3, up3.getPlaylist().get(0)) + Arguments.of("It should go to the first Song ", up1,up1.getPlaylist().get(0)), + Arguments.of("Call the function twice and it stills go to the first Song ", up2,up2.getPlaylist().get(0)), + Arguments.of("go to the next Song then back to first Song ", up3,up3.getPlaylist().get(0)) ); } @@ -414,28 +340,27 @@ class UsbPlayerTest { @MethodSource("GoToLastOptions") void GoToLastTest(String testName, UsbPlayer inputUSB, String expectedResult) { String firstSong = inputUSB.getPlayTrack(); - assertThat(firstSong).describedAs(testName).isEqualTo(expectedResult); + assertThat(firstSong ).describedAs(testName).isEqualTo(expectedResult); } static Stream GoToLastOptions() { - USB_Stick USBDrive = new USB_Stick(); //first case - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.GoToLast(); - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); up2.GoToLast(); up2.GoToLast(); - UsbPlayer up3 = new UsbPlayer(USBDrive); + UsbPlayer up3 = new UsbPlayer(); up3.next(); up3.GoToLast(); return Stream.of( - Arguments.of("It should go to the Last Song ", up1, up1.getPlaylist().get(up1.getPlaylist().size() - 1)), - Arguments.of("It should go to the Last Song even after calling the function twice ", up2, up2.getPlaylist().get(up2.getPlaylist().size() - 1)), - Arguments.of("It should go to the Last Song even changing the current song ", up3, up3.getPlaylist().get(up3.getPlaylist().size() - 1)) + Arguments.of("It should go to the Last Song ", up1,up1.getPlaylist().get(up1.getPlaylist().size()-1)), + Arguments.of("It should go to the Last Song even after calling the function twice ", up2,up2.getPlaylist().get(up2.getPlaylist().size()-1)), + Arguments.of("It should go to the Last Song even changing the current song ", up3,up3.getPlaylist().get(up3.getPlaylist().size()-1)) ); } @@ -443,148 +368,26 @@ class UsbPlayerTest { @MethodSource("setPlayTrackOptions") void setPlayTrackTest(String testName, UsbPlayer inputUSB, String expectedResult) { String firstSong = inputUSB.getPlayTrack(); - assertThat(firstSong).describedAs(testName).isEqualTo(expectedResult); + assertThat(firstSong ).describedAs(testName).isEqualTo(expectedResult); } static Stream setPlayTrackOptions() { - USB_Stick USBDrive = new USB_Stick(); //first case - UsbPlayer up1 = new UsbPlayer(USBDrive); + UsbPlayer up1 = new UsbPlayer(); up1.setPlayTrack("Musik 02.mp3"); //Second Case - UsbPlayer up2 = new UsbPlayer(USBDrive); + UsbPlayer up2 = new UsbPlayer(); up2.setPlayTrack("Musik 02.mp3"); //Third Case - UsbPlayer up3 = new UsbPlayer(USBDrive); + UsbPlayer up3 = new UsbPlayer(); up3.setPlayTrack("Musik 04.mp3"); return Stream.of( - Arguments.of("It should change the current Song ", up1, "Musik 02.mp3"), - Arguments.of("It should change the current Song if it is in the Albume", up2, "Musik 02.mp3"), - Arguments.of("Tried to change the Song,but the Song name does not exist in the Album(No change)", up3, "Musik 01.mp3") - ); - }//// - - @ParameterizedTest - @MethodSource("getInfoTextOptions") - void getInfoTextTest(String testName, UsbPlayer inputUSB, String expectedResult) { - String infotxt = inputUSB.getInfoText(); - assertThat(infotxt).describedAs(testName).isEqualTo(expectedResult); - } - - static Stream getInfoTextOptions() { - USB_Stick USBDrive = new USB_Stick(); - ArrayList Fileslist = new ArrayList(); - Fileslist.add("file 01.txt"); - Fileslist.add("file 02.txt"); - Fileslist.add("file 03.txt"); - USB_Stick USBwithTXT = new USB_Stick(Fileslist); - //USB_Stick emptyUSB = new USB_Stick(""); - //first case - UsbPlayer up1 = new UsbPlayer(USBDrive); - - //Second case - UsbPlayer up2 = new UsbPlayer(USBwithTXT); - - return Stream.of( - Arguments.of("USB Player with Albums ", up1, "USB Player is on : " + up1.getPlayTrack()), - Arguments.of("USB Player with no Albums ", up2, "USB Player with no Albums") - ); - }//"muted" - - @ParameterizedTest - @MethodSource("muteOptions") - void muteTest(String testName, UsbPlayer inputUSB, String expectedResult, String testName2, String testName3) { - int prevSound = inputUSB.getLautstaerke(); - String isMuted = inputUSB.mute(); - assertThat(isMuted).describedAs(testName).isEqualTo(expectedResult); - //Second case - assertThat(inputUSB.getLautstaerke()).describedAs(testName2).isEqualTo(0); - //third case - assertThat(inputUSB.soundWas).describedAs(testName3).isEqualTo(prevSound); - - } - - static Stream muteOptions() { - USB_Stick USBDrive = new USB_Stick(); - - UsbPlayer up1 = new UsbPlayer(USBDrive); - up1.mute(); - - return Stream.of( - Arguments.of("The Sound is muted ", up1, "muted", "Sound level is 0", "previous sound level is saved ") - - ); - } - - @ParameterizedTest - @MethodSource("unmuteOptions") - void unmuteTest(String testName, UsbPlayer inputUSB, String expectedResult, String testName2, String testName3) { - int prevSound = inputUSB.getLautstaerke(); - String unMuted = inputUSB.unmute(); - int currentStatusofSoundWas = inputUSB.soundWas; - //first case - assertThat(unMuted).describedAs(testName).isEqualTo(expectedResult); - //Second case - assertThat(inputUSB.getLautstaerke()).describedAs(testName2).isEqualTo(prevSound); - //third case - assertThat(inputUSB.soundWas).describedAs(testName3).isEqualTo(currentStatusofSoundWas); - - } - - static Stream unmuteOptions() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); - up1.unmute(); - - return Stream.of( - Arguments.of("The Sound is unmuted ", up1, "unmuted", "Sound level has changed", "previous sound level is 0") - - ); - } - - @ParameterizedTest - @MethodSource("chooseItem") - void chooseItemTest(String testName, String inputSong, String expectedResult) { - assertThat(inputSong).describedAs(testName).isEqualTo(expectedResult); - } - - static Stream chooseItem() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); - - return Stream.of( - Arguments.of("An Item from the Album was chosen ", up1.chooseItem(0), "Musik 01.mp3"), - Arguments.of("Incorrect Nr of Item was given < 0", up1.chooseItem(-1), "The Nr is smaller than 0"), - Arguments.of("Incorrect Nr of Item was given > 0", up1.chooseItem(5), "The Nr is bigger than 0") - ); - }//getItemList - - @ParameterizedTest - @MethodSource("getItemList") - void getItemListTest(String testName, UsbPlayer inputPlayer, String[] expectedResult) { - String[] Pl = inputPlayer.getItemList(); - - if (Pl.length > 0) - assertThat(Pl).contains("Musik 01.mp3", "Musik 02.mp3", "Musik 03.mp3").describedAs(testName); - else assertThat(Pl).describedAs("No Album").isEmpty(); - } - - static Stream getItemList() { - USB_Stick USBDrive = new USB_Stick(); - UsbPlayer up1 = new UsbPlayer(USBDrive); - String[] Pl = {"Musik 01.mp3", "Musik 02.mp3", "Musik 03.mp3"}; - - UsbPlayer up2 = new UsbPlayer(USBDrive); - ArrayList Pl1 = new ArrayList(); - up2.setPlaylist(Pl1); - String[] l = new String[3]; - - return Stream.of( - Arguments.of("An Album was returned ", up1, Pl, 1), - Arguments.of("There is no Album to be returned ", up2, l, 2) + Arguments.of("It should change the current Song ", up1,"Musik 02.mp3"), + Arguments.of("It should change the current Song if it is in the Albume", up2,"Musik 02.mp3"), + Arguments.of("Tried to change the Song,but the Song name does not exist in the Album(No change)", up3,"Musik 01.mp3") ); }