Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,12 @@ dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case
csharp_style_prefer_primary_constructors = true:suggestion
csharp_prefer_system_threading_lock = true:suggestion

[*.{cs,vb}]
dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 4
indent_style = tab
indent_size = 4
end_of_line = crlf
dotnet_style_coalesce_expression = true:warning
Expand Down
3 changes: 2 additions & 1 deletion F1Game.UDP.Benchamrks/F1Game.UDP.Benchmarks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net8.0</TargetFrameworks>
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<LangVersion>latest</LangVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
3 changes: 2 additions & 1 deletion F1Game.UDP.Benchamrks/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
using BenchmarkDotNet.Running;

var config = DefaultConfig.Instance
.AddJob(Job.Default.WithId("NET8").WithRuntime(CoreRuntime.Core80));
.AddJob(Job.Default.WithId("NET8").WithRuntime(CoreRuntime.Core80))
.AddJob(Job.Default.WithId("NET9").WithRuntime(CoreRuntime.Core90));

BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly)
.Run(args, config);
12 changes: 9 additions & 3 deletions F1Game.UDP.Benchamrks/ThirdPartyComparisonBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ public Packet ReadF1Simracing()

static void SetupCarTelemetryPacket(byte[] data, Random random)
{
var packet = data.ToPacket().CarTelemetryDataPacket;
if (!data.ToPacket().TryGetCarTelemetryDataPacket(out var packet))
return;

var updatedPacket = packet with
{
CarTelemetryData = packet.CarTelemetryData.AsEnumerable().Select(x => x with
Expand All @@ -93,7 +95,9 @@ static void SetupCarTelemetryPacket(byte[] data, Random random)

static void SetupCarStatusPacket(byte[] data, Random random)
{
var packet = data.ToPacket().CarStatusDataPacket;
if (!data.ToPacket().TryGetCarStatusDataPacket(out var packet))
return;

var updatedPacket = packet with
{
CarStatusData = packet.CarStatusData.AsEnumerable().Select(x => x with
Expand All @@ -113,7 +117,9 @@ static void SetupEventPacket(byte[] data)

static void SetupSessionPacket(byte[] data, Random random)
{
var packet = data.ToPacket().SessionDataPacket;
if (!data.ToPacket().TryGetSessionDataPacket(out var packet))
return;

var updatedPacket = packet with
{
AirTemperature = (sbyte)random.Next(127),
Expand Down
2 changes: 1 addition & 1 deletion F1Game.UDP.Tests/F1Game.UDP.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
Expand Down
95 changes: 50 additions & 45 deletions F1Game.UDP.Tests/PacketReaderFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
using F1Game.UDP.Internal;
using F1Game.UDP.Packets;

using AwesomeAssertions.Equivalency;

namespace F1Game.UDP.Tests;

[FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
Expand Down Expand Up @@ -75,9 +77,9 @@ public void ReadCarDamageDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -91,9 +93,9 @@ public void ReadCarSetupDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -107,9 +109,9 @@ public void ReadCarStatusDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -123,9 +125,9 @@ public void ReadCarTelemetryDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[TestCase(EventType.ButtonStatus)]
Expand Down Expand Up @@ -178,9 +180,9 @@ public void ReadEventDataPacket(EventType eventType)
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -201,9 +203,9 @@ public void ReadFinalClassificationDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -217,9 +219,9 @@ public void ReadLapDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -238,9 +240,9 @@ public void ReadLobbyInfoDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -254,9 +256,9 @@ public void ReadMotionDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -269,9 +271,9 @@ public void ReadMotionExDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -290,9 +292,9 @@ public void ReadParticipantsDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -308,9 +310,9 @@ public void ReadSessionDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -325,9 +327,9 @@ public void ReadSessionHistoryDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -341,9 +343,9 @@ public void ReadTyreSetsDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

[Test]
Expand All @@ -355,9 +357,9 @@ public void ReadTimeTrialDataPacket()
var writer = new BytesWriter(bytes);
writer.Write(packet);

bytes.ToPacket().Should().BeEquivalentTo(packet);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet);
bytes.ToPacket().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithReader().Should().BeEquivalentTo(packet, Configure);
bytes.ToPacketWithMarshal().Should().BeEquivalentTo(packet, Configure);
}

IPostprocessComposer<T> BuildPacket<T>() where T : IHaveHeader, new()
Expand Down Expand Up @@ -388,4 +390,7 @@ public void ReadTimeTrialDataPacket()
return fixture.Build<T>()
.With(x => x.Header, header);
}

static EquivalencyOptions<UnionPacket> Configure(EquivalencyOptions<UnionPacket> options)
=> options.IncludingInternalFields();
}
Loading