JsonSerializer: Add tests for sorting and non-unique keys

Bug: angleproject:5853
Change-Id: I85e64900a58a2706087b71769470bb33fb4e8522
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824434
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/serializer/JsonSerializer_unittest.cpp b/src/libANGLE/serializer/JsonSerializer_unittest.cpp
index eba84b6..6d5601c 100644
--- a/src/libANGLE/serializer/JsonSerializer_unittest.cpp
+++ b/src/libANGLE/serializer/JsonSerializer_unittest.cpp
@@ -139,7 +139,6 @@
     std::vector<int> v = {0, 1, -1};
 
     js.addVectorAsHash("test2", v);
-
     const std::string expect =
         R"({
     "context": {
@@ -149,19 +148,49 @@
     check(expect);
 }
 
+// Test unsorted input gets sorted
+TEST_F(JsonSerializerTest, SortValues1)
+{
+    js.addScalar("b", 1.0);
+    js.addScalar("a", 2.0);
+    const std::string expect =
+        R"({
+    "context": {
+        "a": 2.0,
+        "b": 1.0
+    }
+})";
+    check(expect);
+}
+
 // Test writing one vector of short integer values
 TEST_F(JsonSerializerTest, ShortVectorAsBlobValue)
 {
     std::vector<short> v = {0, 1, -1};
 
     js.addVectorAsHash("test2", v);
-
     const std::string expect =
         R"({
     "context": {
         "test2": "SHA1:0BA7C0DE700CE0F8018D084B8CF447B150A9465D"
     }
 })";
+    check(expect);
+}
+
+// Test adding the same key twice
+TEST_F(JsonSerializerTest, KeyUsedTwice)
+{
+    js.addScalar("a", 1.0);
+    js.addScalar("a", 1.0);
+
+    const std::string expect =
+        R"({
+    "context": {
+        "a": 1.0,
+        "a": 1.0
+    }
+})";
 
     check(expect);
 }