Exemple #1
0
        public void GenerateRandomStringOnlySpecialCharactersTest()
        {
            // Arrange
            var charactersOne   = (Min : 33, Max : 47);
            var charactersTwo   = (Min : 58, Max : 64);
            var charactersThree = (Min : 91, Max : 96);
            var charactersFour  = (Min : 123, Max : 126);
            var stringLength    = 10;
            var options         = new RandomStringOptions
            {
                IncludeSpecialCharacter = true
            };

            // Act
            var result = StringFactory.GenerateRandomString(stringLength, options);

            // Assert
            result.Should().HaveLength(stringLength);
            result.All(c =>
                       Convert.ToByte(c) >= charactersOne.Min && Convert.ToByte(c) <= charactersOne.Max ||
                       Convert.ToByte(c) >= charactersTwo.Min && Convert.ToByte(c) <= charactersTwo.Max ||
                       Convert.ToByte(c) >= charactersThree.Min && Convert.ToByte(c) <= charactersThree.Max ||
                       Convert.ToByte(c) >= charactersFour.Min && Convert.ToByte(c) <= charactersFour.Max
                       ).Should().BeTrue();
        }
Exemple #2
0
        public void GenerateRandomStringNoCharactersEnabledTest()
        {
            // Arrange
            var stringLength = 10;
            var options      = new RandomStringOptions();

            // Act
            StringFactory.GenerateRandomString(stringLength, options);
        }
Exemple #3
0
        public void GenerateRandomStringOnlyUpperCaseTest()
        {
            // Arrange
            var characters   = (Min : 65, Max : 90);
            var stringLength = 10;
            var options      = new RandomStringOptions
            {
                IncludeUppercase = true
            };

            // Act
            var result = StringFactory.GenerateRandomString(stringLength, options);

            // Assert
            result.Should().HaveLength(stringLength);
            result.All(c => Convert.ToByte(c) >= characters.Min && Convert.ToByte(c) <= characters.Max).Should().BeTrue();
        }
Exemple #4
0
        public void GenerateRandomStringOnlyNumbersTest()
        {
            // Arrange
            var numbers      = (Min : 48, Max : 57);
            var stringLength = 10;
            var options      = new RandomStringOptions
            {
                IncludeNumbers = true
            };

            // Act
            var result = StringFactory.GenerateRandomString(stringLength, options);

            // Assert
            result.Should().HaveLength(stringLength);
            result.All(c => Convert.ToByte(c) >= numbers.Min && Convert.ToByte(c) <= numbers.Max).Should().BeTrue();
        }
Exemple #5
0
        public static string RandomString(int Length, RandomStringOptions options = RandomStringOptions.Letters)
        {
            if (Length == 0)
            {
                return("");
            }

            StringBuilder dictionary = new StringBuilder();

            if ((options & RandomStringOptions.Letters) == RandomStringOptions.Letters)
            {
                dictionary.Append(PASSWORD_CHARS_UCASE);
            }
            if ((options & RandomStringOptions.Numbers) == RandomStringOptions.Numbers)
            {
                dictionary.Append(PASSWORD_CHARS_NUMERIC);
            }
            if ((options & RandomStringOptions.SpecialChars) == RandomStringOptions.SpecialChars)
            {
                dictionary.Append(PASSWORD_CHARS_SPECIAL);
            }
            if ((options & RandomStringOptions.Letters) == RandomStringOptions.Letters)
            {
                dictionary.Append(PASSWORD_CHARS_LCASE);
            }
            if ((options & RandomStringOptions.Numbers) == RandomStringOptions.Numbers)
            {
                dictionary.Append(PASSWORD_CHARS_NUMERIC);
            }

            char[] result = new char[Length];
            for (int i = 0; i < Length; i++)
            {
                result[i] = dictionary[random.Next(dictionary.Length)];
            }

            return(new string(result));
        }
Exemple #6
0
        /// <summary>
        /// 根据 RandomStringOptions 生成指定个数的随机字符串
        /// </summary>
        /// <param name="count">生成字符个数</param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static string NextString(int count, RandomStringOptions options)
        {
            if (count <= 0)
            {
                throw new ArgumentException("必须大于0", "count");
            }

            switch (options)
            {
            case RandomStringOptions.Integer:
                return(NextIntCount(count));

            case RandomStringOptions.IntEnglish:
                return(NextIntEnglishCount("0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ", count));

            case RandomStringOptions.IntEnglishLower:
                return(NextIntEnglishCount("0123456789abcdefghigklmnopqrstuvwxyz", count));

            case RandomStringOptions.IntEnglishUpper:
                return(NextIntEnglishCount("0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ", count));

            case RandomStringOptions.English:
                return(NextIntEnglishCount("abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ", count));

            case RandomStringOptions.EnglishLower:
                return(NextIntEnglishCount("abcdefghigklmnopqrstuvwxyz", count));

            case RandomStringOptions.EnglishUpper:
                return(NextIntEnglishCount("ABCDEFGHIGKLMNOPQRSTUVWXYZ", count));

            case RandomStringOptions.Chinese:
                return(NextChineseCount(count));

                /*case RandomStringOptions.ChinesePinyin:
                 *  return ConvertHelper.ChineseToPinyin(NextChineseCount(count));*/
            }
            return(string.Empty);
        }
Exemple #7
0
 public static string RandomString(RandomStringOptions options = RandomStringOptions.Letters)
 {
     return(RandomString(random.Next(DEFAULT_MIN_PASSWORD_LENGTH, DEFAULT_MAX_PASSWORD_LENGTH), options));
 }