1 #region Copyright notice and license 2 3 // Protocol Buffers - Google's data interchange format 4 // Copyright 2008 Google Inc. All rights reserved. 5 // 6 // Use of this source code is governed by a BSD-style 7 // license that can be found in the LICENSE file or at 8 // https://developers.google.com/open-source/licenses/bsd 9 10 #endregion 11 12 using Google.Protobuf.Reflection; 13 using NUnit.Framework; 14 15 // For WrapInQuotes 16 17 namespace Google.Protobuf 18 { 19 public class JsonFormatterSettingsTest 20 { 21 [Test] WithIndentation()22 public void WithIndentation() 23 { 24 var settings = JsonFormatter.Settings.Default.WithIndentation("\t"); 25 Assert.AreEqual("\t", settings.Indentation); 26 } 27 28 [Test] WithTypeRegistry()29 public void WithTypeRegistry() 30 { 31 var typeRegistry = TypeRegistry.Empty; 32 var settings = JsonFormatter.Settings.Default.WithTypeRegistry(typeRegistry); 33 Assert.AreEqual(typeRegistry, settings.TypeRegistry); 34 } 35 36 [Test] WithFormatDefaultValues()37 public void WithFormatDefaultValues() 38 { 39 var settingsWith = JsonFormatter.Settings.Default.WithFormatDefaultValues(true); 40 Assert.AreEqual(true, settingsWith.FormatDefaultValues); 41 42 var settingsWithout = JsonFormatter.Settings.Default.WithFormatDefaultValues(false); 43 Assert.AreEqual(false, settingsWithout.FormatDefaultValues); 44 } 45 46 [Test] WithFormatEnumsAsIntegers()47 public void WithFormatEnumsAsIntegers() 48 { 49 var settingsWith = JsonFormatter.Settings.Default.WithFormatEnumsAsIntegers(true); 50 Assert.AreEqual(true, settingsWith.FormatEnumsAsIntegers); 51 52 var settingsWithout = JsonFormatter.Settings.Default.WithFormatEnumsAsIntegers(false); 53 Assert.AreEqual(false, settingsWithout.FormatEnumsAsIntegers); 54 } 55 56 [Test] WithMethodsPreserveExistingSettings()57 public void WithMethodsPreserveExistingSettings() 58 { 59 var typeRegistry = TypeRegistry.Empty; 60 var baseSettings = JsonFormatter.Settings.Default 61 .WithIndentation("\t") 62 .WithFormatDefaultValues(true) 63 .WithFormatEnumsAsIntegers(true) 64 .WithTypeRegistry(typeRegistry) 65 .WithPreserveProtoFieldNames(true); 66 67 var settings1 = baseSettings.WithIndentation("\t"); 68 var settings2 = baseSettings.WithFormatDefaultValues(true); 69 var settings3 = baseSettings.WithFormatEnumsAsIntegers(true); 70 var settings4 = baseSettings.WithTypeRegistry(typeRegistry); 71 var settings5 = baseSettings.WithPreserveProtoFieldNames(true); 72 73 AssertAreEqual(baseSettings, settings1); 74 AssertAreEqual(baseSettings, settings2); 75 AssertAreEqual(baseSettings, settings3); 76 AssertAreEqual(baseSettings, settings4); 77 AssertAreEqual(baseSettings, settings5); 78 } 79 AssertAreEqual(JsonFormatter.Settings settings, JsonFormatter.Settings other)80 private static void AssertAreEqual(JsonFormatter.Settings settings, JsonFormatter.Settings other) 81 { 82 Assert.AreEqual(settings.Indentation, other.Indentation); 83 Assert.AreEqual(settings.FormatDefaultValues, other.FormatDefaultValues); 84 Assert.AreEqual(settings.FormatEnumsAsIntegers, other.FormatEnumsAsIntegers); 85 Assert.AreEqual(settings.TypeRegistry, other.TypeRegistry); 86 } 87 } 88 } 89