From e0cbf8c84d99890772a30a52fc894edb41a13d96 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 10 Oct 2024 14:03:42 +0200 Subject: [PATCH] Updates emoji maps --- Tests/FrameworkTests/FrameworkTests.csproj | 1 + Tests/FrameworkTests/Utils/EmojiMapsTests.cs | 28 +++++ Tools/TestNetRewarder/EmojiMaps.cs | 102 ++++++++++++------- Tools/TestNetRewarder/EventsFormatter.cs | 30 +++--- 4 files changed, 111 insertions(+), 50 deletions(-) create mode 100644 Tests/FrameworkTests/Utils/EmojiMapsTests.cs diff --git a/Tests/FrameworkTests/FrameworkTests.csproj b/Tests/FrameworkTests/FrameworkTests.csproj index 80c811eb..3f34256d 100644 --- a/Tests/FrameworkTests/FrameworkTests.csproj +++ b/Tests/FrameworkTests/FrameworkTests.csproj @@ -18,6 +18,7 @@ + diff --git a/Tests/FrameworkTests/Utils/EmojiMapsTests.cs b/Tests/FrameworkTests/Utils/EmojiMapsTests.cs new file mode 100644 index 00000000..93bc7f6b --- /dev/null +++ b/Tests/FrameworkTests/Utils/EmojiMapsTests.cs @@ -0,0 +1,28 @@ +ο»Ώusing NUnit.Framework; +using System.Text; +using TestNetRewarder; + +namespace FrameworkTests.Utils +{ + [TestFixture] + public class EmojiMapsTests + { + private readonly Random random = new Random(); + private readonly EmojiMaps maps = new EmojiMaps(); + + [Test] + public void GeneratesConsistentStrings( + [Values(1, 5, 10, 20)] int inputLength, + [Values(1, 2, 3, 5)] int outLength) + { + var buffer = new byte[inputLength]; + random.NextBytes(buffer); + var input = Encoding.ASCII.GetString(buffer); + + var out1 = maps.StringToEmojis(input, outLength); + var out2 = maps.StringToEmojis(input, outLength); + + Assert.That(out1, Is.EqualTo(out2)); + } + } +} diff --git a/Tools/TestNetRewarder/EmojiMaps.cs b/Tools/TestNetRewarder/EmojiMaps.cs index e5160219..dc2f1ab1 100644 --- a/Tools/TestNetRewarder/EmojiMaps.cs +++ b/Tools/TestNetRewarder/EmojiMaps.cs @@ -4,50 +4,80 @@ namespace TestNetRewarder { public class EmojiMaps { - private readonly string[] create = new[] + private readonly string[] emojis = new[] { + // yellow + "πŸ˜€", + "🌻", + "πŸ‹", + "πŸ§€", + "πŸŒ”", + "⭐", + "⚑", + "πŸ†", + // red + "πŸ’˜", + "🦞", + "🌹", + "πŸ’", + "πŸ«–", // teapot + "β›©", + "πŸš—", + "πŸ”₯", + // green + "🐊", + "🦎", + "πŸ›", + "🌳", + "πŸ€", + "🧩", + "πŸ”‹", + "β™»", + // blue + "πŸ’™", + "🐳", "🐟", - "πŸ”΅", - "🟦" // blue square - }; - private readonly string[] positive = new[] - { - "🟒", // green circle - "🟩" // green square - }; - private readonly string[] surprise = new[] - { - "🧐", - "🀨", - "🟑", // yellow circle - "🟨" // yellow square - }; - private readonly string[] negative = new[] - { - "β›”", - "🚫", - "πŸ”΄", - "πŸŸ₯" // red square + "πŸ‰", + "🧊", + "🌐", + "βš“", + "πŸŒ€", }; - public string GetCreate() + public string NewRequest => "🐟"; + public string Started => "🦈"; + public string SlotFilled => "🟒"; + public string SlotFreed => "β­•"; + public string SlotReservationsFull => "β˜‘οΈ"; + public string Finished => "βœ…"; + public string Cancelled => "🚫"; + public string Failed => "❌"; + + public string StringToEmojis(string input, int outLength) { - return RandomUtils.GetOneRandom(create); + if (outLength < 1) outLength = 1; + + var result = ""; + var segmentLength = input.Length / outLength; + if (segmentLength < 1) + { + return StringToEmojis(input + input, outLength); + } + for (var i = 0; i < outLength; i++) + { + var segment = input.Substring(i * segmentLength, segmentLength); + result += SelectOne(segment); + } + + return result; } - public string GetPositive() + private string SelectOne(string segment) { - return RandomUtils.GetOneRandom(positive); - } - - public string GetSurprise() - { - return RandomUtils.GetOneRandom(surprise); - } - - public string GetNegative() - { - return RandomUtils.GetOneRandom(negative); + var index = 0; + foreach (var c in segment) index += Convert.ToInt32(c); + index = index % emojis.Length; + return emojis[index]; } } } diff --git a/Tools/TestNetRewarder/EventsFormatter.cs b/Tools/TestNetRewarder/EventsFormatter.cs index e9a05ca2..43c8605e 100644 --- a/Tools/TestNetRewarder/EventsFormatter.cs +++ b/Tools/TestNetRewarder/EventsFormatter.cs @@ -28,7 +28,7 @@ namespace TestNetRewarder public void OnNewRequest(RequestEvent requestEvent) { var request = requestEvent.Request; - AddRequestBlock(requestEvent, $"{C} New Request", + AddRequestBlock(requestEvent, $"{emojiMaps.NewRequest} New Request", $"Client: {request.Client}", $"Content: {request.Request.Content.Cid}", $"Duration: {BigIntToDuration(request.Request.Ask.Duration)}", @@ -43,27 +43,27 @@ namespace TestNetRewarder public void OnRequestCancelled(RequestEvent requestEvent) { - AddRequestBlock(requestEvent, $"{N} Cancelled"); + AddRequestBlock(requestEvent, $"{emojiMaps.Cancelled} Cancelled"); } public void OnRequestFailed(RequestEvent requestEvent) { - AddRequestBlock(requestEvent, $"{N} Failed"); + AddRequestBlock(requestEvent, $"{emojiMaps.Failed} Failed"); } public void OnRequestFinished(RequestEvent requestEvent) { - AddRequestBlock(requestEvent, $"{P} Finished"); + AddRequestBlock(requestEvent, $"{emojiMaps.Finished} Finished"); } public void OnRequestFulfilled(RequestEvent requestEvent) { - AddRequestBlock(requestEvent, $"{P} Started"); + AddRequestBlock(requestEvent, $"{emojiMaps.Started} Started"); } public void OnSlotFilled(RequestEvent requestEvent, EthAddress host, BigInteger slotIndex) { - AddRequestBlock(requestEvent, $"{P} Slot Filled", + AddRequestBlock(requestEvent, $"{emojiMaps.SlotFilled} Slot Filled", $"Host: {host}", $"Slot Index: {slotIndex}" ); @@ -71,14 +71,14 @@ namespace TestNetRewarder public void OnSlotFreed(RequestEvent requestEvent, BigInteger slotIndex) { - AddRequestBlock(requestEvent, $"{S} Slot Freed", + AddRequestBlock(requestEvent, $"{emojiMaps.SlotFreed} Slot Freed", $"Slot Index: {slotIndex}" ); } public void OnSlotReservationsFull(RequestEvent requestEvent, BigInteger slotIndex) { - AddRequestBlock(requestEvent, $"{P} Slot Reservations Full", + AddRequestBlock(requestEvent, $"{emojiMaps.SlotReservationsFull} Slot Reservations Full", $"Slot Index: {slotIndex}" ); } @@ -86,7 +86,7 @@ namespace TestNetRewarder private void AddRequestBlock(RequestEvent requestEvent, string eventName, params string[] content) { var blockNumber = $"[{requestEvent.Block.BlockNumber} {FormatDateTime(requestEvent.Block.Utc)}]"; - var title = $"{blockNumber} **{eventName}** `{requestEvent.Request.Request.Id}`"; + var title = $"{blockNumber} **{eventName}** {FormatRequestId(requestEvent)}"; AddBlock(title, content); } @@ -121,6 +121,13 @@ namespace TestNetRewarder return utc.ToString("yyyy-MM-dd HH:mm:ss UTC", CultureInfo.InvariantCulture); } + private string FormatRequestId(RequestEvent requestEvent) + { + return + $"({emojiMaps.StringToEmojis(requestEvent.Request.Request.Id, 3)})" + + $"`{requestEvent.Request.Request.Id}`"; + } + private string BigIntToDuration(BigInteger big) { var span = TimeSpan.FromSeconds((int)big); @@ -138,10 +145,5 @@ namespace TestNetRewarder var tt = new TestToken(big); return tt.ToString(); } - - private string C => emojiMaps.GetCreate(); - private string P => emojiMaps.GetPositive(); - private string S => emojiMaps.GetSurprise(); - private string N => emojiMaps.GetNegative(); } }