import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

class SongTest {

    private final Song arena = new Song("Arena", "Duna", 185);
    private final Song brisa = new Song("Brisa", "Duna", 210);

    @Test
    void naturalOrderIsByTitle() {
        assertTrue(arena.compareTo(brisa) < 0);
        assertTrue(brisa.compareTo(arena) > 0);
    }

    @Test
    void sameTitleIsOrderedByArtist() {
        Song other = new Song("Arena", "Costa Verde", 300);
        assertTrue(other.compareTo(arena) < 0);
    }

    @Test
    void compareToIsZeroExactlyWhenEquals() {
        Song copy = new Song("Arena", "Duna", 185);
        Song longer = new Song("Arena", "Duna", 186);
        assertEquals(0, arena.compareTo(copy));
        assertEquals(arena, copy);
        assertTrue(arena.compareTo(longer) != 0);
        assertTrue(!arena.equals(longer));
    }
}
