1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Fixed a few more places where doubles were not serialised to full accuracy

This commit is contained in:
Tom Poole 2019-02-11 14:44:19 +00:00
parent bd07014dcc
commit 306e7e4360
4 changed files with 55 additions and 23 deletions

View file

@ -1157,32 +1157,63 @@ public:
void runTest() override
{
beginTest ("ValueTree");
auto r = getRandom();
for (int i = 10; --i >= 0;)
{
MemoryOutputStream mo;
auto v1 = createRandomTree (nullptr, 0, r);
v1.writeToStream (mo);
beginTest ("ValueTree");
MemoryInputStream mi (mo.getData(), mo.getDataSize(), false);
auto v2 = ValueTree::readFromStream (mi);
expect (v1.isEquivalentTo (v2));
auto r = getRandom();
MemoryOutputStream zipped;
for (int i = 10; --i >= 0;)
{
GZIPCompressorOutputStream zippedOut (zipped);
v1.writeToStream (zippedOut);
MemoryOutputStream mo;
auto v1 = createRandomTree (nullptr, 0, r);
v1.writeToStream (mo);
MemoryInputStream mi (mo.getData(), mo.getDataSize(), false);
auto v2 = ValueTree::readFromStream (mi);
expect (v1.isEquivalentTo (v2));
MemoryOutputStream zipped;
{
GZIPCompressorOutputStream zippedOut (zipped);
v1.writeToStream (zippedOut);
}
expect (v1.isEquivalentTo (ValueTree::readFromGZIPData (zipped.getData(), zipped.getDataSize())));
std::unique_ptr<XmlElement> xml1 (v1.createXml());
std::unique_ptr<XmlElement> xml2 (v2.createCopy().createXml());
expect (xml1->isEquivalentTo (xml2.get(), false));
auto v4 = v2.createCopy();
expect (v1.isEquivalentTo (v4));
}
expect (v1.isEquivalentTo (ValueTree::readFromGZIPData (zipped.getData(), zipped.getDataSize())));
}
std::unique_ptr<XmlElement> xml1 (v1.createXml());
std::unique_ptr<XmlElement> xml2 (v2.createCopy().createXml());
expect (xml1->isEquivalentTo (xml2.get(), false));
{
beginTest ("Float formatting");
auto v4 = v2.createCopy();
expect (v1.isEquivalentTo (v4));
ValueTree testVT ("Test");
Identifier number ("number");
std::map<double, String> tests;
tests[1] = "1";
tests[1.1] = "1.1";
tests[1.01] = "1.01";
tests[0.76378] = "7.6378e-1";
tests[-10] = "-1e1";
tests[10.01] = "1.001e1";
tests[0.0123] = "1.23e-2";
tests[-3.7e-27] = "-3.7e-27";
tests[1e+40] = "1e40";
for (auto& test : tests)
{
testVT.setProperty (number, test.first, nullptr);
auto lines = StringArray::fromLines (testVT.toXmlString());
lines.removeEmptyStrings();
auto numLines = lines.size();
expect (numLines > 1);
expectEquals (lines[numLines - 1], "<Test number=\"" + test.second + "\"/>");
}
}
}
};