fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. public class Test
  6. {
  7. public static Func<string,bool> MinimumLength(int _minLength)
  8. {
  9. return (password) =>
  10. password != null
  11. && password.Length >= _minLength;
  12. }
  13.  
  14. public static bool MustHaveDigits(string password)
  15. {
  16. if (password == null) return false;
  17. return password.ToCharArray().Any(c => char.IsDigit(c));
  18. }
  19.  
  20. public static bool MustHaveUppercase(string password)
  21. {
  22. if (password == null) return false;
  23. return password.ToCharArray().Any(c => char.IsUpper(c));
  24. }
  25.  
  26.  
  27. public static void Main()
  28. {
  29. Func<IEnumerable<Func<string,bool>>, Func<string, bool>> createPasswordPolicy = (policy) => (pw) => policy.All(check => check(pw));
  30.  
  31. var isValidShort = createPasswordPolicy(new List<Func<string, bool>>() {
  32. Test.MinimumLength(8),
  33. Test.MustHaveDigits,
  34. Test.MustHaveUppercase,
  35. });
  36.  
  37. var isValidLong = createPasswordPolicy(new List<Func<string, bool>>() {
  38. Test.MinimumLength(10),
  39. Test.MustHaveDigits,
  40. Test.MustHaveUppercase,
  41. });
  42.  
  43.  
  44. System.Console.WriteLine(isValidShort("Password1")); // True
  45. System.Console.WriteLine(isValidShort("Password123")); // True
  46. System.Console.WriteLine(isValidShort(null)); // False
  47. System.Console.WriteLine(isValidShort("")); // False
  48.  
  49. System.Console.WriteLine(isValidLong("Password123")); // True
  50. System.Console.WriteLine(isValidLong("Password1")); // False
  51. System.Console.WriteLine(isValidLong(null)); // False
  52. System.Console.WriteLine(isValidLong("")); // False
  53. }
  54.  
  55. }
Success #stdin #stdout 0s 131520KB
stdin
Standard input is empty
stdout
True
True
False
False
True
False
False
False