From 6ca110a2226b0559fca85d22f287ec8a14eee1d1 Mon Sep 17 00:00:00 2001 From: Mikkel Krautz Date: Fri, 29 Dec 2017 15:05:03 +0100 Subject: src/tests: add TestStdAbs test. This adds a 'just-in-case' test for correct runtime behavior of std::abs's float overload. --- src/tests/TestStdAbs/TestStdAbs.cpp | 31 +++++++++++++++++++++++++++++++ src/tests/TestStdAbs/TestStdAbs.pro | 9 +++++++++ src/tests/tests.pro | 3 ++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/tests/TestStdAbs/TestStdAbs.cpp create mode 100644 src/tests/TestStdAbs/TestStdAbs.pro (limited to 'src/tests') diff --git a/src/tests/TestStdAbs/TestStdAbs.cpp b/src/tests/TestStdAbs/TestStdAbs.cpp new file mode 100644 index 000000000..ae06787a9 --- /dev/null +++ b/src/tests/TestStdAbs/TestStdAbs.cpp @@ -0,0 +1,31 @@ +// Copyright 2005-2017 The Mumble Developers. All rights reserved. +// Use of this source code is governed by a BSD-style license +// that can be found in the LICENSE file at the root of the +// Mumble source tree or at . + +#include +#include + +#include + +/// Test the std::abs works with floats. +/// In fixing mumble-voip/mumble#3281, I +/// stumbled upon http://eigen.tuxfamily.org/bz/show_bug.cgi?id=619. +/// It seems that, on some platforms, std::abs +/// might not call through to the correct libc +/// function. +/// Test that it works for us. +class TestStdAbs : public QObject { + Q_OBJECT + private slots: + void floatWorks(); +}; + +void TestStdAbs::floatWorks() { + const float in = -1.5; + float out = std::abs(in); + QVERIFY(out > 1.2 && out < 1.8); +} + +QTEST_MAIN(TestStdAbs) +#include "TestStdAbs.moc" diff --git a/src/tests/TestStdAbs/TestStdAbs.pro b/src/tests/TestStdAbs/TestStdAbs.pro new file mode 100644 index 000000000..6fbff2969 --- /dev/null +++ b/src/tests/TestStdAbs/TestStdAbs.pro @@ -0,0 +1,9 @@ +# Copyright 2005-2017 The Mumble Developers. All rights reserved. +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file at the root of the +# Mumble source tree or at . + +include(../test.pri) + +TARGET = TestStdAbs +SOURCES = TestStdAbs.cpp diff --git a/src/tests/tests.pro b/src/tests/tests.pro index ee778fb1b..1b55d0ae7 100644 --- a/src/tests/tests.pro +++ b/src/tests/tests.pro @@ -18,4 +18,5 @@ SUBDIRS += \ TestServerResolver \ TestSelfSignedCertificate \ TestSSLLocks \ - TestFFDHE + TestFFDHE \ + TestStdAbs -- cgit v1.2.3