Browse Source

Fixed some incorrect documentation in ValueWithDefault and added some unit tests to the class

tags/2021-05-28
ed 6 years ago
parent
commit
e5204bafe9
3 changed files with 115 additions and 2 deletions
  1. +1
    -0
      modules/juce_data_structures/juce_data_structures.cpp
  2. +112
    -0
      modules/juce_data_structures/values/juce_ValueWithDefault.cpp
  3. +2
    -2
      modules/juce_data_structures/values/juce_ValueWithDefault.h

+ 1
- 0
modules/juce_data_structures/juce_data_structures.cpp View File

@@ -39,6 +39,7 @@
#include "values/juce_ValueTree.cpp"
#include "values/juce_ValueTreeSynchroniser.cpp"
#include "values/juce_CachedValue.cpp"
#include "values/juce_ValueWithDefault.cpp"
#include "undomanager/juce_UndoManager.cpp"
#include "app_properties/juce_ApplicationProperties.cpp"
#include "app_properties/juce_PropertiesFile.cpp"

+ 112
- 0
modules/juce_data_structures/values/juce_ValueWithDefault.cpp View File

@@ -0,0 +1,112 @@
/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2017 - ROLI Ltd.
JUCE is an open source library subject to commercial or open-source
licensing.
By using JUCE, you agree to the terms of both the JUCE 5 End-User License
Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
27th April 2017).
End User License Agreement: www.juce.com/juce-5-licence
Privacy Policy: www.juce.com/juce-5-privacy-policy
Or: You may also use this code under the terms of the GPL v3 (see
www.gnu.org/licenses).
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
DISCLAIMED.
==============================================================================
*/
namespace juce
{
#if JUCE_UNIT_TESTS
class ValueWithDefaultTests : public UnitTest
{
public:
ValueWithDefaultTests() : UnitTest ("ValueWithDefault", "Values") {}
void runTest() override
{
beginTest ("default constructor");
{
ValueWithDefault vwd;
expect (vwd.isUsingDefault());
expect (vwd.get() == var());
}
beginTest ("missing property");
{
ValueTree t ("root");
ValueWithDefault vwd (t, "testKey", nullptr, "default");
expect (vwd.isUsingDefault());
expectEquals (vwd.get().toString(), String ("default"));
}
beginTest ("empty property");
{
ValueTree t ("root");
t.setProperty ("testKey", {}, nullptr);
ValueWithDefault vwd (t, "testKey", nullptr, "default");
expect (vwd.isUsingDefault());
expectEquals (vwd.get().toString(), String ("default"));
}
beginTest ("non-empty property");
{
ValueTree t ("root");
t.setProperty ("testKey", "non-default", nullptr);
ValueWithDefault vwd (t, "testKey", nullptr, "default");
expect (! vwd.isUsingDefault());
expectEquals (vwd.get().toString(), String ("non-default"));
}
beginTest ("set default");
{
ValueTree t ("root");
t.setProperty ("testkey", {}, nullptr);
ValueWithDefault vwd (t, "testkey", nullptr);
vwd.setDefault ("default");
expect (vwd.isUsingDefault());
expectEquals (vwd.get().toString(), String ("default"));
}
beginTest ("set value");
{
ValueTree t ("root");
t.setProperty ("testkey", "testvalue", nullptr);
ValueWithDefault vwd (t, "testkey", nullptr, "default");
vwd = "newvalue";
expect (! vwd.isUsingDefault());
expectEquals (t["testkey"].toString(), String ("newvalue"));
vwd.resetToDefault();
expect (vwd.isUsingDefault());
expect (t["testkey"] == var());
}
}
};
static ValueWithDefaultTests valueWithDefaultTests;
#endif
} // namespace juce

+ 2
- 2
modules/juce_data_structures/values/juce_ValueWithDefault.h View File

@@ -124,10 +124,10 @@ public:
/** Returns true if the property does not exist or is empty. */
bool isUsingDefault() const
{
return ! targetTree.hasProperty (targetProperty);
return ! targetTree.hasProperty (targetProperty) || targetTree.getProperty (targetProperty) == var();
}
/** Resets the property to an empty var. */
/** Removes the property from the referenced ValueTree. */
void resetToDefault() noexcept
{
targetTree.removeProperty (targetProperty, nullptr);


Loading…
Cancel
Save