00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef MOCKPP_AND_H
00035 #define MOCKPP_AND_H
00036
00037 #include <mockpp/mockpp.h>
00038
00039 #include <mockpp/constraint/ConstraintHolder.h>
00040
00041
00042 MOCKPP_NS_START
00043
00044
00049 template <typename T>
00050 class And : public Constraint<T>
00051 {
00052 public:
00053
00060 And( const ConstraintHolder<T> &in_left,
00061 const ConstraintHolder<T> &in_right,
00062 bool in_short = true )
00063 : left( in_left )
00064 , right( in_right )
00065 , shortcut(in_short)
00066 {}
00067
00070 virtual ~And()
00071 {}
00072
00078 virtual bool eval( const T &o ) const
00079 {
00080 if (shortcut)
00081 return left->eval( o ) && right->eval( o );
00082
00083 else
00084 {
00085 const bool res_left = left->eval( o );
00086 const bool res_right = right->eval( o );
00087
00088 return res_left && res_right;
00089 }
00090 }
00091
00097 virtual bool verify( const T &arg ) const
00098 {
00099 if (shortcut)
00100 return left->verify(arg) && right->verify(arg);
00101
00102 else
00103 {
00104 const bool res_left = left->verify( arg );
00105 const bool res_right = right->verify( arg );
00106
00107 return res_left && res_right;
00108 }
00109 }
00110
00115 virtual String describeTo( String &buffer ) const
00116 {
00117 buffer += MOCKPP_PCHAR( "(" );
00118 buffer = left->describeTo( buffer );
00119 buffer += MOCKPP_PCHAR( " && " );
00120 buffer = right->describeTo( buffer );
00121 buffer += MOCKPP_PCHAR( ")" );
00122 return buffer;
00123 }
00124
00125 private:
00126
00127 const typename Constraint<T>::AP left;
00128 const typename Constraint<T>::AP right;
00129 bool shortcut;
00130 };
00131
00132
00133 MOCKPP_NS_END
00134
00135
00136 #endif // MOCKPP_AND_H