def test_is_empty(self): lk = LinkedList() assert lk.is_empty() == True lk.add("1") assert lk.is_empty() == False lk.clear() assert lk.is_empty() == True
def test_raise_when_no_value(self): lk = LinkedList() values = ["1", "2", "3", "4"] for value in values: lk.add(value) with raises(ValueError): lk.remove("5")
def test_contains(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") assert lk.contains("1") == True assert lk.contains("0") == False
def test_index_of(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") assert lk.index_of("1") == 0 assert lk.index_of("3") == 2
def test_dichotomic_search_minus_one(self): lk = LinkedList() lk.add(1) lk.add(3) lk.add(2) # Il faut préalablement trier le tableau lk.merge_sort() assert lk.dichotomic_search(4) == -1
def test_get(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") assert lk.get(0) == "1" assert lk.get(1) == "2" assert lk.get(2) == "3"
def test_raise_when_bad_index(self): lk = LinkedList() values = ["1", "2", "3", "4"] for value in values: lk.add(value) with raises(IndexError): lk.remove(None, 10) with raises(IndexError): lk.remove(None, -1)
def test_insertion_sort2(self): lk = LinkedList() lk.add(2) lk.add(3) lk.add(1) lk.insertion_sort() assert lk.get(0) == 1 assert lk.get(1) == 2 assert lk.get(2) == 3
def test_clear(self): lk = LinkedList() values = ["1", "2", "3", "4"] for value in values: lk.add(value) lk.clear() assert lk.size() == 0 with raises(IndexError): lk.get(0)
def test_get_raise(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") with raises(IndexError): lk.get(10) with raises(IndexError): lk.get(-1)
def test_set(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") lk.set("4", 1) assert lk.get(0) == "1" assert lk.get(1) == "4" assert lk.get(2) == "3"
def test_raise_when_bad_index(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") with raises(IndexError): lk.set("4", -1) with raises(IndexError): lk.set("4", 10)
def test_dichotomic_search2(self): lk = LinkedList() lk.add(2) lk.add(3) lk.add(1) # Il faut préalablement trier le tableau lk.merge_sort() assert lk.dichotomic_search(3) == 2 assert lk.dichotomic_search(2) == 1
def test_merge_sort2(self): lk = LinkedList() lk.add(2) lk.add(3) lk.add(1) lk.merge_sort() assert lk.get(0) == 1 assert lk.get(1) == 2 assert lk.get(2) == 3
def test_remove_with_value_when_multiple_nodes(self): lk = LinkedList() values = ["1", "2", "3", "4"] for value in values: lk.add(value) lk.remove("3") assert lk.size() == 3 assert lk.get(0) == values[0] assert lk.get(1) == values[1] assert lk.get(2) == values[3]
def test_add_multiple_elements_to_end_with_index(self): lk = LinkedList() values = ["1", "2", "3", "4"] for value in values: lk.add(value, lk.size()) assert lk.size() == 4 assert lk.get(0) == values[0] assert lk.get(1) == values[1] assert lk.get(2) == values[2] assert lk.get(3) == values[3]
def test_set_first_and_last(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") lk.set("4", 0) lk.set("5", 2) assert lk.get(0) == "4" assert lk.get(1) == "2" assert lk.get(2) == "5"
def test_add_element_in_center(self): lk = LinkedList() values = ["1", "2", "3", "4"] for value in values: lk.add(value) lk.add("5", 2) assert lk.size() == 5 assert lk.get(0) == values[0] assert lk.get(1) == values[1] assert lk.get(2) == "5" assert lk.get(3) == values[2] assert lk.get(4) == values[3]
def test_merge_sort3(self): lk = LinkedList() lk.add(2) lk.merge_sort() assert lk.get(0) == 2
def populate(lk: LinkedList, n: int): for i in range(0, n): lk.add(random.randint(0, 1000))
n = 100000 lk.clear() populate(lk, n) value_to_search = lk.get(random.randint(0, lk.size() - 1)) print("========== LINEAR SEARCH (on unsorted list) ==========") t = current_time() index = lk.index_of(value_to_search) print("Valeur à rechercher: {}".format(value_to_search)) print("Indice trouvé: {}".format(index)) print("Valeur équivalente à l'indice trouvé: {}".format(lk.get(index))) print("Temps : {} ms\n".format(current_time() - t)) lk.clear() for i in range(n): lk.add(i) value_to_search = lk.get(random.randint(0, lk.size() - 1)) print("========== LINEAR SEARCH (on sorted list) ==========") t = current_time() index = lk.index_of(value_to_search) print("Valeur à rechercher: {}".format(value_to_search)) print("Indice trouvé: {}".format(index)) print("Valeur équivalente à l'indice trouvé: {}".format(lk.get(index))) print("Temps : {} ms\n".format(current_time() - t)) print( "========== DICHOTOMIC SEARCH (on sorted list, of course) ==========") t = current_time() index = lk.dichotomic_search(value_to_search) print("Valeur à rechercher: {}".format(value_to_search)) print("Indice trouvé: {}".format(index))
def test_remove_with_index(self): lk = LinkedList() value = "1" lk.add(value) lk.remove(None, 0) assert lk.size() == 0
def test_index_of_return_minus_one(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") assert lk.index_of("0") == -1
def test_insertion_sort3(self): lk = LinkedList() lk.add(2) lk.insertion_sort() assert lk.get(0) == 2
def test_add_first_element_without_index(self): lk = LinkedList() value = "1" lk.add(value) assert lk.size() == 1 assert lk.get(0) == value
def test_to_str(self): lk = LinkedList() lk.add("1") lk.add("2") lk.add("3") assert str(lk) == "1 <-> 2 <-> 3"
def test_remove_with_value(self): lk = LinkedList() value = "1" lk.add(value) lk.remove("1") assert lk.size() == 0
import random from src.metier.LinkedList import LinkedList if __name__ == '__main__': # Vos tests ici lk = LinkedList() # Ajouter des nombres aléatoires dans la liste for i in range(0, 10): lk.add(random.randint(0, 1000000)) # Afficher la liste print(lk)
def test_raise_on_bad_index(self): lk = LinkedList() with raises(IndexError): lk.add("1", -1) with raises(IndexError): lk.add("1", 1)
def test_to_str_with_one_values(self): lk = LinkedList() lk.add("1") assert str(lk) == "1"