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_ISCLOSETO_H
00035 #define MOCKPP_ISCLOSETO_H
00036
00037 #include <mockpp/mockpp.h>
00038
00039 #include <mockpp/constraint/Constraint.h>
00040 #include <mockpp/compat/Formatter.h>
00041
00042
00043 MOCKPP_NS_START
00044
00045
00051 template <typename NumberType>
00052 class IsCloseTo : public Constraint<NumberType>
00053 {
00054 public:
00055
00060 IsCloseTo( const NumberType &in_value, const NumberType &in_deviation )
00061 : value(in_value)
00062 , deviation(in_deviation)
00063 {}
00064
00070 virtual bool eval( const NumberType &arg ) const
00071 {
00072
00073 return (arg <= value + deviation && arg >= value - deviation)
00074 || (arg <= value - deviation && arg >= value + deviation);
00075 }
00076
00081 virtual String describeTo( String &buffer ) const
00082 {
00083 String fmt = MOCKPP_PCHAR("a numeric value within +-%1 of %2");
00084 fmt << deviation << value;
00085 buffer += fmt;
00086 return buffer;
00087 }
00088
00089 private:
00090
00091 const NumberType value;
00092 const NumberType deviation;
00093 };
00094
00095
00096 MOCKPP_NS_END
00097
00098
00099 #endif // MOCKPP_ISCLOSETO_H