Skip to content

Commit

Permalink
Add max word dequeue
Browse files Browse the repository at this point in the history
  • Loading branch information
ButterscotchV committed Jan 29, 2024
1 parent b20f54b commit a272b4e
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 5 deletions.
40 changes: 36 additions & 4 deletions ButterSTT.Tests/MessageSystem/MessageQueueTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ public MessageQueueTests(ITestOutputHelper output)
[Fact()]
public void TimeoutTest()
{
var queue = new MessageQueue { WordTime = TimeSpan.Zero };
var queue = new MessageQueue
{
WordTime = TimeSpan.Zero,
MaxWordsDequeued = int.MaxValue
};

var firstMessage = "Testing the queue system.";
queue.CurParagraph = EnglishTextParser.ParseParagraph(firstMessage);
Expand All @@ -36,7 +40,11 @@ public void TimeoutTest()
[Fact()]
public void CombineTest()
{
var queue = new MessageQueue { WordTime = TimeSpan.Zero };
var queue = new MessageQueue
{
WordTime = TimeSpan.Zero,
MaxWordsDequeued = int.MaxValue
};

var firstMessage = "Testing the queue system.";
queue.CurParagraph = EnglishTextParser.ParseParagraph(firstMessage);
Expand All @@ -53,7 +61,11 @@ public void CombineTest()
[Fact()]
public void RealtimeTest()
{
var queue = new MessageQueue { WordTime = TimeSpan.Zero };
var queue = new MessageQueue
{
WordTime = TimeSpan.Zero,
MaxWordsDequeued = int.MaxValue
};

// Likely incomplete word
queue.CurParagraph = EnglishTextParser.ParseParagraph("Testing th");
Expand Down Expand Up @@ -87,7 +99,7 @@ public void RealtimeTest()
[Fact()]
public void RealtimeAppendingTest()
{
var queue = new MessageQueue { WordTime = TimeSpan.MaxValue };
var queue = new MessageQueue { WordTime = TimeSpan.MaxValue, MaxWordsDequeued = 0 };

// Initial message, fully completed
var firstMessage = "Testing the queue system.";
Expand All @@ -108,5 +120,25 @@ public void RealtimeAppendingTest()
output.WriteLine($"Appended message: \"{curMessage}\"");
Assert.Equal($"{firstMessage} {thirdMessage}", curMessage);
}

[Fact()]
public void MaxDequeueTest()
{
var queue = new MessageQueue { WordTime = TimeSpan.Zero, MaxWordsDequeued = 2 };

var firstMessage = "Testing the queue system.";
queue.CurParagraph = EnglishTextParser.ParseParagraph(firstMessage);
queue.FinishCurrentParagraph();
var curMessage = queue.GetCurrentMessage();
output.WriteLine($"First message: \"{curMessage}\"");
Assert.Equal(firstMessage, curMessage);

var secondMessage = "Second test message.";
queue.CurParagraph = EnglishTextParser.ParseParagraph(secondMessage);
queue.FinishCurrentParagraph();
curMessage = queue.GetCurrentMessage();
output.WriteLine($"Second message: \"{curMessage}\"");
Assert.Equal($"queue system. {secondMessage}", curMessage);
}
}
}
5 changes: 4 additions & 1 deletion ButterSTT/MessageSystem/MessageQueue.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ namespace ButterSTT.MessageSystem
public class MessageQueue
{
public int MessageLength = 144;
public int MaxWordsDequeued = 6;
public TimeSpan WordTime = TimeSpan.FromSeconds(3);

public Paragraph CurParagraph;
Expand Down Expand Up @@ -63,8 +64,10 @@ public string GetCurrentMessage()
// Remove expired words if more space is needed
if (WordQueue.Count > 0 || CurParagraph.Length > 0)
{
var dequeueCount = 0;
while (
MessageWordQueue.TryPeek(out var expiredWord)
dequeueCount++ < MaxWordsDequeued
&& MessageWordQueue.TryPeek(out var expiredWord)
&& DateTime.UtcNow - expiredWord.DisplayTime >= WordTime
)
{
Expand Down

0 comments on commit a272b4e

Please sign in to comment.