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();
}
}