diff --git a/cxx_tests/src/gtest_options.cpp b/cxx_tests/src/gtest_options.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a0e14842347770e0fab69f8355f62f1ead006248
--- /dev/null
+++ b/cxx_tests/src/gtest_options.cpp
@@ -0,0 +1,60 @@
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <tuple>
+#include <boost/format.hpp>
+#include <boost/algorithm/string.hpp>
+#include <gtest/gtest.h>
+#include <soap/basis.hpp>
+#include <soap/options.hpp>
+#include "gtest_defines.hpp"
+
+class TestOptions : public ::testing::Test
+{
+public:
+
+    soap::Options _options;
+    virtual void SetUp() {
+        
+	    _options.set("radialbasis.type", "gaussian");
+	    _options.set("radialbasis.mode", "adaptive");
+	    _options.set("radialbasis.N", 9);
+	    _options.set("radialbasis.sigma", 0.5);
+	    _options.set("radialbasis.integration_steps", 15);
+	    _options.set("radialcutoff.type", "shifted-cosine");
+	    _options.set("radialcutoff.Rc", 4.);
+	    _options.set("radialcutoff.Rc_width", 0.5);
+	    _options.set("radialcutoff.center_weight", 1.);
+	    _options.set("angularbasis.type", "spherical-harmonic");
+	    _options.set("angularbasis.L", 6);
+        
+    }
+
+    virtual void TearDown() {
+        ;
+    }
+};
+
+TEST_F(TestOptions, InterpretBoolean) {
+    _options.set("spectrum.gradients", true);
+    bool gradients = _options.get<bool>("spectrum.gradients");
+    //std::cout << "true == " << gradients << std::endl;
+    EXPECT_EQ(gradients, true);
+
+    _options.set("spectrum.gradients", false);
+    gradients = _options.get<bool>("spectrum.gradients");
+    //std::cout << "false == " << gradients << std::endl;
+    EXPECT_EQ(gradients, false);
+
+    _options.set("spectrum.gradients", "false");
+    try {
+        gradients = _options.get<bool>("spectrum.gradients");
+        std::cout << "false ==" << gradients << std::endl;
+        assert(false);
+    } catch (const std::exception &e) {
+        EXPECT_STREQ(e.what(), "invalid type: wrong or missing type in spectrum.gradients");
+    } catch (...) {
+        assert(false);
+    }
+}
+