Example #1
0
        public void TestFlatDistribution()
        {
            const int count = 100 * 1000;
            var       chars = new Dictionary <char, int>();

            foreach (var dummy in Enumerable.Range(1, count))
            {
                var id = Nanoid.Generate();
                for (var i = 0; i < DefaultSize; i++)
                {
                    var c = id[i];
                    if (!chars.ContainsKey(c))
                    {
                        chars.Add(c, 0);
                    }

                    chars[c] += 1;
                }
            }

            foreach (var c in chars)
            {
                var distribution = c.Value * DefaultAlphabet.Length / (double)(count * DefaultSize);
                Assert.True(ToBeCloseTo(distribution, 1, 1));
            }
        }
Example #2
0
        private static RoomState CreateNewRoom()
        {
            RoomState room = new RoomState();

            room.Id = Nanoid.Generate(size: ROOM_ID_LENGTH);
            return(room);
        }
Example #3
0
        public void TestCustomRandom()
        {
            var random = new Random(10);
            var result = Nanoid.Generate(random);

            Assert.Equal(DefaultSize, result.Length);
        }
Example #4
0
        public void TestPredefinedRandomSequence(int size, string expected)
        {
            byte[] sequence = { 2, 255, 3, 7, 7, 7, 7, 7, 0, 1 };
            var    random   = new PredefinedRandomSequence(sequence);
            var    actual   = Nanoid.Generate(random, "abcde", size);

            Assert.Equal(expected, actual);
        }
Example #5
0
 public void TestMask()
 {
     for (var length = 1; length < 256; length++)
     {
         var mask1 = (2 << (int)Math.Floor(Math.Log(length - 1) / Math.Log(2))) - 1;
         var mask2 = (2 << 31 - Nanoid.Clz32((length - 1) | 1)) - 1;
         Assert.Equal(mask1, mask2);
     }
 }
Example #6
0
        public void TestHasNoCollisions()
        {
            const int count    = 100 * 1000;
            var       dictUsed = new Dictionary <string, bool>();

            foreach (var dummy in Enumerable.Range(1, count))
            {
                var result = Nanoid.Generate();
                Assert.False(dictUsed.TryGetValue(result, out var _));
                dictUsed.Add(result, true);
            }
        }
Example #7
0
        public void TestGeneratesUrlFriendlyIDs()
        {
            foreach (var dummy in Enumerable.Range(1, 10))
            {
                var result = Nanoid.Generate();
                Assert.Equal(DefaultSize, result.Length);

                foreach (var c in result)
                {
                    Assert.Contains(c, result);
                }
            }
        }
Example #8
0
        public async Task TestAsyncGenerate()
        {
            var result = await Nanoid.GenerateAsync();

            Assert.Equal(DefaultSize, result.Length);
        }
Example #9
0
        public void TestCustomAlphabetAndSize()
        {
            var result = Nanoid.Generate("1234abcd", 7);

            Assert.Equal(7, result.Length);
        }
Example #10
0
        public void TestCustomAlphabet()
        {
            var result = Nanoid.Generate("1234abcd");

            Assert.Equal(DefaultSize, result.Length);
        }
Example #11
0
        public void TestCustomSize()
        {
            var result = Nanoid.Generate(size: 10);

            Assert.Equal(10, result.Length);
        }
Example #12
0
        public void TestDefault()
        {
            var result = Nanoid.Generate();

            Assert.Equal(DefaultSize, result.Length);
        }
Example #13
0
        public void TestSingleLetterAlphabet()
        {
            var actual = Nanoid.Generate("a", 5);

            Assert.Equal("aaaaa", actual);
        }