using System.Text; using BenchmarkDotNet.Attributes; using Tui = Terminal.Gui; namespace Terminal.Gui.Benchmarks.Text.RuneExtensions; /// /// Benchmarks for performance fine-tuning. /// [MemoryDiagnoser] [BenchmarkCategory (nameof (Tui.RuneExtensions))] public class EncodeSurrogatePair { /// /// Benchmark for current implementation. /// [Benchmark (Baseline = true)] [ArgumentsSource (nameof (DataSource))] public Rune Current (char highSurrogate, char lowSurrogate) { _ = Tui.RuneExtensions.EncodeSurrogatePair (highSurrogate, lowSurrogate, out Rune rune); return rune; } public static IEnumerable DataSource () { string[] runeStrings = ["🍕", "🧠", "🌹"]; foreach (string symbol in runeStrings) { if (symbol is [char high, char low]) { yield return [high, low]; } } } }