IVGCVSW-5280 Switch tests/InferenceTest and derived tests over to cxxopts

* refactor AddCommandLineOptions() functions to allow checking of required options
* add CxxoptsUtils.hpp file for convenience functions
!referencetests:268500

Signed-off-by: James Ward <james.ward@arm.com>
Change-Id: Ica954b210b2981b7cd10995f0d75fcb2a2f7b443
diff --git a/tests/CxxoptsUtils.hpp b/tests/CxxoptsUtils.hpp
new file mode 100644
index 0000000..518fc1b
--- /dev/null
+++ b/tests/CxxoptsUtils.hpp
@@ -0,0 +1,27 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <cxxopts/cxxopts.hpp>
+
+/**
+ * Ensure all mandatory command-line parameters have been passed to cxxopts.
+ * @param result returned from the cxxopts parse(argc, argv) call
+ * @param required vector of strings listing the mandatory parameters to be input from the command-line
+ * @return boolean value - true if all required parameters satisfied, false otherwise
+ * */
+inline bool CheckRequiredOptions(const cxxopts::ParseResult& result, const std::vector<std::string>& required)
+{
+    for(const std::string& str : required)
+    {
+        if(result.count(str) == 0)
+        {
+            std::cerr << "--" << str << " parameter is mandatory" << std::endl;
+            return false;
+        }
+    }
+    return true;
+}