From b7801ac86ad401a2a9897bf3a91ade1b54d8b843 Mon Sep 17 00:00:00 2001
From: Mamadu Lamarana BAH <mamadulamarana.bah.etu@univ-lille.fr>
Date: Thu, 1 Feb 2024 11:27:13 +0100
Subject: [PATCH] test de searcch et debut de insertion

---
 src/BTree.py | 25 ++++++++++++-------
 src/node.py  | 68 ++++++++++++++++++++++++++++++++++++----------------
 2 files changed, 63 insertions(+), 30 deletions(-)

diff --git a/src/BTree.py b/src/BTree.py
index c94680f..5a696d9 100644
--- a/src/BTree.py
+++ b/src/BTree.py
@@ -9,6 +9,15 @@ class Btree() :
         self.k = k
         
     def search(self, value):
+        """
+        Exemple(s):
+        >>> Btree(2, Node([5,25])).search(25)
+        (Node([5, 25]), 1)
+        >>> Btree(2, Node([12, 42], [Node([1]), Node([25]), Node([50])])).search(1)
+        (Node([1]), 0)
+        True
+        >>> Btree(2, Node([12, 42], [Node([1]), Node([25]), Node([50])])).search(2)
+        """
         return self.root.search(value)
 
 # incomplet
@@ -29,15 +38,13 @@ class Btree() :
 #                 self.root.insert_not_full(value)
 #
 
-    def insertion(self,value):
-        """
-        >>> Node([5,25]).insertion(10)
-        Node([5,10,25])
-        >>> Node([]).insertion(1)
-        Node([1])
-        >>> Node([5,25]).insertion(50)
-        Node([5,25,50])
-        """
+    #def insertion(self,value):
+#         >>> Node([5,25]).insertion(10)
+#         Node([5,10,25])
+#         >>> Node([]).insertion(1)
+#         Node([1])
+#         >>> Node([5,25]).insertion(50)
+#         Node([5,25,50])
         
         
         
diff --git a/src/node.py b/src/node.py
index 2f8b841..e928075 100644
--- a/src/node.py
+++ b/src/node.py
@@ -21,10 +21,15 @@ class Node() :
     
     def search(self, value):
         """
-        >>> Node([5, 25]).search(5)
-        (Node([5, 25]),0)
-        >>> Node([5,25],[Node[1],Node[18],Node[100]]).search(18)
-        (Node[18],0)
+        Exemple(s):
+        >>> Node([5,25]).search(5)
+        (Node([5, 25]), 0)
+        >>> Node([12, 42]).search(12)
+        (Node([12, 42]), 0)
+        >>> Node([12, 42]).search(1)
+        >>> Node([12, 42], [Node([1]), Node([25]), Node([50])]).search(1)
+        (Node([1]), 0)
+        >>> Node([12, 42], [Node([1]), Node([25]), Node([50])]).search(2)
         """
         (found, index) = recherche_dichotomique(value, self.keys)
         if (found):
@@ -32,7 +37,7 @@ class Node() :
         elif ( self.isLeaf() ):
             return None
         else :
-            self.childs[index].search(value)
+            return self.childs[index].search(value)
     
     def insert(self, value, k):
         """
@@ -41,20 +46,32 @@ class Node() :
         >>> Node([5,15]).insert(20, 4)
         Node([5,15,20])
         """
-        (found, index) = self.search(value)
-        if (self.isLeaf()) :
-            if (not found):
+        (node, index) = self.search(value)
+        if (node == None) :
+            if (self.isLeaf()):
                 self.keys.insert(index, value)
-        else :
-            (fini, milieu, g, d) = self.childs[index].insert(value, k)
-            if not fini:
-                return None
-            #TODO
-        if (len(self.keys) > k) :
-            (m, g, d) = self.splitNode()
-            f = False
-        else:
-            return None
+            else:
+                (fini, milieu, g, d) = self.childs[index].insert(value, k)
+                if (not fini) :
+                    self.keys.insert(index, milieu)
+                    self.childs[index] = g
+                    self.childs.insert(index+1, d)
+            
+                    
+            
+                    
+            
+            
+#         else :
+#             (fini, milieu, g, d) = self.childs[index].insert(value, k)
+#             if not fini:
+#                 return None
+#             #TODO
+#         if (len(self.keys) > k) :
+#             (m, g, d) = self.splitNode()
+#             f = False
+#         else:
+#             return None
             #TODO
             
 
@@ -66,14 +83,23 @@ class Node() :
     def splitNode(self) :
         """
         >>> Node([10,20,25]).splitNode()
-        (20, Node([10]), Node([25])
+        (20, Node([10]), Node([25]))
+        >>> Node([12, 20, 22, 40]).splitNode()
+        (22, Node([12, 20]), Node([40]))
+        >>> Node([3, 5]).splitNode()
+        (5, Node([3]), Node([]))
         """
         milieu = len(self.keys) //2
         parent = self.keys[milieu]
         g = Node(self.keys[:milieu], self.childs[:milieu+1])
         d = Node(self.keys[milieu+1:], self.childs[milieu+1:])
         
-        return (milieu,g,d)
+        return (parent, g, d)
+    
+    
+    
+    def __repr__(self) :
+        return f"Node({self.keys})"
             
 
 
@@ -102,4 +128,4 @@ class Node() :
         
 if __name__ == '__main__':
     import doctest
-    doctest.testmod(verbose=True)
\ No newline at end of file
+    doctest.testmod(verbose=False)
\ No newline at end of file
-- 
GitLab