blob: 50d29c6c7f84c4e07cd10ce8f6354d369e900200 [file] [log] [blame]
#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);
}
}