summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2012-01-23 11:52:42 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-23 07:30:16 +0100
commit01e7cb99500790861aeba8fc1a9ff7f4355aaace (patch)
tree32bf06c55e4152ded134fed2acd78d33ec508887
parent7d826e38e70f763541ccceaabef4574d02fe9c5b (diff)
Implement QAudioDeviceInfo operator==/!=
Compares some of the useful parts, but perhaps should be made more tolerant. Also refactored the auto test to properly skip if there are no (output) devices, rather than manually skip. Task-number: QTBUG-13723 Change-Id: I3b83f87a440a83f4237fa119a23009bc99e7626a Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com> Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo.cpp26
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo.h3
-rw-r--r--tests/auto/integration/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp197
3 files changed, 118 insertions, 108 deletions
diff --git a/src/multimedia/audio/qaudiodeviceinfo.cpp b/src/multimedia/audio/qaudiodeviceinfo.cpp
index f806fa5d1..a2a9f5d64 100644
--- a/src/multimedia/audio/qaudiodeviceinfo.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo.cpp
@@ -186,7 +186,31 @@ QAudioDeviceInfo& QAudioDeviceInfo::operator=(const QAudioDeviceInfo &other)
}
/*!
- Returns whether this QAudioDeviceInfo object holds a device definition.
+ Returns true if this QAudioDeviceInfo class represents the
+ same audio device as \a other.
+*/
+bool QAudioDeviceInfo::operator ==(const QAudioDeviceInfo &other) const
+{
+ if (d == other.d)
+ return true;
+ if (d->realm == other.d->realm
+ && d->mode == other.d->mode
+ && d->handle == other.d->handle
+ && deviceName() == other.deviceName())
+ return true;
+}
+
+/*!
+ Returns true if this QAudioDeviceInfo class represents a
+ different audio device than \a other
+*/
+bool QAudioDeviceInfo::operator !=(const QAudioDeviceInfo &other) const
+{
+ return !operator==(other);
+}
+
+/*!
+ Returns whether this QAudioDeviceInfo object holds a valid device definition.
*/
bool QAudioDeviceInfo::isNull() const
{
diff --git a/src/multimedia/audio/qaudiodeviceinfo.h b/src/multimedia/audio/qaudiodeviceinfo.h
index 0e5598fb4..f21622bb7 100644
--- a/src/multimedia/audio/qaudiodeviceinfo.h
+++ b/src/multimedia/audio/qaudiodeviceinfo.h
@@ -76,6 +76,9 @@ public:
QAudioDeviceInfo& operator=(const QAudioDeviceInfo& other);
+ bool operator==(const QAudioDeviceInfo &other) const;
+ bool operator!=(const QAudioDeviceInfo &other) const;
+
bool isNull() const;
QString deviceName() const;
diff --git a/tests/auto/integration/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp b/tests/auto/integration/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp
index ccb0c19e1..3b7ad33c3 100644
--- a/tests/auto/integration/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp
+++ b/tests/auto/integration/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp
@@ -59,7 +59,6 @@ private slots:
void initTestCase();
void checkAvailableDefaultInput();
void checkAvailableDefaultOutput();
- void outputList();
void codecs();
void channels();
void sampleSizes();
@@ -74,9 +73,9 @@ private slots:
void assignOperator();
void deviceName();
void defaultConstructor();
+ void equalityOperator();
private:
- bool available;
QAudioDeviceInfo* device;
};
@@ -84,158 +83,120 @@ void tst_QAudioDeviceInfo::initTestCase()
{
// Only perform tests if audio output device exists!
QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
- if (devices.size() > 0)
- available = true;
- else {
- qWarning()<<"NOTE: no audio output device found, no test will be performed";
- available = false;
+ if (devices.size() == 0) {
+ QSKIP("NOTE: no audio output device found, no tests will be performed");
+ } else {
+ device = new QAudioDeviceInfo(devices.at(0));
}
}
void tst_QAudioDeviceInfo::checkAvailableDefaultInput()
{
// Only perform tests if audio input device exists!
- bool storeAvailable = available;
QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
- if (devices.size() > 0)
- available = true;
- else {
- qWarning()<<"NOTE: no audio input device found, no test will be performed";
- available = false;
- }
- if (available)
+ if (devices.size() > 0) {
QVERIFY(!QAudioDeviceInfo::defaultInputDevice().isNull());
- available = storeAvailable;
+ }
}
void tst_QAudioDeviceInfo::checkAvailableDefaultOutput()
{
- if (available)
- QVERIFY(!QAudioDeviceInfo::defaultOutputDevice().isNull());
-}
-
-void tst_QAudioDeviceInfo::outputList()
-{
- if (available) {
- QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
- QVERIFY(devices.size() > 0);
- device = new QAudioDeviceInfo(devices.at(0));
- }
+ QVERIFY(!QAudioDeviceInfo::defaultOutputDevice().isNull());
}
void tst_QAudioDeviceInfo::codecs()
{
- if (available) {
- QStringList avail = device->supportedCodecs();
- QVERIFY(avail.size() > 0);
- }
+ QStringList avail = device->supportedCodecs();
+ QVERIFY(avail.size() > 0);
}
void tst_QAudioDeviceInfo::channels()
{
- if (available) {
- QList<int> avail = device->supportedChannels();
- QVERIFY(avail.size() > 0);
- }
+ QList<int> avail = device->supportedChannels();
+ QVERIFY(avail.size() > 0);
}
void tst_QAudioDeviceInfo::sampleSizes()
{
- if (available) {
- QList<int> avail = device->supportedSampleSizes();
- QVERIFY(avail.size() > 0);
- }
+ QList<int> avail = device->supportedSampleSizes();
+ QVERIFY(avail.size() > 0);
}
void tst_QAudioDeviceInfo::byteOrders()
{
- if (available) {
- QList<QAudioFormat::Endian> avail = device->supportedByteOrders();
- QVERIFY(avail.size() > 0);
- }
+ QList<QAudioFormat::Endian> avail = device->supportedByteOrders();
+ QVERIFY(avail.size() > 0);
}
void tst_QAudioDeviceInfo::sampleTypes()
{
- if (available) {
- QList<QAudioFormat::SampleType> avail = device->supportedSampleTypes();
- QVERIFY(avail.size() > 0);
- }
+ QList<QAudioFormat::SampleType> avail = device->supportedSampleTypes();
+ QVERIFY(avail.size() > 0);
}
void tst_QAudioDeviceInfo::frequencies()
{
- if (available) {
- QList<int> avail = device->supportedFrequencies();
- QVERIFY(avail.size() > 0);
- }
+ QList<int> avail = device->supportedFrequencies();
+ QVERIFY(avail.size() > 0);
}
void tst_QAudioDeviceInfo::isFormatSupported()
{
- if (available) {
- QAudioFormat format;
- format.setFrequency(44100);
- format.setChannels(2);
- format.setSampleType(QAudioFormat::SignedInt);
- format.setByteOrder(QAudioFormat::LittleEndian);
- format.setSampleSize(16);
- format.setCodec("audio/pcm");
-
- // Should always be true for these format
- QVERIFY(device->isFormatSupported(format));
- }
+ QAudioFormat format;
+ format.setFrequency(44100);
+ format.setChannels(2);
+ format.setSampleType(QAudioFormat::SignedInt);
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleSize(16);
+ format.setCodec("audio/pcm");
+
+ // Should always be true for these format
+ QVERIFY(device->isFormatSupported(format));
}
void tst_QAudioDeviceInfo::preferred()
{
- if (available) {
- QAudioFormat format = device->preferredFormat();
- QVERIFY(format.isValid());
- }
+ QAudioFormat format = device->preferredFormat();
+ QVERIFY(format.isValid());
+ QVERIFY(device->isFormatSupported(format));
+ QVERIFY(device->nearestFormat(format) == format);
}
// Returns closest QAudioFormat to settings that system audio supports.
void tst_QAudioDeviceInfo::nearest()
{
- if (available) {
- /*
- QAudioFormat format1, format2;
- format1.setFrequency(8000);
- format2 = device->nearestFormat(format1);
- QVERIFY(format2.frequency() == 44100);
- */
- QAudioFormat format;
- format.setFrequency(44100);
- format.setChannels(2);
- format.setSampleType(QAudioFormat::SignedInt);
- format.setByteOrder(QAudioFormat::LittleEndian);
- format.setSampleSize(16);
- format.setCodec("audio/pcm");
-
- QAudioFormat format2 = device->nearestFormat(format);
-
- // This is definitely dependent on platform support (but isFormatSupported tests that above)
- QVERIFY(format2.frequency() == 44100);
- }
+ /*
+ QAudioFormat format1, format2;
+ format1.setFrequency(8000);
+ format2 = device->nearestFormat(format1);
+ QVERIFY(format2.frequency() == 44100);
+ */
+ QAudioFormat format;
+ format.setFrequency(44100);
+ format.setChannels(2);
+ format.setSampleType(QAudioFormat::SignedInt);
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleSize(16);
+ format.setCodec("audio/pcm");
+
+ QAudioFormat format2 = device->nearestFormat(format);
+
+ // This is definitely dependent on platform support (but isFormatSupported tests that above)
+ QVERIFY(format2.frequency() == 44100);
}
// Returns a list of supported channel counts.
void tst_QAudioDeviceInfo::supportedChannelCounts()
{
- if (available) {
- QList<int> avail = device->supportedChannelCounts();
- QVERIFY(avail.size() > 0);
- }
+ QList<int> avail = device->supportedChannelCounts();
+ QVERIFY(avail.size() > 0);
}
// Returns a list of supported sample rates.
void tst_QAudioDeviceInfo::supportedSampleRates()
{
- if (available) {
- QList<int> avail = device->supportedSampleRates();
- QVERIFY(avail.size() > 0);
- }
+ QList<int> avail = device->supportedSampleRates();
+ QVERIFY(avail.size() > 0);
}
// QAudioDeviceInfo's assignOperator method
@@ -245,23 +206,19 @@ void tst_QAudioDeviceInfo::assignOperator()
QVERIFY(dev.deviceName() == NULL);
QVERIFY(dev.isNull() == true);
- if (available) {
- QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
- QVERIFY(devices.size() > 0);
- QAudioDeviceInfo dev1(devices.at(0));
- dev = dev1;
- QVERIFY(dev.isNull() == false);
- QVERIFY(dev.deviceName() == dev1.deviceName());
- }
+ QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
+ QVERIFY(devices.size() > 0);
+ QAudioDeviceInfo dev1(devices.at(0));
+ dev = dev1;
+ QVERIFY(dev.isNull() == false);
+ QVERIFY(dev.deviceName() == dev1.deviceName());
}
// Returns human readable name of audio device
void tst_QAudioDeviceInfo::deviceName()
{
- if (available) {
- QVERIFY(device->deviceName() != NULL);
- QVERIFY(device->deviceName() == QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).at(0).deviceName());
- }
+ QVERIFY(device->deviceName() != NULL);
+ QVERIFY(device->deviceName() == QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).at(0).deviceName());
}
// QAudioDeviceInfo's defaultConstructor method
@@ -272,6 +229,32 @@ void tst_QAudioDeviceInfo::defaultConstructor()
QVERIFY(dev.deviceName() == NULL);
}
+void tst_QAudioDeviceInfo::equalityOperator()
+{
+ // Get some default device infos
+ QAudioDeviceInfo dev1;
+ QAudioDeviceInfo dev2;
+
+ QVERIFY(dev1 == dev2);
+ QVERIFY(!(dev1 != dev2));
+
+ // Make sure each available device is not equal to null
+ foreach (const QAudioDeviceInfo info, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) {
+ QVERIFY(dev1 != info);
+ QVERIFY(!(dev1 == info));
+
+ dev2 = info;
+
+ QVERIFY(dev2 == info);
+ QVERIFY(!(dev2 != info));
+
+ QVERIFY(dev1 != dev2);
+ QVERIFY(!(dev1 == dev2));
+ }
+
+ // XXX Perhaps each available device should not be equal to any other
+}
+
QTEST_MAIN(tst_QAudioDeviceInfo)
#include "tst_qaudiodeviceinfo.moc"