mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2025-12-17 06:50:29 +00:00
Code cleanups
This commit is contained in:
@@ -471,7 +471,7 @@ internal sealed class Bot {
|
|||||||
|
|
||||||
HashSet<Asset> itemsToSend = GetItemsForFullBadge(items, 2, appID);
|
HashSet<Asset> itemsToSend = GetItemsForFullBadge(items, 2, appID);
|
||||||
|
|
||||||
Assert.IsTrue(itemsToSend.Count <= Steam.Exchange.Trading.MaxItemsPerTrade);
|
Assert.IsLessThanOrEqualTo(Steam.Exchange.Trading.MaxItemsPerTrade, itemsToSend.Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@@ -495,7 +495,7 @@ internal sealed class Bot {
|
|||||||
|
|
||||||
HashSet<Asset> itemsToSend = GetItemsForFullBadge(items, itemsPerSet);
|
HashSet<Asset> itemsToSend = GetItemsForFullBadge(items, itemsPerSet);
|
||||||
|
|
||||||
Assert.IsTrue(itemsToSend.Count <= Steam.Exchange.Trading.MaxItemsPerTrade);
|
Assert.IsLessThanOrEqualTo(Steam.Exchange.Trading.MaxItemsPerTrade, itemsToSend.Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ using ArchiSteamFarm.Storage;
|
|||||||
using ArchiSteamFarm.Web;
|
using ArchiSteamFarm.Web;
|
||||||
using ArchiSteamFarm.Web.GitHub;
|
using ArchiSteamFarm.Web.GitHub;
|
||||||
using ArchiSteamFarm.Web.GitHub.Data;
|
using ArchiSteamFarm.Web.GitHub.Data;
|
||||||
|
using JetBrains.Annotations;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace ArchiSteamFarm.Tests;
|
namespace ArchiSteamFarm.Tests;
|
||||||
@@ -40,6 +41,15 @@ internal sealed class IGitHubPluginUpdates {
|
|||||||
private const string PluginName = "ArchiSteamFarm.OfficialPlugins.Monitoring";
|
private const string PluginName = "ArchiSteamFarm.OfficialPlugins.Monitoring";
|
||||||
private const string Repository = "JustArchiNET/ArchiSteamFarm";
|
private const string Repository = "JustArchiNET/ArchiSteamFarm";
|
||||||
|
|
||||||
|
private readonly TestContext TestContext;
|
||||||
|
|
||||||
|
[UsedImplicitly]
|
||||||
|
public IGitHubPluginUpdates(TestContext testContext) {
|
||||||
|
ArgumentNullException.ThrowIfNull(testContext);
|
||||||
|
|
||||||
|
TestContext = testContext;
|
||||||
|
}
|
||||||
|
|
||||||
[TestCategory("Manual")]
|
[TestCategory("Manual")]
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
internal async Task DoesNotOfferPointlessUpdatesWhenMultipleAssetsAreFound() {
|
internal async Task DoesNotOfferPointlessUpdatesWhenMultipleAssetsAreFound() {
|
||||||
@@ -47,7 +57,7 @@ internal sealed class IGitHubPluginUpdates {
|
|||||||
|
|
||||||
typeof(ASF).GetProperty(nameof(ASF.WebBrowser))?.SetValue(null, webBrowser);
|
typeof(ASF).GetProperty(nameof(ASF.WebBrowser))?.SetValue(null, webBrowser);
|
||||||
|
|
||||||
ReleaseResponse? response = await GitHubService.GetLatestRelease(Repository).ConfigureAwait(false);
|
ReleaseResponse? response = await GitHubService.GetLatestRelease(Repository, cancellationToken: TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
if (response == null) {
|
if (response == null) {
|
||||||
Assert.Inconclusive(Strings.FormatWarningFailedWithError(nameof(response)));
|
Assert.Inconclusive(Strings.FormatWarningFailedWithError(nameof(response)));
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using JetBrains.Annotations;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using static ArchiSteamFarm.Steam.Integration.SteamChatMessage;
|
using static ArchiSteamFarm.Steam.Integration.SteamChatMessage;
|
||||||
|
|
||||||
@@ -34,6 +35,15 @@ namespace ArchiSteamFarm.Tests;
|
|||||||
#pragma warning disable CA1812 // False positive, the class is used during MSTest
|
#pragma warning disable CA1812 // False positive, the class is used during MSTest
|
||||||
[TestClass]
|
[TestClass]
|
||||||
internal sealed class SteamChatMessage {
|
internal sealed class SteamChatMessage {
|
||||||
|
private readonly TestContext TestContext;
|
||||||
|
|
||||||
|
[UsedImplicitly]
|
||||||
|
public SteamChatMessage(TestContext testContext) {
|
||||||
|
ArgumentNullException.ThrowIfNull(testContext);
|
||||||
|
|
||||||
|
TestContext = testContext;
|
||||||
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
internal async Task CanSplitEvenWithStupidlyLongPrefix() {
|
internal async Task CanSplitEvenWithStupidlyLongPrefix() {
|
||||||
string prefix = new('x', MaxMessagePrefixBytes);
|
string prefix = new('x', MaxMessagePrefixBytes);
|
||||||
@@ -41,9 +51,9 @@ internal sealed class SteamChatMessage {
|
|||||||
const string emoji = "😎";
|
const string emoji = "😎";
|
||||||
const string message = $"{emoji}{emoji}{emoji}{emoji}";
|
const string message = $"{emoji}{emoji}{emoji}{emoji}";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, prefix, true).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, prefix, true).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(4, output.Count);
|
Assert.HasCount(4, output);
|
||||||
|
|
||||||
Assert.AreEqual($"{prefix}{emoji}{ContinuationCharacter}", output[0]);
|
Assert.AreEqual($"{prefix}{emoji}{ContinuationCharacter}", output[0]);
|
||||||
Assert.AreEqual($"{prefix}{ContinuationCharacter}{emoji}{ContinuationCharacter}", output[1]);
|
Assert.AreEqual($"{prefix}{ContinuationCharacter}{emoji}{ContinuationCharacter}", output[1]);
|
||||||
@@ -58,9 +68,9 @@ internal sealed class SteamChatMessage {
|
|||||||
internal async Task DoesntSkipEmptyNewlines() {
|
internal async Task DoesntSkipEmptyNewlines() {
|
||||||
string message = $"asdf{Environment.NewLine}{Environment.NewLine}asdf";
|
string message = $"asdf{Environment.NewLine}{Environment.NewLine}asdf";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(1, output.Count);
|
Assert.HasCount(1, output);
|
||||||
Assert.AreEqual(message, output.First());
|
Assert.AreEqual(message, output.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,9 +86,9 @@ internal sealed class SteamChatMessage {
|
|||||||
string longSequence = new('a', longLineLength - 1);
|
string longSequence = new('a', longLineLength - 1);
|
||||||
string message = $"{longSequence}{emoji}";
|
string message = $"{longSequence}{emoji}";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(2, output.Count);
|
Assert.HasCount(2, output);
|
||||||
|
|
||||||
Assert.AreEqual($"{longSequence}{ContinuationCharacter}", output[0]);
|
Assert.AreEqual($"{longSequence}{ContinuationCharacter}", output[0]);
|
||||||
Assert.AreEqual($"{ContinuationCharacter}{emoji}", output[1]);
|
Assert.AreEqual($"{ContinuationCharacter}{emoji}", output[1]);
|
||||||
@@ -89,9 +99,9 @@ internal sealed class SteamChatMessage {
|
|||||||
const string message = "abcdef[";
|
const string message = "abcdef[";
|
||||||
const string escapedMessage = @"abcdef\[";
|
const string escapedMessage = @"abcdef\[";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(1, output.Count);
|
Assert.HasCount(1, output);
|
||||||
Assert.AreEqual(escapedMessage, output.First());
|
Assert.AreEqual(escapedMessage, output.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,9 +115,9 @@ internal sealed class SteamChatMessage {
|
|||||||
string longLine = new('a', longLineLength - 2);
|
string longLine = new('a', longLineLength - 2);
|
||||||
string message = $@"{longLine}\";
|
string message = $@"{longLine}\";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(1, output.Count);
|
Assert.HasCount(1, output);
|
||||||
Assert.AreEqual($@"{message}\", output.First());
|
Assert.AreEqual($@"{message}\", output.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,9 +131,9 @@ internal sealed class SteamChatMessage {
|
|||||||
string longLine = new('a', longLineLength - 1);
|
string longLine = new('a', longLineLength - 1);
|
||||||
string message = $"{longLine}[";
|
string message = $"{longLine}[";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(2, output.Count);
|
Assert.HasCount(2, output);
|
||||||
|
|
||||||
Assert.AreEqual($"{longLine}{ContinuationCharacter}", output[0]);
|
Assert.AreEqual($"{longLine}{ContinuationCharacter}", output[0]);
|
||||||
Assert.AreEqual($@"{ContinuationCharacter}\[", output[1]);
|
Assert.AreEqual($@"{ContinuationCharacter}\[", output[1]);
|
||||||
@@ -133,9 +143,9 @@ internal sealed class SteamChatMessage {
|
|||||||
internal async Task NoNeedForAnySplittingWithNewlines() {
|
internal async Task NoNeedForAnySplittingWithNewlines() {
|
||||||
string message = $"abcdef{Environment.NewLine}ghijkl{Environment.NewLine}mnopqr";
|
string message = $"abcdef{Environment.NewLine}ghijkl{Environment.NewLine}mnopqr";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(1, output.Count);
|
Assert.HasCount(1, output);
|
||||||
Assert.AreEqual(message, output.First());
|
Assert.AreEqual(message, output.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,23 +153,23 @@ internal sealed class SteamChatMessage {
|
|||||||
internal async Task NoNeedForAnySplittingWithoutNewlines() {
|
internal async Task NoNeedForAnySplittingWithoutNewlines() {
|
||||||
const string message = "abcdef";
|
const string message = "abcdef";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(1, output.Count);
|
Assert.HasCount(1, output);
|
||||||
Assert.AreEqual(message, output.First());
|
Assert.AreEqual(message, output.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
internal void ParagraphCharacterSizeIsLessOrEqualToContinuationCharacterSize() => Assert.IsTrue(ContinuationCharacterBytes >= Encoding.UTF8.GetByteCount(ParagraphCharacter.ToString()));
|
internal void ParagraphCharacterSizeIsLessOrEqualToContinuationCharacterSize() => Assert.IsGreaterThanOrEqualTo(Encoding.UTF8.GetByteCount(ParagraphCharacter.ToString()), ContinuationCharacterBytes);
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
internal async Task ProperlyEscapesCharacters() {
|
internal async Task ProperlyEscapesCharacters() {
|
||||||
const string message = @"[b]bold[/b] \n";
|
const string message = @"[b]bold[/b] \n";
|
||||||
const string escapedMessage = @"\[b]bold\[/b] \\n";
|
const string escapedMessage = @"\[b]bold\[/b] \\n";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(1, output.Count);
|
Assert.HasCount(1, output);
|
||||||
Assert.AreEqual(escapedMessage, output.First());
|
Assert.AreEqual(escapedMessage, output.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,9 +180,9 @@ internal sealed class SteamChatMessage {
|
|||||||
|
|
||||||
const string message = "asdf";
|
const string message = "asdf";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, prefix).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, prefix).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(1, output.Count);
|
Assert.HasCount(1, output);
|
||||||
Assert.AreEqual($"{escapedPrefix}{message}", output.First());
|
Assert.AreEqual($"{escapedPrefix}{message}", output.First());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,9 +196,9 @@ internal sealed class SteamChatMessage {
|
|||||||
string longLine = new('a', longLineLength);
|
string longLine = new('a', longLineLength);
|
||||||
string message = $"{longLine}{longLine}{longLine}{longLine}";
|
string message = $"{longLine}{longLine}{longLine}{longLine}";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(4, output.Count);
|
Assert.HasCount(4, output);
|
||||||
|
|
||||||
Assert.AreEqual($"{longLine}{ContinuationCharacter}", output[0]);
|
Assert.AreEqual($"{longLine}{ContinuationCharacter}", output[0]);
|
||||||
Assert.AreEqual($"{ContinuationCharacter}{longLine}{ContinuationCharacter}", output[1]);
|
Assert.AreEqual($"{ContinuationCharacter}{longLine}{ContinuationCharacter}", output[1]);
|
||||||
@@ -260,9 +270,9 @@ internal sealed class SteamChatMessage {
|
|||||||
<ASF> 1/1 ботов уже имеют игру app/304930 | Unturned.
|
<ASF> 1/1 ботов уже имеют игру app/304930 | Unturned.
|
||||||
""";
|
""";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, prefix).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, prefix).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(2, output.Count);
|
Assert.HasCount(2, output);
|
||||||
|
|
||||||
foreach (string messagePart in output) {
|
foreach (string messagePart in output) {
|
||||||
if ((messagePart.Length <= prefix.Length) || !messagePart.StartsWith(prefix, StringComparison.Ordinal)) {
|
if ((messagePart.Length <= prefix.Length) || !messagePart.StartsWith(prefix, StringComparison.Ordinal)) {
|
||||||
@@ -304,9 +314,9 @@ internal sealed class SteamChatMessage {
|
|||||||
string newlinePart = newlinePartBuilder.ToString();
|
string newlinePart = newlinePartBuilder.ToString();
|
||||||
string message = $"{newlinePart}{Environment.NewLine}{newlinePart}{Environment.NewLine}{newlinePart}{Environment.NewLine}{newlinePart}";
|
string message = $"{newlinePart}{Environment.NewLine}{newlinePart}{Environment.NewLine}{newlinePart}{Environment.NewLine}{newlinePart}";
|
||||||
|
|
||||||
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync().ConfigureAwait(false);
|
List<string> output = await GetMessageParts(message, isAccountLimited: isAccountLimited).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
|
||||||
Assert.AreEqual(4, output.Count);
|
Assert.HasCount(4, output);
|
||||||
|
|
||||||
Assert.AreEqual($"{newlinePart}{ParagraphCharacter}", output[0]);
|
Assert.AreEqual($"{newlinePart}{ParagraphCharacter}", output[0]);
|
||||||
Assert.AreEqual($"{newlinePart}{ParagraphCharacter}", output[1]);
|
Assert.AreEqual($"{newlinePart}{ParagraphCharacter}", output[1]);
|
||||||
@@ -320,7 +330,7 @@ internal sealed class SteamChatMessage {
|
|||||||
|
|
||||||
const string message = "asdf";
|
const string message = "asdf";
|
||||||
|
|
||||||
await Assert.ThrowsExactlyAsync<ArgumentOutOfRangeException>(async () => await GetMessageParts(message, prefix).ToListAsync().ConfigureAwait(false)).ConfigureAwait(false);
|
await Assert.ThrowsExactlyAsync<ArgumentOutOfRangeException>(async () => await GetMessageParts(message, prefix).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false)).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@@ -329,7 +339,7 @@ internal sealed class SteamChatMessage {
|
|||||||
|
|
||||||
const string message = "asdf";
|
const string message = "asdf";
|
||||||
|
|
||||||
await Assert.ThrowsExactlyAsync<ArgumentOutOfRangeException>(async () => await GetMessageParts(message, prefix).ToListAsync().ConfigureAwait(false)).ConfigureAwait(false);
|
await Assert.ThrowsExactlyAsync<ArgumentOutOfRangeException>(async () => await GetMessageParts(message, prefix).ToListAsync(TestContext.CancellationTokenSource.Token).ConfigureAwait(false)).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#pragma warning restore CA1812 // False positive, the class is used during MSTest
|
#pragma warning restore CA1812 // False positive, the class is used during MSTest
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -36,7 +35,6 @@ using SteamKit2;
|
|||||||
|
|
||||||
namespace ArchiSteamFarm.NLog.Targets;
|
namespace ArchiSteamFarm.NLog.Targets;
|
||||||
|
|
||||||
[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
|
|
||||||
[Target("Steam")]
|
[Target("Steam")]
|
||||||
internal sealed class SteamTarget : AsyncTaskTarget {
|
internal sealed class SteamTarget : AsyncTaskTarget {
|
||||||
// This is NLog config property, it must have public get() and set() capabilities
|
// This is NLog config property, it must have public get() and set() capabilities
|
||||||
@@ -54,6 +52,7 @@ internal sealed class SteamTarget : AsyncTaskTarget {
|
|||||||
// This parameter-less constructor is intentionally public, as NLog uses it for creating targets
|
// This parameter-less constructor is intentionally public, as NLog uses it for creating targets
|
||||||
// It must stay like this as we want to have our targets defined in our NLog.config
|
// It must stay like this as we want to have our targets defined in our NLog.config
|
||||||
// Keeping date in default layout also doesn't make much sense (Steam offers that), so we remove it by default
|
// Keeping date in default layout also doesn't make much sense (Steam offers that), so we remove it by default
|
||||||
|
[UsedImplicitly]
|
||||||
public SteamTarget() => Layout = "${level:uppercase=true}|${logger}|${message}";
|
public SteamTarget() => Layout = "${level:uppercase=true}|${logger}|${message}";
|
||||||
|
|
||||||
protected override void InitializeTarget() {
|
protected override void InitializeTarget() {
|
||||||
|
|||||||
Reference in New Issue
Block a user