Document wxMulDivInt32() and add a test for it
This function exists since always and is probably already used outside wx, so make it officially public and add at least a trivial unit test for it.
This commit is contained in:
@@ -115,5 +115,15 @@ bool wxIsSameDouble(double x, double y);
|
|||||||
*/
|
*/
|
||||||
bool wxIsNullDouble(double x);
|
bool wxIsNullDouble(double x);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Computes the product of a number with a fraction with rounding.
|
||||||
|
|
||||||
|
This function returns @c n*numerator/denominator rounding the result. It is
|
||||||
|
similar to the standard Win32 @c MulDiv() function and, in fact, is
|
||||||
|
implemented by calling it under MSW, where @c wx/msw/wrapwin.h must be
|
||||||
|
included in addition to @c wx/math.h for it to be used.
|
||||||
|
*/
|
||||||
|
int wxMulDivInt32(int n, int numerator, int denominator);
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
@@ -22,6 +22,11 @@
|
|||||||
#include "wx/tarstrm.h"
|
#include "wx/tarstrm.h"
|
||||||
#include "wx/zipstrm.h"
|
#include "wx/zipstrm.h"
|
||||||
|
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
// Needed for wxMulDivInt32().
|
||||||
|
#include "wx/msw/wrapwin.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// test class
|
// test class
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -199,3 +204,12 @@ TEST_CASE("wxRound", "[math]")
|
|||||||
#endif
|
#endif
|
||||||
#endif // WXWIN_COMPATIBILITY_3_0
|
#endif // WXWIN_COMPATIBILITY_3_0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("wxMulDivInt32", "[math]")
|
||||||
|
{
|
||||||
|
// Check that it rounds correctly.
|
||||||
|
CHECK( wxMulDivInt32(15, 3, 2) == 23 );
|
||||||
|
|
||||||
|
// Check that it doesn't overflow.
|
||||||
|
CHECK( wxMulDivInt32((INT_MAX - 1)/2, 200, 100) == INT_MAX - 1 );
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user