diff --git a/NHSE.Core/Util/StructConverter.cs b/NHSE.Core/Util/StructConverter.cs
index 5c702c4..b5e52b8 100644
--- a/NHSE.Core/Util/StructConverter.cs
+++ b/NHSE.Core/Util/StructConverter.cs
@@ -7,7 +7,7 @@ namespace NHSE.Core
///
/// Logic for converting raw data to class/stack struct, and back to data.
///
- internal static class StructConverter
+ public static class StructConverter
{
public static T ToStructure(this byte[] bytes) where T : struct
{
diff --git a/NHSE.Tests/ItemTests.cs b/NHSE.Tests/ItemTests.cs
new file mode 100644
index 0000000..6bc0a99
--- /dev/null
+++ b/NHSE.Tests/ItemTests.cs
@@ -0,0 +1,25 @@
+using FluentAssertions;
+using NHSE.Core;
+using Xunit;
+
+namespace NHSE.Tests
+{
+ public class ItemTests
+ {
+ [Fact]
+ public void ItemMarshal()
+ {
+ var item = new Item();
+ var bytes = item.ToBytesClass();
+ bytes.Length.Should().Be(Item.SIZE);
+ }
+
+ [Fact]
+ public void VillagerItemMarshal()
+ {
+ var item = new VillagerItem();
+ var bytes = item.ToBytesClass();
+ bytes.Length.Should().Be(VillagerItem.SIZE);
+ }
+ }
+}
diff --git a/NHSE.Tests/NHSE.Tests.csproj b/NHSE.Tests/NHSE.Tests.csproj
new file mode 100644
index 0000000..70b847c
--- /dev/null
+++ b/NHSE.Tests/NHSE.Tests.csproj
@@ -0,0 +1,23 @@
+
+
+
+ netcoreapp3.1
+
+ false
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
diff --git a/NHSE.sln b/NHSE.sln
index 15a90ca..c1f1636 100644
--- a/NHSE.sln
+++ b/NHSE.sln
@@ -11,6 +11,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHSE.Sprites", "NHSE.Sprite
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NHSE.Parsing", "NHSE.Parsing\NHSE.Parsing.csproj", "{D6E5CE99-6182-49BA-AD8D-EC12E90A20E3}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NHSE.Tests", "NHSE.Tests\NHSE.Tests.csproj", "{AD3412A3-74EA-443D-BB07-B36E39D5166F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -33,6 +35,10 @@ Global
{D6E5CE99-6182-49BA-AD8D-EC12E90A20E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D6E5CE99-6182-49BA-AD8D-EC12E90A20E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D6E5CE99-6182-49BA-AD8D-EC12E90A20E3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AD3412A3-74EA-443D-BB07-B36E39D5166F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AD3412A3-74EA-443D-BB07-B36E39D5166F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AD3412A3-74EA-443D-BB07-B36E39D5166F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AD3412A3-74EA-443D-BB07-B36E39D5166F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE