diff --git a/Seraphina.Tests/Seraphina.Tests.csproj b/Seraphina.Tests/Seraphina.Tests.csproj
index a2352e4..626d8c7 100644
--- a/Seraphina.Tests/Seraphina.Tests.csproj
+++ b/Seraphina.Tests/Seraphina.Tests.csproj
@@ -7,10 +7,15 @@
+
+
+
+
+
diff --git a/Seraphina.Tests/SkillInfoTest.cs b/Seraphina.Tests/SkillInfoTest.cs
new file mode 100644
index 0000000..eff25fd
--- /dev/null
+++ b/Seraphina.Tests/SkillInfoTest.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using FsCheck;
+using FsCheck.Xunit;
+using Seraphina.Core;
+using Xunit;
+
+namespace Seraphina.Tests
+{
+ public class SkillInfoTest
+ {
+ static readonly List validList = new List { 1, 2, 3, 4 };
+
+ [Fact]
+ public void Ctor_ThrowsOnNullAndEmptyId()
+ {
+ Assert.Throws("id", () => new SkillInfo(null, "test", validList));
+ Assert.Throws("id", () => new SkillInfo("", "test", validList));
+ }
+
+ [Fact]
+ public void Ctor_ThrowsOnNullAndEmptyName()
+ {
+ Assert.Throws("name", () => new SkillInfo("test", null, validList));
+ Assert.Throws("name", () => new SkillInfo("test", "", validList));
+ }
+
+ [Fact]
+ public void Ctor_ThrowsOnNullAndEmptySkillCosts()
+ {
+ Assert.Throws("skillPointCosts", () => new SkillInfo("test", "test", null));
+ Assert.Throws("skillPointCosts", () => new SkillInfo("test", "test", new List { }));
+ }
+
+
+ [Fact]
+ public void Ctor_ThrowsOnNullDescription()
+ {
+ Assert.Throws("description", () => new SkillInfo("test", "test", null, validList));
+ }
+
+ public static IEnumerable