#region Copyright notice and license
#endregion
using Google.Protobuf.Reflection;
using NUnit.Framework;
using System;
using System.Linq;
namespace Google.Protobuf.Test.Reflection;
public class FeatureSetDescriptorTest
{
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) .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);
}
}