コード例 #1
0
        public void IsValidMethodHandlingNullException()
        {
            Console.WriteLine("In test");
            var validator = new EgnValidator();

            Assert.Throws <ArgumentNullException>(() => validator.IsValid(null));
        }
コード例 #2
0
        public void IsValidMethodShouldReturnFalseForValidEgnWithParametersAndCustomeMessage(string egn, string message)
        {
            //Премахва повторяемостта ако например тестваме egn с различни стойности
            var validator = new EgnValidator();

            var result = validator.IsValid(egn);

            Assert.IsTrue(result, message);
        }
コード例 #3
0
        public void IsValidAcceptsNullAsParameter(string egn, string message)
        {
            //Arrange
            var validator = new EgnValidator();

            //Assert
            Assert.Throws <ArgumentNullException>(
                () => validator.IsValid(egn), message);
            //Assert.IsFalse(condition, message); // All are false
        }
コード例 #4
0
        public static void Main()
        {
            var valid = new List <string>()
            {
                "6101057509",
                "7907150625"
            };

            var invalid = new List <string>()
            {
                "-907150625",
                "2790715062",
                "79131506252",
                "9122150625",
                "7935150625",
                "7948150625",
                "7955150625",
            };

            try
            {
                IEgnValidator validator = new EgnValidator();
                Console.WriteLine("-------------- Valid ------------------");
                foreach (var egn in valid)
                {
                    Console.WriteLine($"{egn} => {validator.Validate(egn)}");
                }

                Console.WriteLine("------------- Invalid -----------------");
                foreach (var egn in invalid)
                {
                    Console.WriteLine($"{egn} => {validator.Validate(egn)}");
                }

                Console.WriteLine("------------ Generate -----------------");
                var generated = validator.Generate(new DateTime(1979, 7, 15), "Бургас", true);
                foreach (var egn in generated)
                {
                    Console.WriteLine($"{egn} => {validator.Validate(egn)}");
                }

                validator.Generate(DateTime.Today, string.Empty, false);
            }
            catch (InvalidCityException cityException)
            {
                Console.WriteLine(cityException.GetType().FullName);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.GetType().Name);
                Console.WriteLine(exception.Message);
                Console.WriteLine(exception.Source);
                Console.WriteLine(exception.StackTrace);
            }
        }
コード例 #5
0
        public void IsValidShouldReturnFalse(string egn, string message)
        {
            //Arrange
            var validator = new EgnValidator();

            //Act
            var condition = validator.IsValid(egn);

            //Assert
            Assert.IsFalse(condition, message); // All are false
        }
コード例 #6
0
        public void IsValidShouldReturnTrue(string egn)
        {
            //Arrange
            var validator = new EgnValidator();

            //Act
            var result = validator.IsValid(egn);

            //Assert
            Assert.AreEqual(result, true);     // true -> a valid Egn
        }
コード例 #7
0
        public void isValidMethodShouldReturnFalse(string egn)
        {
            // Arrange
            EgnValidator validate = new EgnValidator();

            // Act
            bool result = validate.IsValid(egn);

            // Assert
            Assert.IsFalse(result);
        }
コード例 #8
0
        public void isValidMethodShouldReturnTrueForValidEgnFor20thCentury(string egn)
        {
            // Arrange
            EgnValidator validate = new EgnValidator();

            // Act
            bool result = validate.IsValid(egn);

            // Assert
            Assert.AreEqual(true, result);
        }
コード例 #9
0
        public void IsValidMethodShouldReturnTrueForValidEgn()
        {
            Console.WriteLine("In test");
            //steps;
            //1. Arrange
            var validator = new EgnValidator();

            //2. Act
            var result = validator.IsValid("6101057509");

            //3. Assert
            Assert.IsTrue(result);
        }
コード例 #10
0
        public void IsValidMethodShouldThrowAnException()
        {
            EgnValidator validate = new EgnValidator();

            try
            {
                validate.IsValid(null);
                Assert.Fail();
            }
            catch
            {
            }
        }
コード例 #11
0
        public void ValidateMethodShouldBeTurnTrueForValidEgn_ForOneTest()
        {
            //arrange
            var validate = new EgnValidator();

            Assert.Throws <ArgumentNullException>(() => validate.IsValid(null));
            //act
            var result = validate.IsValid("6101057509");

            //exceptions
            Assert.That(() => validate.IsValid(null), Throws.ArgumentNullException);
            Assert.Throws <ArgumentNullException>(() => validate.IsValid(null));
            //Assert
            Assert.IsTrue(result);
        }
コード例 #12
0
        /// <summary>
        /// Validates student information
        /// </summary>
        /// <param name="student">Student information</param>
        /// <param name="isExisting">True if we validating an existing student</param>
        /// <returns>Whether the student information is valid</returns>
        private bool IsStudentValid(Student student, bool isExisting = false)
        {
            const int MAX_NAME_LENGTH = 32;
            const int MIN_PASS_LENGTH = 4;
            const int MAX_PASS_LENGTH = 32;

            if (string.IsNullOrEmpty(student.Username) ||
                string.IsNullOrWhiteSpace(student.Username))
            {
                return(false);
            }

            if (!Regex.IsMatch(student.Username, "^[a-zA-Z]+[a-zA-Z0-9_\\.]*$"))
            {
                return(false);
            }

            if (student.Username.Length > MAX_NAME_LENGTH)
            {
                return(false);
            }

            if (string.IsNullOrEmpty(student.FirstName) ||
                string.IsNullOrWhiteSpace(student.FirstName))
            {
                return(false);
            }

            if (!Regex.IsMatch(student.FirstName, "\\A[а-яА-Я]+(-)?[а-яА-Я]+\\Z"))
            {
                return(false);
            }

            if (student.FirstName.Length > MAX_NAME_LENGTH)
            {
                return(false);
            }

            if (string.IsNullOrEmpty(student.MiddleName) ||
                string.IsNullOrWhiteSpace(student.MiddleName))
            {
                return(false);
            }

            if (!Regex.IsMatch(student.MiddleName, "\\A[а-яА-Я]+(-)?[а-яА-Я]+\\Z"))
            {
                return(false);
            }

            if (student.MiddleName.Length > MAX_NAME_LENGTH)
            {
                return(false);
            }

            if (string.IsNullOrEmpty(student.LastName) ||
                string.IsNullOrWhiteSpace(student.LastName))
            {
                return(false);
            }

            if (!Regex.IsMatch(student.LastName, "\\A[а-яА-Я]+(-)?[а-яА-Я]+\\Z"))
            {
                return(false);
            }

            if (student.LastName.Length > MAX_NAME_LENGTH)
            {
                return(false);
            }

            if (!EgnValidator.IsEgnValid(student.EGN))
            {
                return(false);
            }

            if (string.IsNullOrEmpty(student.PasswordHash) ||
                string.IsNullOrWhiteSpace(student.PasswordHash))
            {
                return(false);
            }

            if (student.PasswordHash.Length < MIN_PASS_LENGTH ||
                student.PasswordHash.Length > MAX_PASS_LENGTH)
            {
                return(false);
            }

            // we are editing the student - his username and EGN already exist
            if (!isExisting)
            {
                if (entityContext.Students.Any(s => s.Username == student.Username ||
                                               s.EGN == student.EGN))
                {
                    return(false);
                }

                if (entityContext.Students.Any(s => s.EGN == student.EGN))
                {
                    return(false);
                }
            }

            return(true);
        }