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:
parent
b39cf5da32
commit
7c6f290995
@ -115,5 +115,15 @@ bool wxIsSameDouble(double x, double y);
|
||||
*/
|
||||
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/zipstrm.h"
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
// Needed for wxMulDivInt32().
|
||||
#include "wx/msw/wrapwin.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// test class
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -199,3 +204,12 @@ TEST_CASE("wxRound", "[math]")
|
||||
#endif
|
||||
#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 );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user