AltHeroes Bot v2
1using AltBot.Core.Models;
2using Microsoft.Extensions.Logging;
3using Moq;
4using Xunit;
5
6namespace AltBot.Core.Tests.Models;
7
8public class CidTests
9{
10 private readonly Mock<ILogger<Cid>> _loggerMock;
11
12 public CidTests()
13 {
14 _loggerMock = new Mock<ILogger<Cid>>();
15 }
16
17 [Theory]
18 [InlineData("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG")]
19 [InlineData("bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi")]
20 public void Create_ValidCid_ReturnsCidInstance(string validCid)
21 {
22 // Act
23 var cid = Cid.Create(validCid);
24
25 // Assert
26 Assert.NotNull(cid);
27 Assert.Equal(validCid, cid.Value);
28 }
29
30 [Theory]
31 [InlineData("")]
32 [InlineData(" ")]
33 [InlineData(null)]
34 [InlineData("invalid$characters")]
35 public void Create_InvalidCid_ReturnsNull(string? invalidCid)
36 {
37 // Act
38 var cid = Cid.Create(invalidCid!);
39
40 // Assert
41 Assert.Null(cid);
42 }
43
44 [Fact]
45 public void Parse_ValidCid_ReturnsCidInstance()
46 {
47 // Arrange
48 const string validCid = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";
49
50 // Act
51 var cid = Cid.Parse(validCid, null);
52
53 // Assert
54 Assert.NotNull(cid);
55 Assert.Equal(validCid, cid.Value);
56 }
57
58 [Fact]
59 public void Parse_InvalidCid_ThrowsFormatException()
60 {
61 // Arrange
62 const string invalidCid = "invalid$characters";
63
64 // Act & Assert
65 Assert.Throws<FormatException>(() => Cid.Parse(invalidCid, null));
66 }
67
68 [Fact]
69 public void TryParse_ValidCid_ReturnsTrue()
70 {
71 // Arrange
72 const string validCid = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";
73
74 // Act
75 var success = Cid.TryParse(validCid, null, out var cid);
76
77 // Assert
78 Assert.True(success);
79 Assert.NotNull(cid);
80 Assert.Equal(validCid, cid.Value);
81 }
82
83 [Theory]
84 [InlineData("")]
85 [InlineData(null)]
86 [InlineData("invalid$characters")]
87 public void TryParse_InvalidCid_ReturnsFalse(string? invalidCid)
88 {
89 // Act
90 var success = Cid.TryParse(invalidCid, null, out var cid);
91
92 // Assert
93 Assert.False(success);
94 Assert.Null(cid);
95 }
96
97 [Fact]
98 public void Equals_SameValue_ReturnsTrue()
99 {
100 // Arrange
101 var cid1 = Cid.Parse("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", null);
102 var cid2 = Cid.Parse("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", null);
103
104 // Act & Assert
105 Assert.True(cid1.Equals(cid2));
106 Assert.True(cid1 == cid2);
107 }
108
109 [Fact]
110 public void Equals_DifferentValue_ReturnsFalse()
111 {
112 // Arrange
113 var cid1 = Cid.Parse("QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", null);
114 var cid2 = Cid.Parse("bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", null);
115
116 // Act & Assert
117 Assert.False(cid1.Equals(cid2));
118 Assert.False(cid1 == cid2);
119 }
120
121 [Fact]
122 public void ToString_ReturnsValue()
123 {
124 // Arrange
125 const string cidString = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";
126 var cid = Cid.Parse(cidString, null);
127
128 // Act
129 var result = cid.ToString();
130
131 // Assert
132 Assert.Equal(cidString, result);
133 }
134
135 [Fact]
136 public void ImplicitConversion_ToString_ReturnsValue()
137 {
138 // Arrange
139 const string cidString = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";
140 var cid = Cid.Parse(cidString, null);
141
142 // Act
143 string result = cid;
144
145 // Assert
146 Assert.Equal(cidString, result);
147 }
148
149 [Fact]
150 public void ExplicitConversion_FromString_ReturnsCid()
151 {
152 // Arrange
153 const string cidString = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";
154
155 // Act
156 var cid = (Cid)cidString;
157
158 // Assert
159 Assert.Equal(cidString, cid.Value);
160 }
161
162 [Fact]
163 public void Load_AnyString_ReturnsCid()
164 {
165 // Arrange
166 const string cidString = "anyStringValue";
167
168 // Act
169 var cid = Cid.Load(cidString);
170
171 // Assert
172 Assert.NotNull(cid);
173 Assert.Equal(cidString, cid.Value);
174 }
175}