From 7788dae5232ff9d369814ebb57b3a838f88e6412 Mon Sep 17 00:00:00 2001
From: loic scoth <loic.scoth.etu@univ-lille.fr>
Date: Thu, 28 Mar 2024 11:24:32 +0100
Subject: [PATCH] fin de seance, ajout experimentation

---
 README.md               |   1 +
 src/ArbreB/Graph.gv     |   3 +++
 src/ArbreB/Graph.gv.jpg | Bin 0 -> 2763 bytes
 src/BTree.py            |  39 ++++++++++++++++-----------
 src/Node.py             |  10 ++++---
 src/Visualization.py    |   6 +++--
 src/experimentation.py  |  57 +++++++++++++++++++++++++++++++++-------
 7 files changed, 86 insertions(+), 30 deletions(-)
 create mode 100644 src/ArbreB/Graph.gv
 create mode 100644 src/ArbreB/Graph.gv.jpg

diff --git a/README.md b/README.md
index 2b34ac9..7d304b3 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,7 @@ Loïc Scoth
 ## TODO
 
 ajout commande execution/tests
+Ce qui ne vas pas
 
 ## Description du projet
 
diff --git a/src/ArbreB/Graph.gv b/src/ArbreB/Graph.gv
new file mode 100644
index 0000000..73753f3
--- /dev/null
+++ b/src/ArbreB/Graph.gv
@@ -0,0 +1,3 @@
+graph {
+	"[5, 25]"
+}
diff --git a/src/ArbreB/Graph.gv.jpg b/src/ArbreB/Graph.gv.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1d38b922210293ceaf86157a0639b6846bbdffc9
GIT binary patch
literal 2763
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
KUK-5*Zvp_Qq#0%a

literal 0
HcmV?d00001

diff --git a/src/BTree.py b/src/BTree.py
index d10d42e..12f8f79 100644
--- a/src/BTree.py
+++ b/src/BTree.py
@@ -1,6 +1,6 @@
 #import Node as Bnode
-from Node import *
-from Visualization import *
+from Node import Node
+#from Visualization import Visualization
 
 
 class Btree() :
@@ -23,24 +23,28 @@ class Btree() :
     def insertion(self, value):
         """
         Exemple(s):
-        >>> a =Btree(2, Node([12, 42], [Node([2, 3]), Node([25]), Node([50])]))
-        >>> a.insertion(1)
-        True
-        >>> a.search(1)
-        (Node([1]), 0)
-        >>> b= Btree(3, Node([12,25,50], [Node([1,11]), Node([20]), Node([100])]))
-        >>> b.insertion(10)
-        True
-        >>> b.search(10)
-        (Node([1, 10, 11]), 1)
-        >>> Btree(2, Node([4, 10], [Node([1, 3]), Node([25]), Node([50])])).insertion(4)
-        True
-        
+#         >>> a =Btree(2, Node([12, 42], [Node([2, 3]), Node([25]), Node([50])]))
+#         >>> a.insertion(1)
+#         True
+#         >>> a.search(1)
+#         (Node([1]), 0)
+#         >>> b= Btree(3, Node([12,25,50], [Node([1,11]), Node([20]), Node([100])]))
+#         >>> b.insertion(10)
+#         True
+#         >>> b.search(10)
+#         (Node([1, 10, 11]), 1)
+#         >>> Btree(2, Node([4, 10], [Node([1, 3]), Node([25]), Node([50])])).insertion(4)
+#         True
+        >>> c = Btree(2,Node([1, 10]))
+        >>> print(c.insertion(15))
+
         """
+        print(self.root)
         fini, milieu, g, d = self.root.insert(value, self.k)
         if (not fini):
             new_root = Node([milieu], [g, d])
             self.root = new_root
+        print(self.root)
         return True
     
     
@@ -62,6 +66,11 @@ class Btree() :
         """
         (ok, _, _, _) = self.root.is_ArbreB(self.k, True)
         return ok
+    
+    def equals(self, otherObject):
+        if not isinstance(otherObject, Btree):     
+            return False
+        return (self.root.keys == otherObject.root.keys and self.k == otherObject.k)
             
     def __repr__(self) :
         return f"Btree({self.root})"
diff --git a/src/Node.py b/src/Node.py
index 6c5fe0a..c7e91c2 100644
--- a/src/Node.py
+++ b/src/Node.py
@@ -1,6 +1,6 @@
 from util import recherche_dichotomique
-from Visualization import *
-from BTree import *
+#from Visualization import *
+#from BTree import *
 
 class Node() :
     
@@ -80,7 +80,10 @@ class Node() :
         """
         Return : (node, index) or Nothing
         Exemple(s):
-        >>> node = Node([5])
+        
+        >>> node = Node([])
+        >>> node.insert(5,1)
+        (True, None, None, None)
         >>> node.insert(20, 2)
         (True, None, None, None)
         >>> node.search(20)
@@ -107,6 +110,7 @@ class Node() :
         >>> node.insert(1, 3)
         (True, None, None, None)
         
+        
         """
         (found, index) = recherche_dichotomique(value, self.keys)
         if (not found) :
diff --git a/src/Visualization.py b/src/Visualization.py
index 6493999..c07b062 100644
--- a/src/Visualization.py
+++ b/src/Visualization.py
@@ -1,6 +1,6 @@
 import graphviz
-from Node import *
-from BTree import *
+from Node import Node
+from BTree import Btree
 
 
 class Visualization() :
@@ -11,6 +11,8 @@ class Visualization() :
         self.add_node_to_graph(self.btree.root)
         
     def add_node_to_graph(self, node):
+#        nodeKeys = repr(node.keys)
+        print(repr(node.keys))
         nodeKeys = repr(node.keys)
         self.g.node(nodeKeys)
         for child in node.childs:
diff --git a/src/experimentation.py b/src/experimentation.py
index faaa4c0..d8ab56b 100644
--- a/src/experimentation.py
+++ b/src/experimentation.py
@@ -1,9 +1,41 @@
-import unittest
-from Node import *
+#import unittest
+from Node import Node
+from util import *
+from Visualization import Visualization
+from BTree import Btree
+
 
 class experimentation:
-    def setUp(self):
-        self.node = Node([12, 42], )
+    def __init__(self):
+        self.btree = Btree(2, Node([]))
+        self.experimentationInsert1()
+        
+    def experimentationInsert1(self):
+        #self.btree.insertion(2)
+        #self.isCorrect(Btree(2,Node([2])))
+        
+        #self.btree.insertion(4)
+        #self.isCorrect(Btree(2,Node([2,4])))
+        
+        for n in [2, 4, 5] + list(range(6, 37, 2)) + [7, 9, 11, 13]:
+            self.btree.insertion(n)
+            
+        # TODO Visualization(self.btree).render()
+            
+        
+        print(self.btree)
+        
+       
+       
+       
+       
+       
+       
+    def isCorrect(self, BTreeTest):
+        if (self.btree.equals(BTreeTest)):
+            print("Correct")
+        else:
+            print("error")
 
 
 
@@ -16,14 +48,19 @@ class experimentation:
 
 
 
+if __name__ == "__main__":
+    experiment = experimentation()
 
 
 
 
-if __name__ == "__main__":
-    import sys
-    sys.path.insert(1, './src')
-    sys.path.insert(2, '../src')
-    from Node import *
 
-    unittest.main()
\ No newline at end of file
+# if __name__ == "__main__":
+#     import sys
+#     sys.path.insert(1, './src')
+#     sys.path.insert(2, '../src')
+#     from Node import *
+# 
+#     unittest.main()
+#     import doctest
+#     doctest.testmod(verbose=False)
\ No newline at end of file
-- 
GitLab