Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: third_party/protobuf/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs

Issue 1983203003: Update third_party/protobuf to protobuf-v3.0.0-beta-3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: owners Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #region Copyright notice and license 1 #region Copyright notice and license
2 // Protocol Buffers - Google's data interchange format 2 // Protocol Buffers - Google's data interchange format
3 // Copyright 2015 Google Inc. All rights reserved. 3 // Copyright 2015 Google Inc. All rights reserved.
4 // https://developers.google.com/protocol-buffers/ 4 // https://developers.google.com/protocol-buffers/
5 // 5 //
6 // Redistribution and use in source and binary forms, with or without 6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are 7 // modification, are permitted provided that the following conditions are
8 // met: 8 // met:
9 // 9 //
10 // * Redistributions of source code must retain the above copyright 10 // * Redistributions of source code must retain the above copyright
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 public void Clone_ClonesMessages() 49 public void Clone_ClonesMessages()
50 { 50 {
51 var message = new ForeignMessage { C = 20 }; 51 var message = new ForeignMessage { C = 20 };
52 var map = new MapField<string, ForeignMessage> { { "x", message } }; 52 var map = new MapField<string, ForeignMessage> { { "x", message } };
53 var clone = map.Clone(); 53 var clone = map.Clone();
54 map["x"].C = 30; 54 map["x"].C = 30;
55 Assert.AreEqual(20, clone["x"].C); 55 Assert.AreEqual(20, clone["x"].C);
56 } 56 }
57 57
58 [Test] 58 [Test]
59 public void NullValues() 59 public void NullValuesProhibited()
60 { 60 {
61 TestNullValues<int?>(0); 61 TestNullValues<int?>(0);
62 TestNullValues(""); 62 TestNullValues("");
63 TestNullValues(new TestAllTypes()); 63 TestNullValues(new TestAllTypes());
64 } 64 }
65 65
66 private void TestNullValues<T>(T nonNullValue) 66 private void TestNullValues<T>(T nonNullValue)
67 { 67 {
68 var map = new MapField<int, T>(false); 68 var map = new MapField<int, T>();
69 var nullValue = (T) (object) null; 69 var nullValue = (T) (object) null;
70 Assert.Throws<ArgumentNullException>(() => map.Add(0, nullValue)); 70 Assert.Throws<ArgumentNullException>(() => map.Add(0, nullValue));
71 Assert.Throws<ArgumentNullException>(() => map[0] = nullValue); 71 Assert.Throws<ArgumentNullException>(() => map[0] = nullValue);
72 map.Add(1, nonNullValue); 72 map.Add(1, nonNullValue);
73 map[1] = nonNullValue; 73 map[1] = nonNullValue;
74
75 // Doesn't throw...
76 map = new MapField<int, T>(true);
77 map.Add(0, nullValue);
78 map[0] = nullValue;
79 map.Add(1, nonNullValue);
80 map[1] = nonNullValue;
81 } 74 }
82 75
83 [Test] 76 [Test]
84 public void Add_ForbidsNullKeys() 77 public void Add_ForbidsNullKeys()
85 { 78 {
86 var map = new MapField<string, ForeignMessage>(); 79 var map = new MapField<string, ForeignMessage>();
87 Assert.Throws<ArgumentNullException>(() => map.Add(null, new Foreign Message())); 80 Assert.Throws<ArgumentNullException>(() => map.Add(null, new Foreign Message()));
88 } 81 }
89 82
90 [Test] 83 [Test]
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 map1.Add("b", "second value"); 147 map1.Add("b", "second value");
155 148
156 var map2 = new MapField<string, string>(); 149 var map2 = new MapField<string, string>();
157 map2.Add("a", "third value"); 150 map2.Add("a", "third value");
158 map2.Add("b", "fourth value"); 151 map2.Add("b", "fourth value");
159 152
160 EqualityTester.AssertInequality(map1, map2); 153 EqualityTester.AssertInequality(map1, map2);
161 } 154 }
162 155
163 [Test] 156 [Test]
164 public void EqualityHandlesNullValues()
165 {
166 var map1 = new MapField<string, ForeignMessage>();
167 map1.Add("a", new ForeignMessage { C = 10 });
168 map1.Add("b", null);
169
170 var map2 = new MapField<string, ForeignMessage>();
171 map2.Add("a", new ForeignMessage { C = 10 });
172 map2.Add("b", null);
173
174 EqualityTester.AssertEquality(map1, map2);
175 // Check the null value isn't ignored entirely...
176 Assert.IsTrue(map1.Remove("b"));
177 EqualityTester.AssertInequality(map1, map2);
178 map1.Add("b", new ForeignMessage());
179 EqualityTester.AssertInequality(map1, map2);
180 map1["b"] = null;
181 EqualityTester.AssertEquality(map1, map2);
182 }
183
184 [Test]
185 public void Add_Dictionary() 157 public void Add_Dictionary()
186 { 158 {
187 var map1 = new MapField<string, string> 159 var map1 = new MapField<string, string>
188 { 160 {
189 { "x", "y" }, 161 { "x", "y" },
190 { "a", "b" } 162 { "a", "b" }
191 }; 163 };
192 var map2 = new MapField<string, string> 164 var map2 = new MapField<string, string>
193 { 165 {
194 { "before", "" }, 166 { "before", "" },
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 Assert.AreEqual("b", map["a"]); 419 Assert.AreEqual("b", map["a"]);
448 map["a"] = "c"; 420 map["a"] = "c";
449 Assert.AreEqual("c", map["a"]); 421 Assert.AreEqual("c", map["a"]);
450 Assert.Throws<InvalidCastException>(() => dictionary[5] = "x"); 422 Assert.Throws<InvalidCastException>(() => dictionary[5] = "x");
451 Assert.Throws<InvalidCastException>(() => dictionary["x"] = 5); 423 Assert.Throws<InvalidCastException>(() => dictionary["x"] = 5);
452 Assert.Throws<ArgumentNullException>(() => dictionary[null] = "z"); 424 Assert.Throws<ArgumentNullException>(() => dictionary[null] = "z");
453 Assert.Throws<ArgumentNullException>(() => dictionary["x"] = null); 425 Assert.Throws<ArgumentNullException>(() => dictionary["x"] = null);
454 } 426 }
455 427
456 [Test] 428 [Test]
457 public void AllowNullValues_Property()
458 {
459 // Non-message reference type values are non-nullable by default, bu t can be overridden
460 Assert.IsFalse(new MapField<int, string>().AllowsNullValues);
461 Assert.IsFalse(new MapField<int, string>(false).AllowsNullValues);
462 Assert.IsTrue(new MapField<int, string>(true).AllowsNullValues);
463
464 // Non-nullable value type values are never nullable
465 Assert.IsFalse(new MapField<int, int>().AllowsNullValues);
466 Assert.IsFalse(new MapField<int, int>(false).AllowsNullValues);
467 Assert.Throws<ArgumentException>(() => new MapField<int, int>(true)) ;
468
469 // Message type values are nullable by default, but can be overridde n
470 Assert.IsTrue(new MapField<int, TestAllTypes>().AllowsNullValues);
471 Assert.IsFalse(new MapField<int, TestAllTypes>(false).AllowsNullValu es);
472 Assert.IsTrue(new MapField<int, TestAllTypes>(true).AllowsNullValues );
473
474 // Nullable value type values are nullable by default, but can be ov erridden
475 Assert.IsTrue(new MapField<int, int?>().AllowsNullValues);
476 Assert.IsFalse(new MapField<int, int?>(false).AllowsNullValues);
477 Assert.IsTrue(new MapField<int, int?>(true).AllowsNullValues);
478 }
479
480 [Test]
481 public void KeysReturnsLiveView() 429 public void KeysReturnsLiveView()
482 { 430 {
483 var map = new MapField<string, string>(); 431 var map = new MapField<string, string>();
484 var keys = map.Keys; 432 var keys = map.Keys;
485 CollectionAssert.AreEqual(new string[0], keys); 433 CollectionAssert.AreEqual(new string[0], keys);
486 map["foo"] = "bar"; 434 map["foo"] = "bar";
487 map["x"] = "y"; 435 map["x"] = "y";
488 CollectionAssert.AreEqual(new[] { "foo", "x" }, keys); 436 CollectionAssert.AreEqual(new[] { "foo", "x" }, keys);
489 } 437 }
490 438
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 var map = new MapField<byte, string> { { 10, "foo" } }; 523 var map = new MapField<byte, string> { { 10, "foo" } };
576 Assert.Throws<ArgumentException>(() => map.ToString()); 524 Assert.Throws<ArgumentException>(() => map.ToString());
577 } 525 }
578 526
579 private static KeyValuePair<TKey, TValue> NewKeyValuePair<TKey, TValue>( TKey key, TValue value) 527 private static KeyValuePair<TKey, TValue> NewKeyValuePair<TKey, TValue>( TKey key, TValue value)
580 { 528 {
581 return new KeyValuePair<TKey, TValue>(key, value); 529 return new KeyValuePair<TKey, TValue>(key, value);
582 } 530 }
583 } 531 }
584 } 532 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698