Use named value-parameterized tests for angle_end2end_tests

This replace the non-descriptive digit at the end of the test name by
the name of the configuration being tested.

Reland with a fix for gtest initialization on Windows caused by
ProgramBinaryTest having the same parameter name twice.

BUG=angleproject:1153

Change-Id: I9b0f661a535b760793d9d87ef0c8298f6b83830d
Reviewed-on: https://chromium-review.googlesource.com/297701
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/tests/gl_tests/ProgramBinaryTest.cpp b/src/tests/gl_tests/ProgramBinaryTest.cpp
index 8f950f1..0d52dc1 100644
--- a/src/tests/gl_tests/ProgramBinaryTest.cpp
+++ b/src/tests/gl_tests/ProgramBinaryTest.cpp
@@ -185,6 +185,18 @@
     bool expectedLinkResult;
 };
 
+// Provide a custom gtest parameter name function for PlatformsWithLinkResult
+// to avoid returning the same parameter name twice. Such a conflict would happen
+// between ES2_D3D11_to_ES2D3D11 and ES2_D3D11_to_ES3D3D11 as they were both
+// named ES2_D3D11
+std::ostream &operator<<(std::ostream& stream, const PlatformsWithLinkResult &platform)
+{
+    const PlatformParameters &platform1 = platform;
+    const PlatformParameters &platform2 = platform.loadParams;
+    stream << platform1 << "_to_" << platform2;
+    return stream;
+}
+
 class ProgramBinariesAcrossPlatforms : public testing::TestWithParam<PlatformsWithLinkResult>
 {
   public: