summaryrefslogtreecommitdiff
path: root/tests/apinames.cpp
diff options
context:
space:
mode:
authorJP Cimalando <jp-dev@inbox.ru>2018-05-07 17:30:27 +0200
committerJP Cimalando <jp-dev@inbox.ru>2018-05-07 19:20:23 +0200
commitf7b624ba819036b9ebfb3f4d0517fd45e01919b2 (patch)
tree5f31ce4d7ec0b8f6c90a85a3de0e533691d94104 /tests/apinames.cpp
parent4a7ca4f1d42fff04eb085d85a3b298df2c937a34 (diff)
API names, and conversion from/to API identifier
Diffstat (limited to 'tests/apinames.cpp')
-rw-r--r--tests/apinames.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/apinames.cpp b/tests/apinames.cpp
new file mode 100644
index 0000000..b915ad0
--- /dev/null
+++ b/tests/apinames.cpp
@@ -0,0 +1,75 @@
+/******************************************/
+/*
+ apinames.cpp
+ by Jean Pierre Cimalando, 2018.
+
+ This program tests parts of RtAudio related
+ to API names, the conversion from name to API
+ and vice-versa.
+*/
+/******************************************/
+
+#include "RtAudio.h"
+#include <cstdlib>
+#include <cctype>
+#include <iostream>
+
+int main() {
+ std::vector<RtAudio::Api> apis;
+ RtAudio::getCompiledApi( apis );
+
+ // ensure the known APIs return valid names
+ std::cout << "API names by identifier:\n";
+ for ( size_t i = 0; i < apis.size() ; ++i ) {
+ const std::string &name = RtAudio::getCompiledApiName(apis[i]);
+ if (name.empty()) {
+ std::cerr << "Invalid name for API " << (int)apis[i] << "\n";
+ exit(1);
+ }
+ std::cout << "* " << (int)apis[i] << ": '" << name << "'\n";
+ }
+
+ // ensure unknown APIs return the empty string
+ {
+ const std::string &name = RtAudio::getCompiledApiName((RtAudio::Api)-1);
+ if (!name.empty()) {
+ std::cerr << "Bad string for invalid API\n";
+ exit(1);
+ }
+ }
+
+ // try getting API identifier by case-insensitive name
+ std::cout << "API identifiers by name:\n";
+ for ( size_t i = 0; i < apis.size() ; ++i ) {
+ std::string name = RtAudio::getCompiledApiName(apis[i]);
+ if ( RtAudio::getCompiledApiByName(name) != apis[i] ) {
+ std::cerr << "Bad identifier for API '" << name << "'\n";
+ exit( 1 );
+ }
+ std::cout << "* '" << name << "': " << (int)apis[i] << "\n";
+ for ( size_t j = 0; j < name.size(); ++j )
+ name[j] = (j & 1) ? toupper(name[j]) : tolower(name[j]);
+ if ( RtAudio::getCompiledApiByName(name) != apis[i] ) {
+ std::cerr << "Bad identifier for API '" << name << "'\n";
+ exit( 1 );
+ }
+ std::cout << "* '" << name << "': " << (int)apis[i] << "\n";
+ }
+
+ // try getting an API identifier by unknown name
+ {
+ RtAudio::Api api;
+ api = RtAudio::getCompiledApiByName("ALSO");
+ if ( api != RtAudio::UNSPECIFIED ) {
+ std::cerr << "Bad identifier for unknown API name\n";
+ exit( 1 );
+ }
+ api = RtAudio::getCompiledApiByName("");
+ if ( api != RtAudio::UNSPECIFIED ) {
+ std::cerr << "Bad identifier for unknown API name\n";
+ exit( 1 );
+ }
+ }
+
+ return 0;
+}