mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-25 02:04:23 +00:00
Fixed some incorrect documentation in ValueWithDefault and added some unit tests to the class
This commit is contained in:
parent
c29eea44e3
commit
e5204bafe9
3 changed files with 115 additions and 2 deletions
|
|
@ -39,6 +39,7 @@
|
||||||
#include "values/juce_ValueTree.cpp"
|
#include "values/juce_ValueTree.cpp"
|
||||||
#include "values/juce_ValueTreeSynchroniser.cpp"
|
#include "values/juce_ValueTreeSynchroniser.cpp"
|
||||||
#include "values/juce_CachedValue.cpp"
|
#include "values/juce_CachedValue.cpp"
|
||||||
|
#include "values/juce_ValueWithDefault.cpp"
|
||||||
#include "undomanager/juce_UndoManager.cpp"
|
#include "undomanager/juce_UndoManager.cpp"
|
||||||
#include "app_properties/juce_ApplicationProperties.cpp"
|
#include "app_properties/juce_ApplicationProperties.cpp"
|
||||||
#include "app_properties/juce_PropertiesFile.cpp"
|
#include "app_properties/juce_PropertiesFile.cpp"
|
||||||
|
|
|
||||||
112
modules/juce_data_structures/values/juce_ValueWithDefault.cpp
Normal file
112
modules/juce_data_structures/values/juce_ValueWithDefault.cpp
Normal 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
|
||||||
|
|
@ -124,10 +124,10 @@ public:
|
||||||
/** Returns true if the property does not exist or is empty. */
|
/** Returns true if the property does not exist or is empty. */
|
||||||
bool isUsingDefault() const
|
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
|
void resetToDefault() noexcept
|
||||||
{
|
{
|
||||||
targetTree.removeProperty (targetProperty, nullptr);
|
targetTree.removeProperty (targetProperty, nullptr);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue