QueryMaster Test Project

This commit is contained in:
Brett Hewitson 2022-05-15 21:23:33 +10:00
parent a29e8fb1b6
commit 0402a732e6
5 changed files with 128 additions and 3 deletions

View file

@ -0,0 +1,19 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("QueryMaster.Tests")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Bletch1971")]
[assembly: AssemblyProduct("QueryMaster.Tests")]
[assembly: AssemblyCopyright("Copyright © 2015-2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("812FAA07-FFE2-4F09-A93E-5704E544E61C")]
// exclude from semantic versioning
[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View file

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<RootNamespace>QueryMaster.UnitTests</RootNamespace>
<AssemblyName>QueryMaster.UnitTests</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<None Remove="QueryMaster.UnitTests.csproj.vspscc" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\QueryMaster\QueryMaster.csproj" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,67 @@
using System;
using System.Linq;
using System.Net;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace QueryMaster.UnitTests
{
[TestClass]
public class ServerQueryTests
{
private static readonly char[] rconLineSplitChars = new char[] { '\n' };
[DataTestMethod]
[DataRow("127.0.0.1", 27015)]
[DataRow("192.168.0.1", 27015)]
[DataRow("101.188.183.193", 27015)]
public void ServerQuery_PlayerCount(string ipAddressString, int queryPort)
{
var ipAddress = IPAddress.Parse(ipAddressString);
var endPoint = new IPEndPoint(ipAddress, queryPort);
using (var gameServer = ServerQuery.GetServerInstance(EngineType.Source, endPoint))
{
Assert.IsNotNull(gameServer);
var serverInfo = gameServer.GetInfo();
Assert.IsNotNull(serverInfo);
var playerCount1 = serverInfo.Players;
var players = gameServer.GetPlayers();
Assert.IsNotNull(players);
var validPlayers = players.Where(p => !string.IsNullOrWhiteSpace(p.Name?.Trim()));
var playerCount2 = validPlayers.Count();
Assert.AreEqual(playerCount1, playerCount2);
}
}
[DataTestMethod]
[DataRow("127.0.0.1", 32330, "p@ssword")]
[DataRow("192.168.0.1", 32330, "p@ssword")]
[DataRow("101.188.183.193", 32330, "p@ssword")]
public void ServerQuery_RconListPlayers(string ipAddressString, int queryPort, string rconPassword)
{
var ipAddress = IPAddress.Parse(ipAddressString);
var endPoint = new IPEndPoint(ipAddress, queryPort);
using (var gameServer = ServerQuery.GetServerInstance(EngineType.Source, endPoint))
{
Assert.IsNotNull(gameServer);
using (var rconConsole = gameServer.GetControl(rconPassword))
{
Assert.IsNotNull(rconConsole);
var result = rconConsole.SendCommand("listplayers");
Assert.IsNotNull(result);
var lines = result.Split(rconLineSplitChars, StringSplitOptions.RemoveEmptyEntries).Select(l => l.Trim()).ToArray();
Assert.IsNotNull(lines);
}
}
}
}
}

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MSTest.TestAdapter" version="2.2.7" targetFramework="net462" />
<package id="MSTest.TestFramework" version="2.2.7" targetFramework="net462" />
</packages>