using AltBot.Core.Models; using Microsoft.Extensions.Logging; using Moq; using Xunit; namespace AltBot.Core.Tests.Models; public class CidTests { private readonly Mock> _loggerMock; public CidTests() { _loggerMock = new Mock>(); } [Theory] [InlineData("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG")] [InlineData("bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi")] public void Create_ValidCid_ReturnsCidInstance(string validCid) { // Act var cid = Cid.Create(validCid); // Assert Assert.NotNull(cid); Assert.Equal(validCid, cid.Value); } [Theory] [InlineData("")] [InlineData(" ")] [InlineData(null)] [InlineData("invalid$characters")] public void Create_InvalidCid_ReturnsNull(string? invalidCid) { // Act var cid = Cid.Create(invalidCid!); // Assert Assert.Null(cid); } [Fact] public void Parse_ValidCid_ReturnsCidInstance() { // Arrange const string validCid = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG"; // Act var cid = Cid.Parse(validCid, null); // Assert Assert.NotNull(cid); Assert.Equal(validCid, cid.Value); } [Fact] public void Parse_InvalidCid_ThrowsFormatException() { // Arrange const string invalidCid = "invalid$characters"; // Act & Assert Assert.Throws(() => Cid.Parse(invalidCid, null)); } [Fact] public void TryParse_ValidCid_ReturnsTrue() { // Arrange const string validCid = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG"; // Act var success = Cid.TryParse(validCid, null, out var cid); // Assert Assert.True(success); Assert.NotNull(cid); Assert.Equal(validCid, cid.Value); } [Theory] [InlineData("")] [InlineData(null)] [InlineData("invalid$characters")] public void TryParse_InvalidCid_ReturnsFalse(string? invalidCid) { // Act var success = Cid.TryParse(invalidCid, null, out var cid); // Assert Assert.False(success); Assert.Null(cid); } [Fact] public void Equals_SameValue_ReturnsTrue() { // Arrange var cid1 = Cid.Parse("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", null); var cid2 = Cid.Parse("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", null); // Act & Assert Assert.True(cid1.Equals(cid2)); Assert.True(cid1 == cid2); } [Fact] public void Equals_DifferentValue_ReturnsFalse() { // Arrange var cid1 = Cid.Parse("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", null); var cid2 = Cid.Parse("bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", null); // Act & Assert Assert.False(cid1.Equals(cid2)); Assert.False(cid1 == cid2); } [Fact] public void ToString_ReturnsValue() { // Arrange const string cidString = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG"; var cid = Cid.Parse(cidString, null); // Act var result = cid.ToString(); // Assert Assert.Equal(cidString, result); } [Fact] public void ImplicitConversion_ToString_ReturnsValue() { // Arrange const string cidString = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG"; var cid = Cid.Parse(cidString, null); // Act string result = cid; // Assert Assert.Equal(cidString, result); } [Fact] public void ExplicitConversion_FromString_ReturnsCid() { // Arrange const string cidString = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG"; // Act var cid = (Cid)cidString; // Assert Assert.Equal(cidString, cid.Value); } [Fact] public void Load_AnyString_ReturnsCid() { // Arrange const string cidString = "anyStringValue"; // Act var cid = Cid.Load(cidString); // Assert Assert.NotNull(cid); Assert.Equal(cidString, cid.Value); } }