diff --git a/bloc_ids.lua b/bloc_ids.lua
deleted file mode 100644
index ee0ee78c526b73473e0191c50be8427d9312707c..0000000000000000000000000000000000000000
--- a/bloc_ids.lua
+++ /dev/null
@@ -1,12 +0,0 @@
--- bloc_ids.lua
--- Created on:  2020-10-16
--- Author:      Rétro
--- 
--- Fichier de macros pour les ID des blocs
---
--- Utilisation: __include 'bloc_ids'
---
-
-ID_LOG      = "log"
-ID_STONE    = "stone"
-ID_COBBLE   = "cobblestone"
diff --git a/bucher.lua b/bucher.lua
index 10a57ad99fd53eb92d19dc6db5171ffea78e6849..23297178a47f1f595e85cabab32275c66b0c6271 100644
--- a/bucher.lua
+++ b/bucher.lua
@@ -10,7 +10,7 @@ local RSI_Bucheron = {}
 RSI_Bucheron.__index = RSI_Bucheron
 
 rsiT = require("rsiTurtle")
-require("bloc_ids")
+require("macros")
 
 ---
 -- \brief Constructeur de RSI_Bucheron
diff --git a/macros.lua b/macros.lua
new file mode 100644
index 0000000000000000000000000000000000000000..f251bdafdcfe4a3ead28c1a4e1f115b1a3e9ff61
--- /dev/null
+++ b/macros.lua
@@ -0,0 +1,25 @@
+-- bloc_ids.lua
+-- Created on:  2020-10-16
+-- Author:      Rétro
+-- 
+-- Fichier de macros pour les ID des blocs
+--
+-- Utilisation: __include 'bloc_ids'
+--
+
+-- Macros générales
+FUEL_LOW    = 100
+FUEL_FULL   = 400
+
+-- Cases de l'inventaire dédiées
+SLOT_ENDERCHEST_FUEL = 1
+SLOT_ENDERCHEST_DUMP = 2
+
+-- ID Blocs
+ID_LOG          = "log"
+ID_STONE        = "stone"
+ID_COBBLE       = "cobblestone"
+
+-- WARNING: Les ender chest et les ender tanks ont des "blocs names"
+--          indentiques. Il est donc impossible de les différencier.
+ID_ENDERCHEST   = "ender_storage"
diff --git a/rsiTurtle.lua b/rsiTurtle.lua
index ba8617da7cdd971dceadf48e9fc01caea627e491..30c5dff0ec079d82c54073295d708a31794d63ea 100644
--- a/rsiTurtle.lua
+++ b/rsiTurtle.lua
@@ -12,7 +12,7 @@ local RSI_Turtle = {}
 RSI_Turtle.__index = RSI_Turtle
 
 require("printf")
-require("bloc_ids")
+require("macros")
 
 ---
 -- \brief Affiche un hello world
@@ -682,4 +682,44 @@ function RSI_Turtle:goThroughVolume(lines, cols, depth, action)
 end
 
 
+---
+-- \brief Vérifier si l'ID du bloc en face contient la regex
+-- \param int   fuelLevel       Brûler du carburant jusqu'à ce que le tortue
+--                              atteigne le niveau spécifié
+-- \param int   fuelChestSlot   Case de l'inventaire contenant un ender chest
+--                              contenant du carburant
+-- \return bool Succès
+function RSI_Turtle:refuelUntil(fuelLevel, fuelChestSlot)
+    local success
+    local itemInFuelSlot
+
+    self:dig() -- Faire de la place pour le coffre
+    turtle.select(fuelChestSlot)
+    success = turtle.place()
+    if (not success) then return false end
+
+    while (turtle.getFuelLevel() < fuelLevel)
+    do
+        -- Prendre un object dans le coffre
+        success = turtle.suck(1)
+        if (not success) then return false end
+
+        -- Le brûler
+        success = turtle.refuel(1)
+        if (not success) then return false end
+    end
+
+    -- Ramasser le coffre
+    success = self:dig()
+    if (not success) then return false end
+
+    -- Vérifier qu'on a bien ramassé le coffre au bon emplacement de l'inventaire
+    itemInFuelSlot = turtle.getItemDetail(fuelChestSlot)
+    if (itemInFuelSlot ~= nil)
+    then
+        return string.match(itemInFuelSlot.name, ID_ENDERCHEST)
+    end
+    return false
+end
+
 return RSI_Turtle
diff --git a/test.lua b/test.lua
index 4211df35ebf3524d7113b828dbbe177e6793579c..6daecf9d376922f1073871acddfb4b019766d96c 100644
--- a/test.lua
+++ b/test.lua
@@ -8,7 +8,7 @@ rsiT = require("rsiTurtle")
 rsiB = require("bucher")
 rsiE = require("excaver")
 
-require("bloc_ids")
+require("macros")
 
 -- rsiT.helloWorld()
 
@@ -20,9 +20,9 @@ print("Test de RSI_Bucheron")
 b = rsiB:init()
 b:print()
 
--- print("Test de RSI_Excavatrice")
--- e = rsiE:init()
--- e:print()
+print("Test de RSI_Excavatrice")
+e = rsiE:init()
+e:print()
 
 -- print("Test de l'API turtle")
 -- print(turtle.inspect())
@@ -183,12 +183,21 @@ end
 --b.base_:moveTo(5,5,5)
 --assert(b.base_:moveToOriginGrounded())
 
-print("Test goThroughVolume")
-assert(t:goThroughVolume(4,3,3, turtle.digDown))
+--print("Test goThroughVolume")
+--assert(t:goThroughVolume(4,3,3, turtle.digDown))
 
-assert(t:moveToOrigin())
-print(t:getPos())
-assert(checkPos(0,0,0))
+--print("Test excavateVolumeDown")
+--assert(e:excavateVolumeDown(2,2,3))
+--assert(e:excavateVolumeDown(10,10,68)) Attention: prend des heures
+
+print("Test refuelUntil")
+assert(e.base_:refuelUntil(FUEL_FULL, SLOT_ENDERCHEST_FUEL))
+print("Fuel level after refueling:")
+print(turtle.getFuelLevel())
+assert(turtle.getFuelLevel() >= FUEL_FULL)
+
+assert(e.base_:moveToOrigin())
+print(e.base_:getPos())
 
 print("Fin des tests")