| #region Copyright notice and license |
| // Protocol Buffers - Google's data interchange format |
| // Copyright 2008 Google Inc. All rights reserved. |
| // |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file or at |
| // https://developers.google.com/open-source/licenses/bsd |
| #endregion |
| |
| using Google.Protobuf.Reflection; |
| using NUnit.Framework; |
| using System; |
| using System.Linq; |
| |
| namespace Google.Protobuf.Test.Reflection; |
| |
| public class FeatureSetDescriptorTest |
| { |
| // Canonical serialized form of the edition defaults, generated by embed_edition_defaults. |
| // TODO: Update this automatically. |
| private const string DefaultsBase64 = |
| "ChMY5gciDAgBEAIYAiADKAEwAioAChMY5wciDAgCEAEYASACKAEwASoAChMY6AciDAgBEAEYASACKAEwASoAIOYHKOgH"; |
| |
| [Test] |
| [TestCase(Edition.Proto2)] |
| [TestCase(Edition.Proto3)] |
| [TestCase(Edition._2023)] |
| public void DefaultsMatchCanonicalSerializedForm(Edition edition) |
| { |
| var canonicalDefaults = FeatureSetDefaults.Parser |
| .WithDiscardUnknownFields(true) // Discard language-specific extensions. |
| .ParseFrom(Convert.FromBase64String(DefaultsBase64)); |
| var canonicalEditionDefaults = new FeatureSet(); |
| canonicalEditionDefaults.MergeFrom( |
| canonicalDefaults.Defaults.Single(def => def.Edition == edition).FixedFeatures); |
| canonicalEditionDefaults.MergeFrom( |
| canonicalDefaults.Defaults.Single(def => def.Edition == edition).OverridableFeatures); |
| var candidateEditionDefaults = FeatureSetDescriptor.GetEditionDefaults(edition).Proto; |
| |
| Assert.AreEqual(canonicalEditionDefaults, candidateEditionDefaults); |
| } |
| } |