SnowFlakeNewTests.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. using System;
  2. using Masuit.Tools.Strings;
  3. using Masuit.Tools.Systems;
  4. using Xunit;
  5. namespace Masuit.Tools.Abstractions.Test.Systems;
  6. public class SnowFlakeNewTests
  7. {
  8. [Fact]
  9. public void NewId_ShouldReturnUniqueStringId()
  10. {
  11. // Arrange
  12. var snowFlake = SnowFlakeNew.GetInstance();
  13. // Act
  14. var id1 = SnowFlakeNew.NewId;
  15. var id2 = SnowFlakeNew.NewId;
  16. // Assert
  17. Assert.NotNull(id1);
  18. Assert.NotNull(id2);
  19. Assert.NotEqual(id1, id2);
  20. }
  21. [Fact]
  22. public void LongId_ShouldReturnUniqueLongId()
  23. {
  24. // Arrange
  25. var snowFlake = SnowFlakeNew.GetInstance();
  26. // Act
  27. var id1 = SnowFlakeNew.LongId;
  28. var id2 = SnowFlakeNew.LongId;
  29. // Assert
  30. Assert.NotEqual(id1, id2);
  31. }
  32. [Fact]
  33. public void GetInstance_ShouldReturnSameInstance()
  34. {
  35. // Act
  36. var instance1 = SnowFlakeNew.GetInstance();
  37. var instance2 = SnowFlakeNew.GetInstance();
  38. // Assert
  39. Assert.Same(instance1, instance2);
  40. }
  41. [Fact]
  42. public void SetMachienId_ShouldSetWorkerId()
  43. {
  44. // Arrange
  45. var machineId = 100;
  46. // Act
  47. SnowFlakeNew.SetMachienId(machineId);
  48. // Assert
  49. // 使用反射来检查私有字段 _workerId
  50. var field = typeof(SnowFlakeNew).GetField("_workerId", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
  51. var workerId = (long)field.GetValue(null);
  52. Assert.Equal(machineId, workerId);
  53. }
  54. [Fact]
  55. public void SetInitialOffset_ShouldSetOffset()
  56. {
  57. // Arrange
  58. var offset = 123456789L;
  59. // Act
  60. SnowFlakeNew.SetInitialOffset(offset);
  61. // Assert
  62. // 使用反射来检查私有字段 _offset
  63. var field = typeof(SnowFlakeNew).GetField("_offset", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
  64. var actualOffset = (long)field.GetValue(null);
  65. Assert.Equal(offset, actualOffset);
  66. }
  67. [Fact]
  68. public void SetNumberFormater_ShouldSetNumberFormater()
  69. {
  70. // Arrange
  71. var numberFormater = new NumberFormater(36);
  72. // Act
  73. SnowFlakeNew.SetNumberFormater(numberFormater);
  74. // Assert
  75. // 使用反射来检查私有字段 _numberFormater
  76. var field = typeof(SnowFlakeNew).GetField("_numberFormater", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
  77. var actualNumberFormater = (NumberFormater)field.GetValue(null);
  78. Assert.Same(numberFormater, actualNumberFormater);
  79. }
  80. [Fact]
  81. public void GetUniqueId_ShouldReturnUniqueStringId()
  82. {
  83. // Arrange
  84. var snowFlake = SnowFlakeNew.GetInstance();
  85. // Act
  86. var id1 = snowFlake.GetUniqueId();
  87. var id2 = snowFlake.GetUniqueId();
  88. // Assert
  89. Assert.NotNull(id1);
  90. Assert.NotNull(id2);
  91. Assert.NotEqual(id1, id2);
  92. }
  93. [Fact]
  94. public void GetUniqueShortId_ShouldReturnUniqueShortStringId()
  95. {
  96. // Arrange
  97. var snowFlake = SnowFlakeNew.GetInstance();
  98. var maxLength = 8;
  99. // Act
  100. var id1 = snowFlake.GetUniqueShortId(maxLength);
  101. var id2 = snowFlake.GetUniqueShortId(maxLength);
  102. // Assert
  103. Assert.NotNull(id1);
  104. Assert.NotNull(id2);
  105. Assert.NotEqual(id1, id2);
  106. Assert.True(id1.Length <= maxLength);
  107. Assert.True(id2.Length <= maxLength);
  108. }
  109. [Fact]
  110. public void GetUniqueShortId_ShouldThrowException_WhenMaxLengthIsLessThan6()
  111. {
  112. // Arrange
  113. var snowFlake = SnowFlakeNew.GetInstance();
  114. var maxLength = 5;
  115. // Act & Assert
  116. Assert.Throws<ArgumentException>(() => snowFlake.GetUniqueShortId(maxLength));
  117. }
  118. }