diff --git a/tests/value.cpp b/tests/value.cpp
index 8f132b0fe5620a976db4306013f710ed25ee2956..c4a9f8e0647dbcd504d78d1dae295e94a91e4080 100644
--- a/tests/value.cpp
+++ b/tests/value.cpp
@@ -1,6 +1,7 @@
 // Copyright 2011 Florent Lamiraux, Thomas Moulard.
 //
 
+#include <dynamic-graph/exception-factory.h>
 #include "dynamic-graph/value.h"
 #include <iostream>
 
@@ -11,21 +12,24 @@
 
 using boost::test_tools::output_test_stream;
 
-BOOST_AUTO_TEST_CASE(value_none) {
-  using dynamicgraph::command::Value;
+namespace dg = dynamicgraph;
+
 
-  Value value1();
+BOOST_AUTO_TEST_CASE(value_none) {
+  using dg::command::Value;
 
+  Value value1;
+  Value value(value1);
   {
     output_test_stream output;
     output << value1;
-    BOOST_CHECK(output.is_equal("1"));
+    BOOST_CHECK(output.is_equal("Type=unknown, value="));
   }
 
 }
 
 BOOST_AUTO_TEST_CASE(value_bool) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   bool abool1(false);
   Value value1(abool1);
@@ -44,8 +48,118 @@ BOOST_AUTO_TEST_CASE(value_bool) {
   }
 }
 
+BOOST_AUTO_TEST_CASE(value_exceptions) {
+  using dg::command::Value;
+
+  Value value1;
+  dg::command::EitherType anet(value1);
+  output_test_stream output;
+  
+  // Check if the exception is working when calling intValue
+  // while we are having a none.
+  bool res = false;
+  try {
+    int aInt(anet);
+    output << aInt;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+
+  // Check if the exception is working when calling boolValue
+  // while we are having a none.
+  res = false;
+  try {
+    bool abool(anet);
+    output << abool;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+  
+  // Check if the exception is working when calling unsignedintValue
+  // while we are having a none.
+  res = false;
+  try {
+    unsigned int aint(anet);
+    output << aint;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+
+  // Check if the exception is working when calling doubleValue
+  // while we are having a none.
+  res = false;
+  try {
+    double adouble(anet);
+    output << adouble;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+
+  // Check if the exception is working when calling floatValue
+  // while we are having a none.
+  res = false;
+  try {
+    float afloat(anet);
+    output  << afloat;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+
+  // Check if the exception is working when calling stringValue
+  // while we are having a none.
+  res = false;
+  try {
+    std::string astring(anet);
+    output << astring;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+
+  // Check if the exception is working when calling vectorValue
+  // while we are having a none.
+  res = false;
+  try {
+    dg::Vector avector;
+    avector = anet;
+    output << avector;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+
+  // Check if the exception is working when calling matrixXdValue
+  // while we are having a none.
+  res = false;
+  try {
+    Eigen::MatrixXd amatrixXd;
+    amatrixXd = anet;
+    output << amatrixXd;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+  
+  // Check if the exception is working when calling matrix4dValue
+  // while we are having a none.
+  res = false;
+  try {
+    Eigen::Matrix4d amatrix4d;
+    amatrix4d = anet;
+  } catch (const dg::ExceptionAbstract &aea) {
+    res = (aea.getCode() == dg::ExceptionAbstract::TOOLS);
+  }
+  BOOST_CHECK(res);
+  
+}
+
 BOOST_AUTO_TEST_CASE(value_unsigned_int) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   unsigned int aint1(5);
   Value value1(aint1);
@@ -65,7 +179,7 @@ BOOST_AUTO_TEST_CASE(value_unsigned_int) {
 }
 
 BOOST_AUTO_TEST_CASE(value_int) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   int aint1(5);
   Value value1(aint1);
@@ -85,7 +199,7 @@ BOOST_AUTO_TEST_CASE(value_int) {
 }
 
 BOOST_AUTO_TEST_CASE(value_float) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   float afloat1(0.5);
   Value value1(afloat1);
@@ -105,7 +219,7 @@ BOOST_AUTO_TEST_CASE(value_float) {
 }
 
 BOOST_AUTO_TEST_CASE(value_double) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   double adouble1(0.5);
   Value value1(adouble1);
@@ -125,9 +239,9 @@ BOOST_AUTO_TEST_CASE(value_double) {
 }
 
 BOOST_AUTO_TEST_CASE(value_vector) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
-  dynamicgraph::Vector avector1;
+  dg::Vector avector1;
   avector1.resize(2);
   avector1[0]=0.5;avector1[1]=1.5;
   Value value1(avector1);
@@ -147,7 +261,7 @@ BOOST_AUTO_TEST_CASE(value_vector) {
 }
 
 BOOST_AUTO_TEST_CASE(value_string) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   std::string str1("value #1");
   Value value1(str1);
@@ -183,7 +297,7 @@ BOOST_AUTO_TEST_CASE(value_string) {
 }
 
 BOOST_AUTO_TEST_CASE(value_matrixXd) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   Eigen::MatrixXd avector1;
   avector1.resize(2,2);
@@ -206,7 +320,7 @@ BOOST_AUTO_TEST_CASE(value_matrixXd) {
 }
 
 BOOST_AUTO_TEST_CASE(value_matrix4d) {
-  using dynamicgraph::command::Value;
+  using dg::command::Value;
 
   Eigen::Matrix4d avector1;
   avector1.setZero();