Skip to content

Instantly share code, notes, and snippets.

@FranckSilvestre
Created November 27, 2025 17:05
Show Gist options
  • Select an option

  • Save FranckSilvestre/9cad8604af84d08e7c2025e2773c43ae to your computer and use it in GitHub Desktop.

Select an option

Save FranckSilvestre/9cad8604af84d08e7c2025e2773c43ae to your computer and use it in GitHub Desktop.
Tests des méthodes de tri instrumentées
package tp11.activite.bcd
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
class ListeEntiersTrisInstrumentesTest {
// === Tests du tri par insertion
@Test
fun `test tri par insertion sur liste vide`() {
// given une liste vide
val listeVide = ListeEntiers()
assertTrue(listeVide.isEmpty())
// When on commande le tri par insertion
val nbOp = listeVide.triParInsertionInstrumentee()
// Then: la lsite est toujours vide
assertTrue(listeVide.isEmpty())
assertEquals(2, nbOp)
}
@Test
fun `test tri par insertion sur liste non triée`() {
// given une liste
val tab = intArrayOf(-10, 15, -150, 12, 1000, -20)
val liste = ListeEntiers(tab)
// When on commande le tri par insertion
val nbOp = liste.triParInsertionInstrumentee()
// Then: la liste est triée
assertTrue(liste.egale(ListeEntiers(intArrayOf(-150, -20, -10, 12, 15, 1000))))
assertEquals(95, nbOp)
}
@Test
fun `test tri par insertion sur liste non triée avec doublon`() {
// given une liste
val tab = intArrayOf(-10, 15, -20, 12, 1000, -20)
val liste = ListeEntiers(tab)
// When on commande le tri par insertion
val nbOp = liste.triParInsertionInstrumentee()
// Then: la liste est triée
assertTrue(liste.egale(ListeEntiers(intArrayOf(-20, -20, -10, 12, 15, 1000))))
assertEquals(95, nbOp)
}
@Test
fun `test tri par insertion sur liste triée`() {
// given une liste
val tab = intArrayOf(-10, 15, 42, 120, 1000, 20000)
val liste = ListeEntiers(tab)
// When on commande le tri par insertion
val nbOp = liste.triParInsertionInstrumentee()
// Then: la liste est triée
assertTrue(liste.egale(ListeEntiers(intArrayOf(-10, 15, 42, 120, 1000, 20000))))
assertEquals(60, nbOp)
}
// === test de la fusion de deux listes triées
@Test
fun `test fusion de deux listes avec liste droite vide`() {
// Given
val listeG = ListeEntiers(intArrayOf(-12, -5, 18, 999, 12504))
val listeD = ListeEntiers()
// when
val res = listeG.fusionneInstrumentee(listeD)
// Then
assertTrue(
res.first.egale(
ListeEntiers(
intArrayOf(
-12, -5, 18, 999, 12504
)
)
)
)
assertEquals(43, res.second)
}
@Test
fun `test fusion de deux listes avec liste gauche vide`() {
// Given
val listeG = ListeEntiers()
val listeD = ListeEntiers(intArrayOf(-12, -5, 18, 999, 12504))
// when
val res = listeG.fusionneInstrumentee(listeD)
// Then
assertTrue(
res.first.egale(
ListeEntiers(
intArrayOf(
-12, -5, 18, 999, 12504
)
)
)
)
assertEquals(43, res.second)
}
@Test
fun `test fusion de deux listes non vide liste G plus grande`() {
// Given
val listeG = ListeEntiers(intArrayOf(12, 20, 55, 1000, 12500))
val listeD = ListeEntiers(intArrayOf(-12, -5, 18, 999))
// when
val res = listeG.fusionneInstrumentee(listeD)
// Then
assertTrue(
res.first.egale(
ListeEntiers(
intArrayOf(
-12, -5, 12, 18, 20, 55, 999, 1000, 12500
)
)
)
)
assertEquals(84, res.second)
}
@Test
fun `test fusion de deux listes non vide liste D plus grande`() {
// Given
val listeD = ListeEntiers(intArrayOf(12, 20, 55, 1000, 12500))
val listeG = ListeEntiers(intArrayOf(-12, -5, 18, 999))
// when
val res = listeG.fusionneInstrumentee(listeD)
// Then
assertTrue(
res.first.egale(
ListeEntiers(
intArrayOf(
-12, -5, 12, 18, 20, 55, 999, 1000, 12500
)
)
)
)
assertEquals(84, res.second)
}
// === test du tri fusion
@Test
fun `test tri fusion sur liste vide`() {
// given une liste vide
val listeVide = ListeEntiers()
assertTrue(listeVide.isEmpty())
// When on commande le tri fusion
val res = listeVide.listeTrieeInstrumentee()
// Then: la lsite est toujours vide
assertTrue(res.first.isEmpty())
assertEquals(8, res.second)
}
@Test
fun `test tri fusion sur liste non triée`() {
// given une liste
val tab = intArrayOf(-10, 15, -150, 12, 1000, -20)
val liste = ListeEntiers(tab)
// When on commande le tri fusion
val res = liste.listeTrieeInstrumentee()
// Then: la liste est triée
assertTrue(res.first.egale(ListeEntiers(intArrayOf(-150, -20, -10, 12, 15, 1000))))
assertEquals(470, res.second)
}
@Test
fun `test tri fusion sur liste non triée avec doublon`() {
// given une liste
val tab = intArrayOf(-10, 15, -20, 12, 1000, -20)
val liste = ListeEntiers(tab)
// When on commande le tri fusion
val res = liste.listeTrieeInstrumentee()
// Then: la liste est triée
assertTrue(res.first.egale(ListeEntiers(intArrayOf(-20, -20, -10, 12, 15, 1000))))
assertEquals(470, res.second)
}
@Test
fun `test tri fusion sur liste triée`() {
// given une liste
val tab = intArrayOf(-10, 15, 42, 120, 1000, 20000)
val liste = ListeEntiers(tab)
// When on commande le tri fusion
val res = liste.listeTrieeInstrumentee()
// Then: la liste est triée
assertTrue(res.first.egale(ListeEntiers(intArrayOf(-10, 15, 42, 120, 1000, 20000))))
assertEquals(458, res.second)
}
//=== Comparaison tri insertion / tri fusion
@Test
fun `test tri fusion sur liste aléatoires`() {
// given une liste
val tab = IntArray(1_000) { (-10000..10000).random()}
val liste = ListeEntiers(tab)
// When on commande le tri fusion
val res = liste.listeTrieeInstrumentee()
// Then: la liste est triée
println("Nombre operations tri fusion : ${res.second}")
assertTrue(res.second < 160_000)
}
@Test
fun `test tri insertion sur liste aléatoires`() {
// given une liste
val tab = IntArray(1000) { (-10000..10000).random()}
val liste = ListeEntiers(tab)
// When on commande le tri fusion
val res = liste.triParInsertionInstrumentee()
// Then: la liste est triée
println("Nombre operations tri insertion : ${res}")
assertTrue(res > 1_200_000)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment