Guest User

Untitled

a guest
Jun 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. class Token
  2. VOWELS = %w[a e i o u]
  3. CONSONANTS = ("a".."z").to_a - VOWELS
  4. NUMBERS = (0..9).to_a
  5.  
  6. def self.readable(size = 12)
  7. String.new.tap do |s|
  8. half = size / 2
  9.  
  10. 1.upto(size) do |i|
  11. if i == half
  12. char = NUMBERS.sample.to_s
  13. elsif i.odd?
  14. char = CONSONANTS.sample
  15. else
  16. char = VOWELS.sample
  17. end
  18.  
  19. s << (NUMBERS.sample.even? ? char.upcase : char)
  20. end
  21. end
  22. end
  23. end
  24.  
  25. if $0 == __FILE__
  26. require "test/unit"
  27.  
  28. class TokenTest < Test::Unit::TestCase
  29. def test_respect_request_size
  30. assert_equal 4, Token.readable(4).size
  31. assert_equal 5, Token.readable(5).size
  32. assert_equal 6, Token.readable(6).size
  33. assert_equal 7, Token.readable(7).size
  34. assert_equal 8, Token.readable(8).size
  35. end
  36.  
  37. def test_always_insert_a_number
  38. assert_match /\d/, Token.readable(4)
  39. assert_match /\d/, Token.readable(5)
  40. assert_match /\d/, Token.readable(6)
  41. assert_match /\d/, Token.readable(7)
  42. assert_match /\d/, Token.readable(8)
  43. end
  44. end
  45. end
Add Comment
Please, Sign In to add comment