Skip to content

Commit 867e120

Browse files
CarlosKrusen
Carlos
authored andcommitted
Add casting operators for int? and long? (#35)
+semver: feature
1 parent 177d418 commit 867e120

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed

Diff for: BencodeNET.Tests/Objects/BNumberTests.cs

+96
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,102 @@ public void ToString_WithFormat_SameAsLong()
159159
str1.Should().Be(str2);
160160
}
161161

162+
[Fact]
163+
public void CanCastFromInt()
164+
{
165+
int number = 12345;
166+
var bnumber = (BNumber)number;
167+
bnumber.Should().Be(12345);
168+
}
169+
170+
[Fact]
171+
public void CanCastFromLong()
172+
{
173+
long number = 12345;
174+
var bnumber = (BNumber)number;
175+
bnumber.Should().Be(12345);
176+
}
177+
178+
[Fact]
179+
public void CanCastFromNullableInt_WhenNull()
180+
{
181+
int? number = null;
182+
var bnumber = (BNumber)number;
183+
bnumber.Should().BeNull();
184+
}
185+
186+
[Fact]
187+
public void CanCastFromNullableLong_WhenNull()
188+
{
189+
long? number = null;
190+
var bnumber = (BNumber)number;
191+
bnumber.Should().BeNull();
192+
}
193+
194+
[Fact]
195+
public void CanCastFromNullableInt_WhenNotNull()
196+
{
197+
int? number = 12345;
198+
var bnumber = (BNumber)number;
199+
bnumber.Should().Be(12345);
200+
}
201+
202+
[Fact]
203+
public void CanCastFromNullableLong_WhenNotNull()
204+
{
205+
long? number = 12345;
206+
var bnumber = (BNumber)number;
207+
bnumber.Should().Be(12345);
208+
}
209+
210+
[Fact]
211+
public void CanCastToInt()
212+
{
213+
BNumber bnumber = new BNumber(12345);
214+
int number = (int)bnumber;
215+
number.Should().Be(12345);
216+
}
217+
218+
[Fact]
219+
public void CanCastToLong()
220+
{
221+
BNumber bnumber = new BNumber(12345);
222+
long number = (long)bnumber;
223+
number.Should().Be(12345);
224+
}
225+
226+
[Fact]
227+
public void CanCastToNullableInt_WhenNull()
228+
{
229+
BNumber bnumber = null;
230+
var number = (int?)bnumber;
231+
number.Should().BeNull();
232+
}
233+
234+
[Fact]
235+
public void CanCastToNullableLong_WhenNull()
236+
{
237+
BNumber bnumber = null;
238+
var number = (long?)bnumber;
239+
number.Should().BeNull();
240+
}
241+
242+
[Fact]
243+
public void CanCastToNullableInt_WhenNotNull()
244+
{
245+
BNumber bnumber = 12345;
246+
var number = (int?)bnumber;
247+
number.Should().Be(12345);
248+
}
249+
250+
[Fact]
251+
public void CanCastToNullableLong_WhenNotNull()
252+
{
253+
BNumber bnumber = 12345;
254+
var number = (long?)bnumber;
255+
number.Should().Be(12345);
256+
}
257+
162258
[Fact]
163259
public void CanCastFromDateTime()
164260
{

Diff for: BencodeNET/Objects/BNumber.cs

+12
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,18 @@ protected override void EncodeObject(BencodeStream stream)
4949
stream.Write(Value);
5050
stream.Write('e');
5151
}
52+
53+
public static implicit operator int?(BNumber bint)
54+
{
55+
if (bint == null) return null;
56+
return (int)bint.Value;
57+
}
58+
59+
public static implicit operator long?(BNumber bint)
60+
{
61+
if (bint == null) return null;
62+
return bint.Value;
63+
}
5264

5365
public static implicit operator int(BNumber bint)
5466
{

0 commit comments

Comments
 (0)