Skip to content

Commit 6096c74

Browse files
committed
update
1 parent 6c0d538 commit 6096c74

File tree

4 files changed

+53
-36
lines changed

4 files changed

+53
-36
lines changed

R8.DateTimeLocalization.Tests/MemoryTests.cs

+15-14
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
using System.Diagnostics;
22
using System.Runtime.InteropServices;
33
using FluentAssertions;
4+
using R8.DateTimeLocalization;
45
using R8.DateTimeLocalization.Tests.Timezones;
56
using Xunit.Abstractions;
67

7-
namespace R8.DateTimeLocalization.Tests;
8+
namespace R8.TimezoneDateTimeization.Tests;
89

910
public class MemoryTests : IAsyncLifetime
1011
{
@@ -34,7 +35,7 @@ public void SizeOf()
3435
var dtSize = sizeof(DateTime);
3536
var tzdtSize = Marshal.SizeOf<TimezoneDateTime>();
3637
_outputHelper.WriteLine($"DateTime size: {dtSize}");
37-
_outputHelper.WriteLine($"DateTimeLocal size: {tzdtSize}");
38+
_outputHelper.WriteLine($"TimezoneDateTime size: {tzdtSize}");
3839

3940
tzdtSize.Should().Be(16);
4041
}
@@ -73,7 +74,7 @@ public void AddYears_AddMinutes_AddSeconds_UTC()
7374
}
7475

7576
stopWatch.Stop();
76-
_outputHelper.WriteLine($"DateTimeLocal AddYears: {stopWatch.ElapsedMilliseconds} ms");
77+
_outputHelper.WriteLine($"TimezoneDateTime AddYears: {stopWatch.ElapsedMilliseconds} ms");
7778

7879
Assert.True(true);
7980
}
@@ -111,7 +112,7 @@ public void AddYears_AddMinutes_AddSeconds_Tehran()
111112
}
112113

113114
stopWatch.Stop();
114-
_outputHelper.WriteLine($"DateTimeLocal AddYears: {stopWatch.ElapsedMilliseconds} ms");
115+
_outputHelper.WriteLine($"TimezoneDateTime AddYears: {stopWatch.ElapsedMilliseconds} ms");
115116

116117
Assert.True(true);
117118
}
@@ -148,7 +149,7 @@ public void AddYears_UTC()
148149
}
149150

150151
stopWatch.Stop();
151-
_outputHelper.WriteLine($"DateTimeLocal AddYears: {stopWatch.ElapsedMilliseconds} ms");
152+
_outputHelper.WriteLine($"TimezoneDateTime AddYears: {stopWatch.ElapsedMilliseconds} ms");
152153

153154
Assert.True(true);
154155
}
@@ -186,7 +187,7 @@ public void AddYears_Tehran()
186187
}
187188

188189
stopWatch.Stop();
189-
_outputHelper.WriteLine($"DateTimeLocal AddYears: {stopWatch.ElapsedMilliseconds} ms");
190+
_outputHelper.WriteLine($"TimezoneDateTime AddYears: {stopWatch.ElapsedMilliseconds} ms");
190191

191192
Assert.True(true);
192193
}
@@ -217,7 +218,7 @@ public void GetYear_UTC()
217218
}
218219

219220
stopWatch.Stop();
220-
_outputHelper.WriteLine($"DateTimeLocal GetYear: {stopWatch.ElapsedMilliseconds} ms");
221+
_outputHelper.WriteLine($"TimezoneDateTime GetYear: {stopWatch.ElapsedMilliseconds} ms");
221222

222223
Assert.True(true);
223224
}
@@ -248,7 +249,7 @@ public void GetYear_Tehran()
248249
}
249250

250251
stopWatch.Stop();
251-
_outputHelper.WriteLine($"DateTimeLocal GetYear: {stopWatch.ElapsedMilliseconds} ms");
252+
_outputHelper.WriteLine($"TimezoneDateTime GetYear: {stopWatch.ElapsedMilliseconds} ms");
252253

253254
Assert.True(true);
254255
}
@@ -279,7 +280,7 @@ public void GetMinute_UTC()
279280
}
280281

281282
stopWatch.Stop();
282-
_outputHelper.WriteLine($"DateTimeLocal GetMinute: {stopWatch.ElapsedMilliseconds} ms");
283+
_outputHelper.WriteLine($"TimezoneDateTime GetMinute: {stopWatch.ElapsedMilliseconds} ms");
283284

284285
Assert.True(true);
285286
}
@@ -310,7 +311,7 @@ public void GetMinute_Tehran()
310311
}
311312

312313
stopWatch.Stop();
313-
_outputHelper.WriteLine($"DateTimeLocal GetMinute: {stopWatch.ElapsedMilliseconds} ms");
314+
_outputHelper.WriteLine($"TimezoneDateTime GetMinute: {stopWatch.ElapsedMilliseconds} ms");
314315

315316
Assert.True(true);
316317
}
@@ -335,7 +336,7 @@ public void GetStartOfNextWeek_Tehran()
335336
}
336337

337338
stopWatch.Stop();
338-
_outputHelper.WriteLine($"DateTimeLocal GetStartOfNextWeek: {stopWatch.ElapsedMilliseconds} ms");
339+
_outputHelper.WriteLine($"TimezoneDateTime GetStartOfNextWeek: {stopWatch.ElapsedMilliseconds} ms");
339340

340341
Assert.True(true);
341342
}
@@ -360,7 +361,7 @@ public void GetStartOfNextMonth_Tehran()
360361
}
361362

362363
stopWatch.Stop();
363-
_outputHelper.WriteLine($"DateTimeLocal GetStartOfNextMonth: {stopWatch.ElapsedMilliseconds} ms");
364+
_outputHelper.WriteLine($"TimezoneDateTime GetStartOfNextMonth: {stopWatch.ElapsedMilliseconds} ms");
364365

365366
Assert.True(true);
366367
}
@@ -385,7 +386,7 @@ public void GetStartOfWeek_Tehran()
385386
}
386387

387388
stopWatch.Stop();
388-
_outputHelper.WriteLine($"DateTimeLocal GetStartOfWeek: {stopWatch.ElapsedMilliseconds} ms");
389+
_outputHelper.WriteLine($"TimezoneDateTime GetStartOfWeek: {stopWatch.ElapsedMilliseconds} ms");
389390

390391
Assert.True(true);
391392
}
@@ -410,7 +411,7 @@ public void GetStartOfNextDay_Tehran()
410411
}
411412

412413
stopWatch.Stop();
413-
_outputHelper.WriteLine($"DateTimeLocal GetStartOfNextDay: {stopWatch.ElapsedMilliseconds} ms");
414+
_outputHelper.WriteLine($"TimezoneDateTime GetStartOfNextDay: {stopWatch.ElapsedMilliseconds} ms");
414415

415416
Assert.True(true);
416417
}

R8.DateTimeLocalization.Tests/R8.DateTimeLocalization.Tests.csproj

+8
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,16 @@
1212

1313
<ItemGroup>
1414
<PackageReference Include="FluentAssertions" Version="8.1.1"/>
15+
<PackageReference Include="FluentAssertions.Analyzers" Version="0.34.1">
16+
<PrivateAssets>all</PrivateAssets>
17+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
18+
</PackageReference>
1519
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0"/>
1620
<PackageReference Include="xunit" Version="2.9.3"/>
21+
<PackageReference Include="xunit.analyzers" Version="1.20.0">
22+
<PrivateAssets>all</PrivateAssets>
23+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
24+
</PackageReference>
1725
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
1826
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1927
<PrivateAssets>all</PrivateAssets>

R8.DateTimeLocalization/R8.DateTimeLocalization.csproj

+8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9+
<PackageReference Include="Meziantou.Analyzer" Version="2.0.188">
10+
<PrivateAssets>all</PrivateAssets>
11+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
12+
</PackageReference>
13+
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0">
14+
<PrivateAssets>all</PrivateAssets>
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
</PackageReference>
917
<PackageReference Include="NodaTime" Version="3.2.1"/>
1018
</ItemGroup>
1119

R8.DateTimeLocalization/TimezoneDateTime.cs

+22-22
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace R8.DateTimeLocalization;
1212
/// Represents an instant in time, typically expressed as a date and time of day according to a particular calendar and
1313
/// time zone.
1414
/// </summary>
15-
[JsonConverter(typeof(DateTimeLocalJsonConverter))]
15+
[JsonConverter(typeof(CustomJsonConverter))]
1616
public readonly struct TimezoneDateTime : IComparable, IComparable<TimezoneDateTime>, IEquatable<TimezoneDateTime>, IFormattable
1717
{
1818
private readonly ushort _timezone;
@@ -188,7 +188,7 @@ public DateTime GetDateTime()
188188
[MethodImpl(MethodImplOptions.AggressiveInlining)]
189189
public ITimezone GetTimezone()
190190
{
191-
return LocalTimezone.Mappings[_timezone].GetTimezone()!;
191+
return LocalTimezone.Mappings[_timezone].GetTimezone();
192192
}
193193

194194
/// <summary>
@@ -223,7 +223,7 @@ public TimezoneDateTime GetStartOfHour()
223223
var currentYear = zoned?.Year ?? dateTime.Year;
224224
var currentHour = zoned?.Hour ?? dateTime.Hour;
225225

226-
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, 0, 0, timezoneInfo.GetTimezone()!);
226+
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, 0, 0, timezoneInfo.GetTimezone());
227227
}
228228

229229
/// <summary>
@@ -243,7 +243,7 @@ public TimezoneDateTime GetEndOfHour()
243243
var currentYear = zoned?.Year ?? dateTime.Year;
244244
var currentHour = zoned?.Hour ?? dateTime.Hour;
245245

246-
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, 59, 59, 9999999, timezoneInfo.GetTimezone()!);
246+
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, 59, 59, 9999999, timezoneInfo.GetTimezone());
247247
}
248248

249249
/// <summary>
@@ -264,7 +264,7 @@ public TimezoneDateTime GetStartOfMinute()
264264
var currentHour = zoned?.Hour ?? dateTime.Hour;
265265
var currentMinute = zoned?.Minute ?? dateTime.Minute;
266266

267-
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, currentMinute, 0, timezoneInfo.GetTimezone()!);
267+
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, currentMinute, 0, timezoneInfo.GetTimezone());
268268
}
269269

270270
/// <summary>
@@ -285,7 +285,7 @@ public TimezoneDateTime GetEndOfMinute()
285285
var currentHour = zoned?.Hour ?? dateTime.Hour;
286286
var currentMinute = zoned?.Minute ?? dateTime.Minute;
287287

288-
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, currentMinute, 59, 9999999, timezoneInfo.GetTimezone()!);
288+
return new TimezoneDateTime(currentYear, currentMonth, currentDay, currentHour, currentMinute, 59, 9999999, timezoneInfo.GetTimezone());
289289
}
290290

291291
/// <summary>
@@ -305,7 +305,7 @@ public TimezoneDateTime GetStartOfDay()
305305
var currentMonth = zoned?.Month ?? dateTime.Month;
306306
var currentYear = zoned?.Year ?? dateTime.Year;
307307

308-
return new TimezoneDateTime(currentYear, currentMonth, currentDay, 0, 0, 0, timezoneInfo.GetTimezone()!);
308+
return new TimezoneDateTime(currentYear, currentMonth, currentDay, 0, 0, 0, timezoneInfo.GetTimezone());
309309
}
310310

311311
/// <summary>
@@ -324,12 +324,12 @@ public TimezoneDateTime GetStartOfNextDay()
324324
var daysInMonth = timezoneInfo.Clock.Calendar.GetDaysInMonth(currentYear, currentMonth);
325325
if (currentDay == daysInMonth)
326326
{
327-
if (currentMonth == 12) return new TimezoneDateTime(currentYear + 1, 1, 1, 0, 0, 0, timezoneInfo.GetTimezone()!);
327+
if (currentMonth == 12) return new TimezoneDateTime(currentYear + 1, 1, 1, 0, 0, 0, timezoneInfo.GetTimezone());
328328

329-
return new TimezoneDateTime(currentYear, currentMonth + 1, 1, 0, 0, 0, timezoneInfo.GetTimezone()!);
329+
return new TimezoneDateTime(currentYear, currentMonth + 1, 1, 0, 0, 0, timezoneInfo.GetTimezone());
330330
}
331331

332-
return new TimezoneDateTime(currentYear, currentMonth, currentDay + 1, 0, 0, 0, timezoneInfo.GetTimezone()!);
332+
return new TimezoneDateTime(currentYear, currentMonth, currentDay + 1, 0, 0, 0, timezoneInfo.GetTimezone());
333333
}
334334

335335
/// <summary>
@@ -348,7 +348,7 @@ public TimezoneDateTime GetEndOfDay()
348348
var currentMonth = zoned?.Month ?? dateTime.Month;
349349
var currentYear = zoned?.Year ?? dateTime.Year;
350350

351-
return new TimezoneDateTime(currentYear, currentMonth, currentDay, 23, 59, 59, 9999999, timezoneInfo.GetTimezone()!);
351+
return new TimezoneDateTime(currentYear, currentMonth, currentDay, 23, 59, 59, 9999999, timezoneInfo.GetTimezone());
352352
}
353353

354354
/// <summary>
@@ -366,7 +366,7 @@ public TimezoneDateTime GetStartOfMonth()
366366
var currentMonth = zoned?.Month ?? dateTime.Month;
367367
var currentYear = zoned?.Year ?? dateTime.Year;
368368

369-
return new TimezoneDateTime(currentYear, currentMonth, 1, 0, 0, 0, timezoneInfo.GetTimezone()!);
369+
return new TimezoneDateTime(currentYear, currentMonth, 1, 0, 0, 0, timezoneInfo.GetTimezone());
370370
}
371371

372372
/// <summary>
@@ -385,7 +385,7 @@ public TimezoneDateTime GetEndOfMonth()
385385
var currentYear = zoned?.Year ?? dateTime.Year;
386386
var daysInMonth = timezoneInfo.Clock.Calendar.GetDaysInMonth(currentYear, currentMonth);
387387

388-
return new TimezoneDateTime(currentYear, currentMonth, daysInMonth, 23, 59, 59, 9999999, timezoneInfo.GetTimezone()!);
388+
return new TimezoneDateTime(currentYear, currentMonth, daysInMonth, 23, 59, 59, 9999999, timezoneInfo.GetTimezone());
389389
}
390390

391391
/// <summary>
@@ -401,9 +401,9 @@ public TimezoneDateTime GetStartOfNextMonth()
401401
var currentMonth = zoned?.Month ?? dateTime.Month;
402402
var currentYear = zoned?.Year ?? dateTime.Year;
403403
if (currentMonth == 12)
404-
return new TimezoneDateTime(currentYear + 1, 1, 1, 0, 0, 0, timezoneInfo.GetTimezone()!);
404+
return new TimezoneDateTime(currentYear + 1, 1, 1, 0, 0, 0, timezoneInfo.GetTimezone());
405405

406-
return new TimezoneDateTime(currentYear, currentMonth + 1, 1, 0, 0, 0, timezoneInfo.GetTimezone()!);
406+
return new TimezoneDateTime(currentYear, currentMonth + 1, 1, 0, 0, 0, timezoneInfo.GetTimezone());
407407
}
408408

409409
/// <summary>
@@ -413,7 +413,7 @@ public TimezoneDateTime GetStartOfNextMonth()
413413
public TimezoneDateTime GetStartOfWeek()
414414
{
415415
var firstDayOfWeek = GetFirstDayOfWeek(out var timezoneInfo);
416-
return new TimezoneDateTime(firstDayOfWeek.Year, firstDayOfWeek.Month, firstDayOfWeek.Day, 0, 0, 0, 0, timezoneInfo.GetTimezone()!);
416+
return new TimezoneDateTime(firstDayOfWeek.Year, firstDayOfWeek.Month, firstDayOfWeek.Day, 0, 0, 0, 0, timezoneInfo.GetTimezone());
417417
}
418418

419419
private ZonedDateTime GetFirstDayOfWeek(out LocalTimezoneInfo timezoneInfo)
@@ -446,7 +446,7 @@ public TimezoneDateTime GetEndOfWeek()
446446

447447
var firstDayOfWeek = GetFirstDayOfWeek(out var timezone);
448448
var lastDayOfWeek = firstDayOfWeek.Plus(Duration.FromDays(lastDayIndex));
449-
return new TimezoneDateTime(lastDayOfWeek.Year, lastDayOfWeek.Month, lastDayOfWeek.Day, 23, 59, 59, 9999999, timezone.GetTimezone()!);
449+
return new TimezoneDateTime(lastDayOfWeek.Year, lastDayOfWeek.Month, lastDayOfWeek.Day, 23, 59, 59, 9999999, timezone.GetTimezone());
450450
}
451451

452452
/// <summary>
@@ -473,12 +473,12 @@ public TimezoneDateTime GetStartOfNextWeek()
473473
var dayInNextMonth = firstDayOfNextWeek - daysInMonth;
474474
var nextMonth = currentMonth + 1;
475475
if (nextMonth == 13)
476-
return new TimezoneDateTime(currentYear + 1, 1, dayInNextMonth, 0, 0, 0, timezoneInfo.GetTimezone()!);
476+
return new TimezoneDateTime(currentYear + 1, 1, dayInNextMonth, 0, 0, 0, timezoneInfo.GetTimezone());
477477

478-
return new TimezoneDateTime(currentYear, currentMonth + 1, dayInNextMonth, 0, 0, 0, timezoneInfo.GetTimezone()!);
478+
return new TimezoneDateTime(currentYear, currentMonth + 1, dayInNextMonth, 0, 0, 0, timezoneInfo.GetTimezone());
479479
}
480480

481-
return new TimezoneDateTime(currentYear, currentMonth, firstDayOfNextWeek, 0, 0, 0, timezoneInfo.GetTimezone()!);
481+
return new TimezoneDateTime(currentYear, currentMonth, firstDayOfNextWeek, 0, 0, 0, timezoneInfo.GetTimezone());
482482
}
483483

484484
/// <summary>
@@ -643,7 +643,7 @@ public int CompareTo(object? obj)
643643
return 1;
644644
if (obj is TimezoneDateTime tz)
645645
return Compare(this, tz);
646-
throw new ArgumentException("Argument must be DateTimeLocal");
646+
throw new ArgumentException("Argument must be TimezoneDateTime");
647647
}
648648

649649
public int CompareTo(TimezoneDateTime value)
@@ -953,7 +953,7 @@ public bool IsToday()
953953
return currentYear == today.Year && currentMonth == today.Month && currentDay == today.Day;
954954
}
955955

956-
public class DateTimeLocalJsonConverter : JsonConverter<TimezoneDateTime>
956+
public class CustomJsonConverter : JsonConverter<TimezoneDateTime>
957957
{
958958
public override TimezoneDateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
959959
{

0 commit comments

Comments
 (0)