1 // 2 // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 #include "gles_conformance_tests.h" 8 9 #include "gtest/gtest.h" 10 11 #include <EGL/egl.h> 12 #include <EGL/eglext.h> 13 14 #include <map> 15 #include <string> 16 #include <vector> 17 18 #define CONFORMANCE_TESTS_ES2 2 19 #define CONFORMANCE_TESTS_ES3 3 20 21 int main(int argc, char** argv) 22 { 23 testing::InitGoogleTest(&argc, argv); 24 25 typedef std::pair<std::string, EGLNativeDisplayType> NameDisplayTypePair; 26 typedef std::map<std::string, EGLNativeDisplayType> DisplayTypeMap; 27 DisplayTypeMap allDisplays; 28 29 #if CONFORMANCE_TESTS_TYPE == CONFORMANCE_TESTS_ES2 30 allDisplays["d3d9"] = EGL_DEFAULT_DISPLAY; 31 allDisplays["d3d11"] = EGL_D3D11_ONLY_DISPLAY_ANGLE; 32 #elif CONFORMANCE_TESTS_TYPE == CONFORMANCE_TESTS_ES3 33 allDisplays["d3d11"] = EGL_D3D11_ONLY_DISPLAY_ANGLE; 34 #else 35 # error "Unknown CONFORMANCE_TESTS_TYPE" 36 #endif 37 38 // Iterate through the command line arguments and check if they are config names 39 std::vector<NameDisplayTypePair> requestedDisplays; 40 for (size_t i = 1; i < static_cast<size_t>(argc); i++) 41 { 42 DisplayTypeMap::const_iterator iter = allDisplays.find(argv[i]); 43 if (iter != allDisplays.end()) 44 { 45 requestedDisplays.push_back(*iter); 46 } 47 } 48 49 // If no configs were requested, run them all 50 if (requestedDisplays.empty()) 51 { 52 for (DisplayTypeMap::const_iterator i = allDisplays.begin(); i != allDisplays.end(); i++) 53 { 54 requestedDisplays.push_back(*i); 55 } 56 } 57 58 // Run each requested config 59 int rt = 0; 60 for (size_t i = 0; i < requestedDisplays.size(); i++) 61 { 62 ConformanceConfig config = { 64, 64, requestedDisplays[i].second }; 63 SetCurrentConfig(config); 64 65 std::cout << "Running test configuration \"" << requestedDisplays[i].first << "\".\n"; 66 67 rt |= RUN_ALL_TESTS(); 68 } 69 70 return rt; 71 } 72