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

Updated the UnitTest class to provide a shared, reproducible random seed for each run, to allow failures to be re-created. Also converted a few Strings to StringRefs.

This commit is contained in:
jules 2013-09-11 10:29:48 +01:00
parent 14cfa338b6
commit 435089e89b
23 changed files with 178 additions and 133 deletions

View file

@ -1019,11 +1019,10 @@ class ValueTreeTests : public UnitTest
public:
ValueTreeTests() : UnitTest ("ValueTrees") {}
static String createRandomIdentifier()
static String createRandomIdentifier (Random& r)
{
char buffer[50] = { 0 };
const char chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-:";
Random r;
for (int i = 1 + r.nextInt (numElementsInArray (buffer) - 2); --i >= 0;)
buffer[i] = chars [r.nextInt (sizeof (chars) - 1)];
@ -1031,10 +1030,9 @@ public:
return CharPointer_ASCII (buffer);
}
static String createRandomWideCharString()
static String createRandomWideCharString (Random& r)
{
juce_wchar buffer[50] = { 0 };
Random r;
for (int i = r.nextInt (numElementsInArray (buffer) - 1); --i >= 0;)
{
@ -1053,20 +1051,19 @@ public:
return CharPointer_UTF32 (buffer);
}
static ValueTree createRandomTree (UndoManager* undoManager, int depth)
static ValueTree createRandomTree (UndoManager* undoManager, int depth, Random& r)
{
Random r;
ValueTree v (createRandomIdentifier());
ValueTree v (createRandomIdentifier (r));
for (int i = r.nextInt (10); --i >= 0;)
{
switch (r.nextInt (5))
{
case 0: v.setProperty (createRandomIdentifier(), createRandomWideCharString(), undoManager); break;
case 1: v.setProperty (createRandomIdentifier(), r.nextInt(), undoManager); break;
case 2: if (depth < 5) v.addChild (createRandomTree (undoManager, depth + 1), r.nextInt (v.getNumChildren() + 1), undoManager); break;
case 3: v.setProperty (createRandomIdentifier(), r.nextBool(), undoManager); break;
case 4: v.setProperty (createRandomIdentifier(), r.nextDouble(), undoManager); break;
case 0: v.setProperty (createRandomIdentifier (r), createRandomWideCharString (r), undoManager); break;
case 1: v.setProperty (createRandomIdentifier (r), r.nextInt(), undoManager); break;
case 2: if (depth < 5) v.addChild (createRandomTree (undoManager, depth + 1, r), r.nextInt (v.getNumChildren() + 1), undoManager); break;
case 3: v.setProperty (createRandomIdentifier (r), r.nextBool(), undoManager); break;
case 4: v.setProperty (createRandomIdentifier (r), r.nextDouble(), undoManager); break;
default: break;
}
}
@ -1077,11 +1074,12 @@ public:
void runTest()
{
beginTest ("ValueTree");
Random r = getRandom();
for (int i = 10; --i >= 0;)
{
MemoryOutputStream mo;
ValueTree v1 (createRandomTree (nullptr, 0));
ValueTree v1 (createRandomTree (nullptr, 0, r));
v1.writeToStream (mo);
MemoryInputStream mi (mo.getData(), mo.getDataSize(), false);