37 return { valueAs14Bit };
87bool MPEValue::operator== (
const MPEValue& other)
const noexcept
92bool MPEValue::operator!= (
const MPEValue& other)
const noexcept
94 return ! operator== (other);
102class MPEValueTests :
public UnitTest
109 void runTest()
override
111 beginTest (
"comparison operator");
113 MPEValue value1 = MPEValue::from7BitInt (7);
114 MPEValue value2 = MPEValue::from7BitInt (7);
115 MPEValue value3 = MPEValue::from7BitInt (8);
117 expect (value1 == value1);
118 expect (value1 == value2);
119 expect (value1 != value3);
122 beginTest (
"special values");
124 expectEquals (MPEValue::minValue().as7BitInt(), 0);
125 expectEquals (MPEValue::minValue().as14BitInt(), 0);
127 expectEquals (MPEValue::centreValue().as7BitInt(), 64);
128 expectEquals (MPEValue::centreValue().as14BitInt(), 8192);
130 expectEquals (MPEValue::maxValue().as7BitInt(), 127);
131 expectEquals (MPEValue::maxValue().as14BitInt(), 16383);
134 beginTest (
"zero/minimum value");
136 expectValuesConsistent (MPEValue::from7BitInt (0), 0, 0, -1.0f, 0.0f);
137 expectValuesConsistent (MPEValue::from14BitInt (0), 0, 0, -1.0f, 0.0f);
138 expectValuesConsistent (MPEValue::fromUnsignedFloat (0.0f), 0, 0, -1.0f, 0.0f);
139 expectValuesConsistent (MPEValue::fromSignedFloat (-1.0f), 0, 0, -1.0f, 0.0f);
142 beginTest (
"maximum value");
144 expectValuesConsistent (MPEValue::from7BitInt (127), 127, 16383, 1.0f, 1.0f);
145 expectValuesConsistent (MPEValue::from14BitInt (16383), 127, 16383, 1.0f, 1.0f);
146 expectValuesConsistent (MPEValue::fromUnsignedFloat (1.0f), 127, 16383, 1.0f, 1.0f);
147 expectValuesConsistent (MPEValue::fromSignedFloat (1.0f), 127, 16383, 1.0f, 1.0f);
150 beginTest (
"centre value");
152 expectValuesConsistent (MPEValue::from7BitInt (64), 64, 8192, 0.0f, 0.5f);
153 expectValuesConsistent (MPEValue::from14BitInt (8192), 64, 8192, 0.0f, 0.5f);
154 expectValuesConsistent (MPEValue::fromUnsignedFloat (0.5f), 64, 8192, 0.0f, 0.5f);
155 expectValuesConsistent (MPEValue::fromSignedFloat (0.0f), 64, 8192, 0.0f, 0.5f);
158 beginTest (
"value halfway between min and centre");
160 expectValuesConsistent (MPEValue::from7BitInt (32), 32, 4096, -0.5f, 0.25f);
161 expectValuesConsistent (MPEValue::from14BitInt (4096), 32, 4096, -0.5f, 0.25f);
162 expectValuesConsistent (MPEValue::fromUnsignedFloat (0.25f), 32, 4096, -0.5f, 0.25f);
163 expectValuesConsistent (MPEValue::fromSignedFloat (-0.5f), 32, 4096, -0.5f, 0.25f);
169 void expectValuesConsistent (MPEValue
value,
170 int expectedValueAs7BitInt,
171 int expectedValueAs14BitInt,
172 float expectedValueAsSignedFloat,
173 float expectedValueAsUnsignedFloat)
175 expectEquals (
value.as7BitInt(), expectedValueAs7BitInt);
176 expectEquals (
value.as14BitInt(), expectedValueAs14BitInt);
177 expectFloatWithinRelativeError (
value.asSignedFloat(), expectedValueAsSignedFloat, 0.0001f);
178 expectFloatWithinRelativeError (
value.asUnsignedFloat(), expectedValueAsUnsignedFloat, 0.0001f);
182 void expectFloatWithinRelativeError (
float actualValue,
float expectedValue,
float maxRelativeError)
184 const float maxAbsoluteError =
jmax (1.0f, std::abs (expectedValue)) * maxRelativeError;
185 expect (std::abs (expectedValue - actualValue) < maxAbsoluteError);
189static MPEValueTests MPEValueUnitTests;
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
float asSignedFloat() const noexcept
Definition juce_MPEValue.cpp:74
static MPEValue maxValue() noexcept
Definition juce_MPEValue.cpp:61
static MPEValue centreValue() noexcept
Definition juce_MPEValue.cpp:60
static MPEValue from14BitInt(int value) noexcept
Definition juce_MPEValue.cpp:40
static MPEValue fromUnsignedFloat(float value) noexcept
Definition juce_MPEValue.cpp:46
static MPEValue fromSignedFloat(float value) noexcept
Definition juce_MPEValue.cpp:52
static MPEValue minValue() noexcept
Definition juce_MPEValue.cpp:59
float asUnsignedFloat() const noexcept
Definition juce_MPEValue.cpp:81
MPEValue() noexcept
Definition juce_MPEValue.cpp:26
int normalisedValue
Definition juce_MPEValue.h:100
int as7BitInt() const noexcept
Definition juce_MPEValue.cpp:63
int as14BitInt() const noexcept
Definition juce_MPEValue.cpp:68
static MPEValue from7BitInt(int value) noexcept
Definition juce_MPEValue.cpp:30
Definition juce_UnitTest.h:70
static PuglViewHint int value
Definition pugl.h:1708
Definition juce_UnitTestCategories.h:27
Definition carla_juce.cpp:31
constexpr Type jmap(Type value0To1, Type targetRangeMin, Type targetRangeMax)
Definition juce_MathsFunctions.h:120
int roundToInt(const FloatType value) noexcept
Definition juce_MathsFunctions.h:465
typedef int(UZ_EXP MsgFn)()
#define const
Definition zconf.h:137