using PnvPanel.Domain.Common; using Xunit; namespace PnvPanel.Domain.Tests.Common; public class EntityTests { private sealed class FakeEntityA : Entity { public FakeEntityA(Guid id) => Id = id; } private sealed class FakeEntityB : Entity { public FakeEntityB(Guid id) => Id = id; } [Fact] public void Equals_SameTypeAndId_ReturnsTrue() { var id = Guid.NewGuid(); var a = new FakeEntityA(id); var b = new FakeEntityA(id); Assert.Equal(a, b); Assert.True(a == b); } [Fact] public void Equals_DifferentTypesSameId_ReturnsFalse() { var id = Guid.NewGuid(); var a = new FakeEntityA(id); var b = new FakeEntityB(id); Assert.False(a.Equals(b)); } [Fact] public void Equals_SameTypeDifferentId_ReturnsFalse() { var a = new FakeEntityA(Guid.NewGuid()); var b = new FakeEntityA(Guid.NewGuid()); Assert.NotEqual(a, b); Assert.True(a != b); } [Fact] public void GetHashCode_SameTypeAndId_AreEqual() { var id = Guid.NewGuid(); var a = new FakeEntityA(id); var b = new FakeEntityA(id); Assert.Equal(a.GetHashCode(), b.GetHashCode()); } }