Index: src/Parameters/unittests/Makefile.am
===================================================================
--- src/Parameters/unittests/Makefile.am	(revision f10b0c73d4fb0ce5aaebc2bd886b4e6fad639dd0)
+++ src/Parameters/unittests/Makefile.am	(revision 33d0afb28a622c243f2d109a7b9e6c210afd7512)
@@ -7,5 +7,6 @@
 	../Parameters/unittests/ContinuousParameterTest.cpp \
 	../Parameters/unittests/DiscreteValueTest.cpp \
-	../Parameters/unittests/DiscreteParameterTest.cpp
+	../Parameters/unittests/DiscreteParameterTest.cpp \
+	../Parameters/unittests/Ops_ValidatorTest.cpp
 
 PARAMETERSTESTSHEADERS = \
@@ -13,5 +14,6 @@
 	../Parameters/unittests/ContinuousParameterTest.hpp \
 	../Parameters/unittests/DiscreteValueTest.hpp \
-	../Parameters/unittests/DiscreteParameterTest.hpp
+	../Parameters/unittests/DiscreteParameterTest.hpp \
+	../Parameters/unittests/Ops_ValidatorTest.hpp
 
 PARAMETERSTESTS = \
@@ -19,5 +21,6 @@
 	ContinuousParameterTest \
 	DiscreteValueTest \
-	DiscreteParameterTest
+	DiscreteParameterTest \
+	Ops_ValidatorTest
 
 TESTS += $(PARAMETERSTESTS)
@@ -35,4 +38,6 @@
 	../Parameters/Validators/DiscreteValidator_impl.hpp \
 	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/Ops_Validator.hpp \
+	../Parameters/Validators/Ops_Validator_impl.hpp \
 	../Parameters/Validators/RangeValidator.hpp \
 	../Parameters/Validators/RangeValidator_impl.hpp \
@@ -60,4 +65,6 @@
 	../Parameters/Validators/DiscreteValidator_impl.hpp \
 	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/Ops_Validator.hpp \
+	../Parameters/Validators/Ops_Validator_impl.hpp \
 	../Parameters/Validators/RangeValidator.hpp \
 	../Parameters/Validators/RangeValidator_impl.hpp \
@@ -77,4 +84,6 @@
 	../Parameters/Validators/DiscreteValidator_impl.hpp \
 	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/Ops_Validator.hpp \
+	../Parameters/Validators/Ops_Validator_impl.hpp \
 	../Parameters/Validators/RangeValidator.hpp \
 	../Parameters/Validators/RangeValidator_impl.hpp \
@@ -102,4 +111,6 @@
 	../Parameters/Validators/DiscreteValidator_impl.hpp \
 	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/Ops_Validator.hpp \
+	../Parameters/Validators/Ops_Validator_impl.hpp \
 	../Parameters/Validators/RangeValidator.hpp \
 	../Parameters/Validators/RangeValidator_impl.hpp \
@@ -112,4 +123,19 @@
 	$(PARAMETERSLIBS) \
 	$(top_builddir)/LinearAlgebra/src/LinearAlgebra/libLinearAlgebra.la
+
+Ops_ValidatorTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \
+	../Parameters/unittests/Ops_ValidatorTest.cpp \
+	../Parameters/unittests/Ops_ValidatorTest.hpp \
+	../Parameters/Validators/DiscreteValidator.hpp \
+	../Parameters/Validators/DiscreteValidator_impl.hpp \
+	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/Ops_Validator.hpp \
+	../Parameters/Validators/Ops_Validator_impl.hpp \
+	../Parameters/Validators/RangeValidator.hpp \
+	../Parameters/Validators/RangeValidator_impl.hpp \
+	../Parameters/Validators/Validator.hpp
+Ops_ValidatorTest_LDADD = \
+	$(PARAMETERSLIBS) \
+	$(top_builddir)/LinearAlgebra/src/LinearAlgebra/libLinearAlgebra.la
  
  
Index: src/Parameters/unittests/Ops_ValidatorTest.cpp
===================================================================
--- src/Parameters/unittests/Ops_ValidatorTest.cpp	(revision 33d0afb28a622c243f2d109a7b9e6c210afd7512)
+++ src/Parameters/unittests/Ops_ValidatorTest.cpp	(revision 33d0afb28a622c243f2d109a7b9e6c210afd7512)
@@ -0,0 +1,100 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2010-2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * Ops_ValidatorTest.cpp
+ *
+ *  Created on: May 9, 2012
+ *      Author: ankele
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+#include "CodePatterns/Assert.hpp"
+
+#include "Parameters/Validators/DiscreteValidator.hpp"
+#include "Parameters/Validators/Ops_Validator.hpp"
+
+#include "Ops_ValidatorTest.hpp"
+
+#ifdef HAVE_TESTRUNNER
+#include "UnitTestMain.hpp"
+#endif /*HAVE_TESTRUNNER*/
+
+/********************************************** Test classes **************************************/
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION( Ops_ValidatorTest );
+
+void Ops_ValidatorTest::setUp()
+{
+  // failing asserts should be thrown
+  ASSERT_DO(Assert::Throw);
+
+  ValidValuesA.push_back(1);
+  ValidValuesA.push_back(2);
+  ValidValuesA.push_back(3);
+  ValidValuesA.push_back(4);
+  ValidValuesB.push_back(1);
+  ValidValuesB.push_back(3);
+  ValidValuesB.push_back(10);
+}
+
+
+void Ops_ValidatorTest::tearDown()
+{
+  ValidValuesA.clear();
+  ValidValuesB.clear();
+}
+
+/** Test whether operator() returns as desired
+ *
+ */
+void Ops_ValidatorTest::AndTest()
+{
+  And_Validator<int> AndVal = (DiscreteValidator<int>(ValidValuesA) && DiscreteValidator<int>(ValidValuesB));
+
+  CPPUNIT_ASSERT( (AndVal)(1) );
+  CPPUNIT_ASSERT( (AndVal)(3) );
+  CPPUNIT_ASSERT( !(AndVal)(2) );
+  CPPUNIT_ASSERT( !(AndVal)(0) );
+}
+/** Test whether operator() returns as desired
+ *
+ */
+void Ops_ValidatorTest::OrTest()
+{
+  Or_Validator<int> OrVal = (DiscreteValidator<int>(ValidValuesA) || DiscreteValidator<int>(ValidValuesB));
+
+  CPPUNIT_ASSERT( (OrVal)(1) );
+  CPPUNIT_ASSERT( (OrVal)(2) );
+  CPPUNIT_ASSERT( (OrVal)(3) );
+  CPPUNIT_ASSERT( (OrVal)(4) );
+  CPPUNIT_ASSERT( (OrVal)(10) );
+  CPPUNIT_ASSERT( !(OrVal)(0) );
+  CPPUNIT_ASSERT( !(OrVal)(5) );
+}
+
+/** Test whether operator!() returns as desired
+ *
+ */
+void Ops_ValidatorTest::NotTest()
+{
+  Not_Validator<int> NotVal = (!DiscreteValidator<int>(ValidValuesA));
+
+  CPPUNIT_ASSERT( !(NotVal)(1) );
+  CPPUNIT_ASSERT( !(NotVal)(3) );
+  CPPUNIT_ASSERT( (NotVal)(5) );
+  CPPUNIT_ASSERT( (NotVal)(0) );
+}
Index: src/Parameters/unittests/Ops_ValidatorTest.hpp
===================================================================
--- src/Parameters/unittests/Ops_ValidatorTest.hpp	(revision 33d0afb28a622c243f2d109a7b9e6c210afd7512)
+++ src/Parameters/unittests/Ops_ValidatorTest.hpp	(revision 33d0afb28a622c243f2d109a7b9e6c210afd7512)
@@ -0,0 +1,44 @@
+/*
+ * Ops_ValidatorTest.hpp
+ *
+ *  Created on: May 9, 2012
+ *      Author: ankele
+ */
+
+#ifndef OPS_VALIDATORTEST_HPP_
+#define OPS_VALIDATORTEST_HPP_
+
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <vector>
+
+class Ops_ValidatorTest :  public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( Ops_ValidatorTest ) ;
+  CPPUNIT_TEST ( AndTest );
+  CPPUNIT_TEST ( OrTest );
+  CPPUNIT_TEST ( NotTest );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void AndTest();
+  void OrTest();
+  void NotTest();
+
+private:
+  std::vector<int> ValidValuesA;
+  std::vector<int> ValidValuesB;
+};
+
+
+#endif /* OPS_VALIDATORTEST_HPP_ */
