javadoc

package org.antonio;


import java.util.ArrayList;

import java.util.List;


class Cancion {

   private String titulo;

   private String artista;

   private int duracion;


   public Cancion(String titulo, String artista, int duracion) {

       this.titulo = titulo;

       this.artista = artista;

       this.duracion = duracion;

   }


   // Métodos getter y setter para los atributos

   public String getTitulo() {

       return titulo;

   }


   public void setTitulo(String titulo) {

       this.titulo = titulo;

   }


   public String getArtista() {

       return artista;

   }


   public void setArtista(String artista) {

       this.artista = artista;

   }


   public int getDuracion() {

       return duracion;

   }


   public void setDuracion(int duracion) {

       this.duracion = duracion;

   }

}



package org.antonio;


import static org.junit.Assert.assertEquals;

import static org.junit.Assert.assertNotEquals;


import org.junit.Assert.*;

import org.junit.Before;

import org.junit.Test;


public class CancionTest {

   private Cancion cancion;


   @Before

   public void setUp() {

       cancion = new Cancion("Bohemian Rhapsody", "Queen", 355);

   }


   @Test

   public void testGetTitulo() {

      

       assertEquals("Bohemian Rhapsody", cancion.getTitulo());

       assertNotEquals("We Will Rock You", cancion.getTitulo());

   }


   @Test

   public void testSetTitulo() {

       cancion.setTitulo("We Will Rock You");


       assertEquals("We Will Rock You", cancion.getTitulo());

       assertNotEquals("Bohemian Rhapsody", cancion.getTitulo());

   }


   @Test

   public void testGetArtista() {

  

       assertEquals("Queen", cancion.getArtista());

       assertNotEquals("Mozart", cancion.getArtista());

   }


   @Test

   public void testSetArtista() {

       cancion.setArtista("The Beatles");


       assertEquals("The Beatles", cancion.getArtista());

       assertNotEquals("Queen", cancion.getArtista());

   }


   @Test

   public void testGetDuracion() {

        assertEquals(355, cancion.getDuracion());

       assertNotEquals(400, cancion.getDuracion());

   }


   @Test

   public void testSetDuracion() {

       cancion.setDuracion(400);


       assertEquals(400, cancion.getDuracion());

       assertNotEquals(450, cancion.getDuracion());

   }

}



package org.antonio;


import java.util.ArrayList;

import java.util.List;


/**

* Clase que representa una playlist de canciones.

*

* @version 1.0

* @since 2024-06-02

*/

class Playlist {

   private String nombre;

   private List<Cancion> canciones;


   /**

    * Constructor que inicializa la playlist con un nombre.

    *

    * @param nombre El nombre de la playlist.

    */

   public Playlist(String nombre) {

       this.nombre = nombre;

       this.canciones = new ArrayList<>();

   }


   /**

    * Obtiene el nombre de la playlist.

    *

    * @return El nombre de la playlist.

    */

   public String getNombre() {

       return nombre;

   }


   /**

    * Establece el nombre de la playlist.

    *

    * @param nombre El nombre de la playlist.

    */

   public void setNombre(String nombre) {

       this.nombre = nombre;

   }


   /**

    * Obtiene la lista de canciones de la playlist.

    *

    * @return La lista de canciones.

    */

   public List<Cancion> getCanciones() {

       return canciones;

   }


   /**

    * Agrega una canción a la playlist.

    *

    * @param cancion La canción a agregar.

    */

   public void agregarCancion(Cancion cancion) {

       canciones.add(cancion);

   }


   /**

    * Elimina una canción de la playlist.

    *

    * @param cancion La canción a eliminar.

    */

   public void eliminarCancion(Cancion cancion) {

       canciones.remove(cancion);

   }


   /**

    * Calcula la duración total de la playlist sumando la duración de todas las canciones.

    *

    * @return La duración total de la playlist en segundos.

    */

   public int getDuracionTotal() {

       int duracionTotal = 0;

       for (Cancion cancion : canciones) {

           duracionTotal += cancion.getDuracion();

       }

       return duracionTotal;

   }


   /**

    * Muestra las canciones en la playlist sacandolas por pantalla.

    *

    * @return Una cadena con la lista de canciones en la playlist.

    */

   public String mostrarCanciones() {

       System.out.println("Canciones en la playlist '" + nombre + "':");

       String salida_canciones = "Canciones en la playlist '" + nombre + "':";

       for (Cancion cancion : canciones) {

           System.out.println("- " + cancion.getTitulo() + " (" + cancion.getArtista() + ")");

           salida_canciones += "- " + cancion.getTitulo() + " (" + cancion.getArtista() + ")";

       }

       return salida_canciones;

   }

}


package org.antonio;


import org.junit.Assert.*;

import org.junit.Before;

import org.junit.Test;


import static org.junit.Assert.assertEquals;

import static org.junit.Assert.assertFalse;

import static org.junit.Assert.assertNotEquals;

import static org.junit.Assert.assertTrue;


import java.util.List;


public class PlaylistTest {

   private Cancion cancion1;

   private Cancion cancion2;

   private Cancion cancion3;

   private Playlist playlist;


   @Before

   public void setUp() {

       cancion1 = new Cancion("Bohemian Rhapsody", "Queen", 355);

       cancion2 = new Cancion("Imagine", "John Lennon", 180);

       cancion3 = new Cancion("Hotel California", "Eagles", 390);

       playlist = new Playlist("Mis Favoritas");

   }


   @Test

   public void testGetNombre() {

       assertEquals("Mis Favoritas", playlist.getNombre());

       assertNotEquals("Pop", playlist.getNombre());

   }


   @Test

   public void testSetNombre() {

       playlist.setNombre("Rock Clásico");

      

       assertEquals("Rock Clásico", playlist.getNombre());

       assertNotEquals("Pop", playlist.getNombre());

   }


   @Test

   public void testAgregarCancion() {

       playlist.agregarCancion(cancion1);

       List<Cancion> canciones = playlist.getCanciones();

      

       assertEquals(1, canciones.size());

       assertNotEquals(2, canciones.size());


       assertTrue(canciones.contains(cancion1));

       assertFalse(canciones.contains(cancion2));

   }


   @Test

   public void testEliminarCancion() {

       playlist.agregarCancion(cancion1);

       playlist.agregarCancion(cancion2);

       playlist.eliminarCancion(cancion1);

       List<Cancion> canciones = playlist.getCanciones();


       assertEquals(1, canciones.size());

       assertNotEquals(2, canciones.size());


       assertFalse(canciones.contains(cancion1));

       assertTrue(canciones.contains(cancion2));

   }


   @Test

   public void testGetDuracionTotal() {

       playlist.agregarCancion(cancion1);

       playlist.agregarCancion(cancion2);

       playlist.agregarCancion(cancion3);

       int duracionTotal = playlist.getDuracionTotal();

      

       assertEquals(925, duracionTotal);

       assertNotEquals(867, duracionTotal);

   }


   @Test

   public void testMostrarCanciones() {

       playlist.agregarCancion(cancion1);

       playlist.agregarCancion(cancion2);

       playlist.agregarCancion(cancion3);

       String salida = playlist.mostrarCanciones();

      

       assertTrue(salida.contains("Bohemian Rhapsody (Queen)"));

       assertTrue(salida.contains("Imagine (John Lennon)"));

       assertTrue(salida.contains("Hotel California (Eagles)"));

   }

}


package org.antonio;


import java.util.ArrayList;

import java.util.List;


/**

* Clase que representa un usuario con una lista de playlists.

*

* @version 1.0

* @since 2024-06-02

*/

class Usuario {

   private String nombre;

   private List<Playlist> playlists;


   /**

    * Constructor que inicializa el usuario con un nombre.

    *

    * @param nombre El nombre del usuario.

    */

   public Usuario(String nombre) {

       this.nombre = nombre;

       this.playlists = new ArrayList<>();

   }


   /**

    * Obtiene el nombre del usuario.

    *

    * @return El nombre del usuario.

    */

   public String getNombre() {

       return nombre;

   }


   /**

    * Establece el nombre del usuario.

    *

    * @param nombre El nombre del usuario.

    */

   public void setNombre(String nombre) {

       this.nombre = nombre;

   }


   /**

    * Obtiene la lista de playlists del usuario.

    *

    * @return La lista de playlists.

    */

   public List<Playlist> getPlaylists() {

       return playlists;

   }


   /**

    * Agrega una playlist a la lista de playlists del usuario.

    *

    * @param playlist La playlist a agregar.

    */

   public void agregarPlaylist(Playlist playlist) {

       playlists.add(playlist);

   }


   /**

    * Elimina una playlist de la lista de playlists del usuario.

    *

    * @param playlist La playlist a eliminar.

    */

   public void eliminarPlaylist(Playlist playlist) {

       playlists.remove(playlist);

   }


   /**

    * Muestra las playlists del usuario sacandola por pantalla.

    *

    * @return Una cadena con la lista de playlists del usuario.

    */

   public String mostrarPlaylists() {

       System.out.println("Playlists de '" + nombre + "':");

       String salida_playlists = "Playlists de '" + nombre + "':";

       for (Playlist playlist : playlists) {

           System.out.println("- " + playlist.getNombre());

           salida_playlists += "- " + playlist.getNombre();

       }

       return salida_playlists;

   }


   /**

    * Busca una canción en las playlists del usuario y muestra los resultados de la búsqueda.

    *

    * @param tituloCancion El título de la canción a buscar.

    * @return Una cadena con los resultados de la búsqueda.

    */

   public String buscarCancionEnPlaylists(String tituloCancion) {

       System.out.println("Resultados de la búsqueda de '" + tituloCancion + "' en las playlists de '" + nombre + "':");

       String salida_cancion_playlist = "Resultados de la búsqueda de '" + tituloCancion + "' en las playlists de '" + nombre + "':";

       for (Playlist playlist : playlists) {

           System.out.println("- Playlist: " + playlist.getNombre());

           System.out.println(playlist.getCanciones().size());

           for (Cancion cancion : playlist.getCanciones()) {

               if (cancion.getTitulo().equalsIgnoreCase(tituloCancion)) {

                   System.out.println("- " + cancion.getTitulo() + " (" + cancion.getArtista() + ") - Playlist: " + playlist.getNombre());

                   salida_cancion_playlist += "- " + cancion.getTitulo() + " (" + cancion.getArtista() + ") - Playlist: " + playlist.getNombre();

               }

           }

       }

       return salida_cancion_playlist;

   }

}


package org.antonio;


import org.junit.Assert.*;

import org.junit.Before;

import org.junit.Test;


import static org.junit.Assert.assertEquals;

import static org.junit.Assert.assertFalse;

import static org.junit.Assert.assertNotEquals;

import static org.junit.Assert.assertTrue;


import java.util.ArrayList;

import java.util.List;


public class UsuarioTest {

   private Usuario usuario;

   private Playlist playlist1;

   private Playlist playlist2;


   @Before

   public void setUp() {

       usuario = new Usuario("Juan");

       playlist1 = new Playlist("Mis Favoritas");

       playlist2 = new Playlist("Rock Clásico");

   }


   @Test

   public void testGetNombre() {

       assertEquals("Juan", usuario.getNombre());

       assertNotEquals("Pedro", usuario.getNombre());

   }


   @Test

   public void testSetNombre() {

       usuario.setNombre("Pedro");


       assertEquals("Pedro", usuario.getNombre());

       assertNotEquals("Juan", usuario.getNombre());

   }


   @Test

   public void testAgregarPlaylist() {

       usuario.agregarPlaylist(playlist1);

       List<Playlist> playlists = usuario.getPlaylists();


       assertEquals(1, playlists.size());

       assertEquals("Mis Favoritas", playlists.get(0).getNombre());


       assertNotEquals(2, playlists.size());

       assertNotEquals("Rock Clásico", playlists.get(0).getNombre());

   }


   @Test

   public void testEliminarPlaylist() {

       usuario.agregarPlaylist(playlist1);

       usuario.agregarPlaylist(playlist2);

       usuario.eliminarPlaylist(playlist1);

       List<Playlist> playlists = usuario.getPlaylists();


       assertEquals(1, playlists.size());

       assertNotEquals(2, playlists.size());

      

       assertFalse(playlists.contains(playlist1));

       assertTrue(playlists.contains(playlist2));

   }


   @Test

   public void testMostrarPlaylists() {

       usuario.agregarPlaylist(playlist1);

       usuario.agregarPlaylist(playlist2);

       String salida = usuario.mostrarPlaylists();


       assertTrue(salida.contains("Mis Favoritas"));

       assertTrue(salida.contains("Rock Clásico"));


       assertFalse(salida.contains("Pop"));

       assertFalse(salida.contains("Trap"));

   }


   @Test

   public void testBuscarCancionEnPlaylists() {

       // i. Agregar una canción a cada playlist

       Cancion cancion1 = new Cancion("Bohemian Rhapsody", "Queen", 355);

       Cancion cancion2 = new Cancion("Imagine", "John Lennon", 180);

       playlist1.agregarCancion(cancion1);

       playlist2.agregarCancion(cancion2);

      

       // ii. Agrega las dos playlist al usuario

       usuario.agregarPlaylist(playlist1);

       usuario.agregarPlaylist(playlist2);

      

       // iii. Testea que nombre de la canción, el nombre del grupo y el nombre de la playlist están en la salida

       String resultado1 = usuario.buscarCancionEnPlaylists("Bohemian Rhapsody");

      

       assertTrue(resultado1.contains("Bohemian Rhapsody"));

       assertTrue(resultado1.contains("Queen"));

       assertTrue(resultado1.contains("Mis Favoritas"));


       String resultado2 = usuario.buscarCancionEnPlaylists("Imagine");

      

       assertTrue(resultado2.contains("Imagine"));

       assertTrue(resultado2.contains("John Lennon"));

       assertTrue(resultado2.contains("Rock Clásico"));

   }

}