Add support for custom precision in floating point stringification

Closes #1612
This commit is contained in:
mlimber
2019-04-26 11:14:33 -04:00
committed by Martin Hořeňovský
parent 9c741fe960
commit 53a83e855e
3 changed files with 55 additions and 2 deletions

View File

@@ -234,11 +234,32 @@ std::string StringMaker<std::nullptr_t>::convert(std::nullptr_t) {
return "nullptr";
}
int StringMaker<float>::m_precision = 5;
std::string StringMaker<float>::convert(float value) {
return fpToString(value, 5) + 'f';
return fpToString(value, m_precision) + 'f';
}
void StringMaker<float>::setPrecision(int precision) {
m_precision = precision;
}
int StringMaker<float>::getPrecision() {
return m_precision;
}
int StringMaker<double>::m_precision = 10;
std::string StringMaker<double>::convert(double value) {
return fpToString(value, 10);
return fpToString(value, m_precision);
}
void StringMaker<double>::setPrecision(int precision) {
m_precision = precision;
}
int StringMaker<double>::getPrecision() {
return m_precision;
}
std::string ratio_string<std::atto>::symbol() { return "a"; }

View File

@@ -261,10 +261,19 @@ namespace Catch {
template<>
struct StringMaker<float> {
static std::string convert(float value);
static void setPrecision(int precision);
static int getPrecision();
private:
static int m_precision;
};
template<>
struct StringMaker<double> {
static std::string convert(double value);
static void setPrecision(int precision);
static int getPrecision();
private:
static int m_precision;
};
template <typename T>