Skip to content

Commit a63b04f

Browse files
committed
more unit tests
1 parent 2477597 commit a63b04f

File tree

9 files changed

+129
-19
lines changed

9 files changed

+129
-19
lines changed

GAIL.Networking/NetworkRegister.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ public static uint RegisterPacket(Packet packet) {
111111
Type type = packet.GetType();
112112
string name = type.Name;
113113

114-
if (IsPacketRegistered(type)) {
115-
Logger.LogError("Packet ({name}) is already registered.");
116-
throw new InvalidOperationException("Packet is already registered");
114+
uint? id;
115+
if ((id = GetPacketID(packet)) != null) {
116+
return id.Value;
117117
}
118118

119119
ConstructorInfo? constructor;

GAIL/Core/Texture.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using GAIL.Core.File;
2-
using OxDED.Terminal.Logging;
32
using Silk.NET.GLFW;
43

54
namespace GAIL.Core

Tests/GAIL.Networking.Tests/ContainerTests.cs

Lines changed: 0 additions & 5 deletions
This file was deleted.

Tests/GAIL.Networking.Tests/Packets.cs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,47 @@
1+
using GAIL.Serializing;
2+
using GAIL.Serializing.Formatters;
3+
14
namespace GAIL.Networking.Tests;
25

3-
public class TestPacket : Packet {
4-
6+
public class TestPacket : Packet, IEquatable<TestPacket> {
7+
[PacketConstructor]
8+
public TestPacket() { name = "Admin"; id = 6; isAdmin = true; }
9+
10+
public string name;
11+
[PacketField]
12+
private StringSerializable NameField { get => new(name); set => name = value.Value; }
13+
public int id;
14+
[PacketField]
15+
private IntSerializable IDField { get => new(id); set => id = value.Value; }
16+
public bool isAdmin;
17+
[PacketField]
18+
private BoolSerializable IsAdminField { get => new(isAdmin); set => isAdmin = value.B1; }
19+
20+
/// <inheritdoc/>
21+
public bool Equals(TestPacket? other) {
22+
if (other is null) { return false; }
23+
if (ReferenceEquals(this, other)) { return true; }
24+
if (GetType() != other.GetType()) { return false; }
25+
26+
return name==other.name && id==other.id && isAdmin==other.isAdmin;
27+
}
28+
/// <inheritdoc/>
29+
public override bool Equals(object? obj) {
30+
return Equals(obj as TestPacket);
31+
}
32+
public override int GetHashCode() {
33+
return name.GetHashCode() ^ id.GetHashCode() ^ isAdmin.GetHashCode();
34+
}
535
}
636

737
public class FormattedPacket : Packet {
38+
public override IFormatter? Formatter => new GZipFormatter();
39+
[PacketConstructor]
40+
public FormattedPacket() { message = "AAaaBBbb1234"; }
841

42+
public string message;
43+
[PacketField]
44+
private StringSerializable MessageField { get => new(message); set => message = value.Value; }
945
}
1046

1147
public static class Packets {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using GAIL.Serializing;
2+
using GAIL.Serializing.Formatters;
3+
4+
namespace GAIL.Networking.Tests;
5+
6+
public class RegisterTests {
7+
[Fact]
8+
public void CheckForIDs() {
9+
uint original = NetworkRegister.RegisterPacket<TestPacket>();
10+
uint? id = NetworkRegister.GetPacketID(new TestPacket());
11+
12+
Assert.NotNull(id);
13+
Assert.Equal(id, original);
14+
}
15+
[Fact]
16+
public void IsPacketRegistered() {
17+
NetworkRegister.RegisterPacket<TestPacket>();
18+
19+
Assert.True(NetworkRegister.IsPacketRegistered<TestPacket>());
20+
}
21+
[Fact]
22+
public void CheckForFormat() {
23+
uint id = NetworkRegister.RegisterPacket<TestPacket>();
24+
25+
SerializableInfo[] format = NetworkRegister.GetPacketFormat(id);
26+
27+
Assert.True(
28+
format.SequenceEqual([StringSerializable.Info, IntSerializable.Info, BoolSerializable.Info],
29+
EqualityComparer<SerializableInfo>.Create((info1, info2) => info1 == info2)
30+
));
31+
}
32+
[Fact]
33+
public void CheckForFormatter() {
34+
uint id = NetworkRegister.RegisterPacket<FormattedPacket>();
35+
36+
IFormatter? formatter = NetworkRegister.GetPacketFormatter(id);
37+
38+
Assert.IsType<GZipFormatter>(formatter);
39+
}
40+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,48 @@
1+
using GAIL.Networking.Streams;
2+
using GAIL.Serializing.Formatters;
3+
14
namespace GAIL.Networking.Tests;
25

36
public class StreamTests {
47
[Fact]
58
public void SerializingAndParsing() {
69
Packets.RegisterPackets();
10+
11+
TestPacket original = new();
12+
13+
NetworkSerializer serializer = new(true);
14+
serializer.WritePacket(original);
15+
16+
serializer.OutStream.Position = 0;
17+
18+
NetworkParser parser = new(serializer.OutStream, false);
19+
Packet read = parser.ReadPacket();
20+
21+
parser.Dispose();
22+
serializer.Dispose();
23+
24+
Assert.True(original.Equals(read));
25+
}
26+
[Fact]
27+
public void SerializingAndParsingWithGlobalFormatter() {
28+
Packets.RegisterPackets();
29+
30+
AESFormatter formatter = new(
31+
[.. new byte[32].Select((_, index) => Convert.ToByte(index))], [.. new byte[16].Select((_, index) => Convert.ToByte(index))]
32+
);
33+
TestPacket original = new();
34+
35+
NetworkSerializer serializer = new(true);
36+
serializer.WritePacket(original, formatter);
37+
38+
serializer.OutStream.Position = 0;
39+
40+
NetworkParser parser = new(serializer.OutStream, false);
41+
Packet read = parser.ReadPacket(formatter);
42+
43+
parser.Dispose();
44+
serializer.Dispose();
45+
46+
Assert.True(original.Equals(read));
747
}
848
}

Tests/GAIL.Serializing.Tests/FormatterTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ public void Streams() {
4040

4141
string gotten = parser.ReadString(new GZipFormatter());
4242

43-
Assert.Equal(actual, gotten);
44-
4543
parser.Dispose();
4644
serializer.Dispose();
45+
46+
Assert.Equal(actual, gotten);
4747
}
4848
}

Tests/GAIL.Serializing.Tests/ReducerTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void Serializing() {
5656
TestReducer reducer2 = new("admin", 6, true);
5757
Serializer serializer2 = new();
5858

59-
serializer2.WriteReducer(reducer);
59+
serializer2.WriteReducer(reducer2);
6060

6161
byte[] gotten2 = (serializer.BaseStream as MemoryStream)!.ToArray();
6262

@@ -74,9 +74,9 @@ public void SerializingAndParsing() {
7474
serializer.BaseStream.Position = 0;
7575
TestReducer reducer2 = parser.ReadReducer<TestReducer>(TestReducer.Info);
7676

77-
Assert.True(reducer.Equals(reducer2));
78-
7977
parser.Dispose();
8078
serializer.Dispose();
79+
80+
Assert.True(reducer.Equals(reducer2));
8181
}
8282
}

Tests/GAIL.Serializing.Tests/StreamTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ public void SerializingAndParsing() {
2525
uint b2 = parser.ReadUInt();
2626
BoolSerializable b3 = parser.ReadSerializable<BoolSerializable>(BoolSerializable.Info);
2727

28+
parser.Dispose();
29+
serializer.Dispose();
30+
2831
Assert.Equal(a1, b1);
2932
Assert.Equal(a2, b2);
3033
Assert.Equal(a3, b3.B1);
3134
Assert.Equal(a4, b3.B2);
32-
33-
parser.Dispose();
34-
serializer.Dispose();
3535
}
3636
}

0 commit comments

Comments
 (0)