|
| 1 | +using System; |
1 | 2 | using System.Collections.Generic; |
2 | 3 | using NUnit.Framework; |
3 | 4 | using Shouldly; |
@@ -33,6 +34,27 @@ public void DefaultSettings_HappyPath() |
33 | 34 | randomCode2.Length.ShouldBe(7); |
34 | 35 | randomCode1.ShouldNotBe(randomCode2); |
35 | 36 | } |
| 37 | + |
| 38 | + [Test] |
| 39 | + public void YouTubeStyleSettings_HappyPath() |
| 40 | + { |
| 41 | + ShortCode.InitYouTubeStyle(resetGenerators: true); |
| 42 | + |
| 43 | + var sequentialCode1 = ShortCode.GenerateSequentialShortCode(); |
| 44 | + sequentialCode1.Length.ShouldBe(11); |
| 45 | + sequentialCode1.ShouldBe("AAAAAAAAAAB"); |
| 46 | + |
| 47 | + var sequentialCode2 = ShortCode.GenerateSequentialShortCode(); |
| 48 | + sequentialCode2.Length.ShouldBe(11); |
| 49 | + sequentialCode2.ShouldBe("AAAAAAAAAAC"); |
| 50 | + |
| 51 | + var randomCode1 = ShortCode.GenerateRandomShortCode(); |
| 52 | + randomCode1.Length.ShouldBe(11); |
| 53 | + |
| 54 | + var randomCode2 = ShortCode.GenerateRandomShortCode(); |
| 55 | + randomCode2.Length.ShouldBe(11); |
| 56 | + randomCode1.ShouldNotBe(randomCode2); |
| 57 | + } |
36 | 58 |
|
37 | 59 | [Test] |
38 | 60 | [TestCaseSource(sourceName: nameof(Lengths))] |
@@ -103,6 +125,48 @@ public void Use_SetsTheInternalGeneratorToCryptographicallyRandom() |
103 | 125 | generator.ShouldBeOfType(typeof(CryptographicallyRandomCodeGenerator)); |
104 | 126 | } |
105 | 127 |
|
| 128 | + [Test] |
| 129 | + public void InitYouTubeStyle_ShouldSetupForYouTubeStyle() |
| 130 | + { |
| 131 | + // arrange |
| 132 | + dynamic shortCode = typeof(ShortCode).Jailbreak(); |
| 133 | + var originalRandGenerator = (IShortCodeGenerator)shortCode._randomGenerator; |
| 134 | + var originalSeqGenerator = (IShortCodeGenerator)shortCode._sequentialCodeGenerator; |
| 135 | + |
| 136 | + // Act |
| 137 | + ShortCode.InitYouTubeStyle(); |
| 138 | + |
| 139 | + // Assert |
| 140 | + ((int)shortCode._defaultLength).ShouldBe(11); |
| 141 | + ((IShortCodeGenerator)shortCode._randomGenerator).ShouldBe(originalRandGenerator); |
| 142 | + ((IShortCodeGenerator)shortCode._sequentialCodeGenerator).ShouldBe(originalSeqGenerator); |
| 143 | + |
| 144 | + dynamic encoder = ((Encoder)shortCode._encoder).Jailbreak(); |
| 145 | + var characterSpace = (string)encoder._characterSpace; |
| 146 | + characterSpace.ShouldBe(NamedCharacterSpaces.UrlSafeBase64); |
| 147 | + } |
| 148 | + |
| 149 | + [Test] |
| 150 | + public void InitYouTubeStyleWithReset_ShouldSetupForYouTubeStyle() |
| 151 | + { |
| 152 | + // arrange |
| 153 | + dynamic shortCode = typeof(ShortCode).Jailbreak(); |
| 154 | + var originalRandGenerator = (IShortCodeGenerator)shortCode._randomGenerator; |
| 155 | + var originalSeqGenerator = (IShortCodeGenerator)shortCode._sequentialCodeGenerator; |
| 156 | + |
| 157 | + // Act |
| 158 | + ShortCode.InitYouTubeStyle(resetGenerators: true); |
| 159 | + |
| 160 | + // Assert |
| 161 | + ((int)shortCode._defaultLength).ShouldBe(11); |
| 162 | + ((IShortCodeGenerator)shortCode._randomGenerator).ShouldNotBe(originalRandGenerator); |
| 163 | + ((IShortCodeGenerator)shortCode._sequentialCodeGenerator).ShouldNotBe(originalSeqGenerator); |
| 164 | + |
| 165 | + dynamic encoder = ((Encoder)shortCode._encoder).Jailbreak(); |
| 166 | + var characterSpace = (string)encoder._characterSpace; |
| 167 | + characterSpace.ShouldBe(NamedCharacterSpaces.UrlSafeBase64); |
| 168 | + } |
| 169 | + |
106 | 170 | private static IEnumerable<int> Lengths() |
107 | 171 | { |
108 | 172 | for (int i = 1; i <= 9; i++) |
|
0 commit comments