Change most test fixtures to use parameterized fixtures

Most of the unittests should be tested against all available languages.
Changing to parameterized test fixtures allow us to reduce lines of code
and increase coverage.

Changed the AidlTest::Parse method to set the language with --language
instead of using different binaries(aidl vs aidl-cpp). It would not work for NDK
previously.

Test: atest aidl_unittests aidl_integration_test
Change-Id: I9f47c096af7dfc0f3cac7ed9ae542c3295f08ea1
diff --git a/options.cpp b/options.cpp
index e42d69d..0bcc4f2 100644
--- a/options.cpp
+++ b/options.cpp
@@ -27,6 +27,7 @@
 #include <string>
 
 #include <android-base/strings.h>
+#include "aidl_language.h"
 
 using android::base::Split;
 using android::base::Trim;
@@ -140,6 +141,22 @@
   return sstr.str();
 }
 
+const string Options::LanguageToString(Language language) {
+  switch (language) {
+    case Options::Language::CPP:
+      return "cpp";
+    case Options::Language::JAVA:
+      return "java";
+    case Options::Language::NDK:
+      return "ndk";
+    case Options::Language::UNSPECIFIED:
+      return "unspecified";
+    default:
+      AIDL_FATAL(AIDL_LOCATION_HERE)
+          << "Unexpected Options::Language enumerator: " << static_cast<size_t>(language);
+  }
+}
+
 bool Options::StabilityFromString(const std::string& stability, Stability* out_stability) {
   if (stability == "vintf") {
     *out_stability = Stability::VINTF;