Nantes Université

Skip to content
Extraits de code Groupes Projets
TestIte1AddContains.kt 2,35 ko
Newer Older
Arnaud LANOIX's avatar
Arnaud LANOIX a validé
import but3.collections.IterativeBinarySearchTree
import but3.collections.KeyAlreadyPresentException
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource

class TestIte1AddContains {

    lateinit var bst: IterativeBinarySearchTree<Int>

    @BeforeEach
    fun initialise() {
        bst = IterativeBinarySearchTree()
    }

    @Test
    fun empty() {
        Assertions.assertAll(
            { Assertions.assertTrue(bst.isEmpty()) },
            { Assertions.assertEquals(0, bst.height()) },
            { Assertions.assertFalse(bst.containsB(666)) },
        )
    }

    @ParameterizedTest(name = "element added : {0}")
    @ValueSource(ints = [10, 3, 5, 7, 100, 30, 20, 45, 50, 48, 60, 10000])
    fun element0(added: Int) {
        Assertions.assertDoesNotThrow { bst.addB(added) }
    }

    @ParameterizedTest(name = "element added : {0}")
    @ValueSource(ints = [10, 3, 5, 7, 100, 30, 20, 45, 50, 48, 60, 10000])
    fun element1(added: Int) {
        bst.addB(added)
        Assertions.assertAll(
            { Assertions.assertFalse(bst.isEmpty()) },
            { Assertions.assertEquals(0, bst.height()) },
            { Assertions.assertTrue(bst.containsB(added)) },
            { Assertions.assertFalse(bst.containsB(666)) },
            { assertThrows<KeyAlreadyPresentException> { bst.addB(added) } },
        )
    }

    @Test
    fun notEmpty() {
        bst.addB(10)
        bst.addB(3)
        bst.addB(5)
        bst.addB(7)
        bst.addB(100)
        bst.addB(30)
        bst.addB(20)
        bst.addB(45)
        bst.addB(50)
        bst.addB(48)
        bst.addB(60)
        bst.addB(10000)
        Assertions.assertAll(
            { Assertions.assertFalse(bst.isEmpty()) },
            { Assertions.assertEquals(5, bst.height()) },
            { Assertions.assertFalse(bst.containsB(666)) },
        )
    }

    @Test
    fun notEmptyFactory() {
        bst = IterativeBinarySearchTree.buildFrom(10, 3, 5, 7, 100, 30, 20, 45, 50, 48, 60, 10000)
        Assertions.assertAll(
            { Assertions.assertFalse(bst.isEmpty()) },
            { Assertions.assertEquals(5, bst.height()) },
            { Assertions.assertFalse(bst.containsB(666)) },
        )
    }
}