import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

// Composición frente a herencia con la misma lista de reproducción de 10 minutos.
public class PlaylistDemo {
    public static void main(String[] args) {
        Song a = new Song("Contigo Perú", "Trío Malecón", 215);
        Song b = new Song("Valicha", "Grupo Garúa", 180);
        Song c = new Song("El cóndor pasa", "Los Rieleros", 260);

        // Comparable: compareTo dice cuál va primero.
        IO.println("a.compareTo(b) = " + a.compareTo(b));
        List<Song> sorted = new ArrayList<>(List.of(a, b, c));
        Collections.sort(sorted);
        IO.println("ordenadas: " + sorted);

        Playlist mine = new Playlist(600);
        IO.println("composición: " + mine.add(a) + " " + mine.add(b) + " " + mine.add(c)
                + " -> " + mine.totalSeconds() + " s");

        InheritedPlaylist bad = new InheritedPlaylist(600);
        IO.println("herencia:    " + bad.add(a) + " " + bad.add(b) + " " + bad.add(c)
                + " -> " + bad.totalSeconds() + " s");
        bad.add(0, c);                       // heredado: no pasa por el add que valida
        bad.addAll(List.of(c, c));           // heredado
        IO.println("después de add(0, c) y addAll: " + bad.totalSeconds() + " s de 600");
    }
}
