diff --git a/pattern_generator.rb b/pattern_generator.rb new file mode 100644 index 0000000..e1048cf --- /dev/null +++ b/pattern_generator.rb @@ -0,0 +1,30 @@ +require 'pry' +class PatternGenerator + + def possible_serial_numbers(pattern) + pattern = pattern.chars + total = (pattern.count("N") * 10)*(pattern.count("X") * 26) + final = [] + letters = [*('A'..'Z')] + numbers = [*(1..9)] + random_number = Random.rand(0..9) + random_letter = letters[Random.rand(0..26)] + until final.count == total + temp = [] + pattern.each do |l| + if l == "N" + temp << random_number + elsif l == "X" + temp << random_letter + end + final = temp.join("") + end + end + end + +end + +# # +# ## +# ### +# in JS diff --git a/pattern_generator_test.rb b/pattern_generator_test.rb new file mode 100644 index 0000000..c3f119d --- /dev/null +++ b/pattern_generator_test.rb @@ -0,0 +1,39 @@ +gem 'minitest', '>= 5.0.0' +require 'minitest/autorun' +require 'minitest/pride' +require_relative 'pattern_generator' + +class PatternGeneratorTest < Minitest::Test + + def test_for_instance_of_class + skip + assert_instance_of PatternGenerator, PatternGenerator.new + end + + def test_can_ouput_one_letter_serials + skip + p = PatternGenerator.new + assert_equal ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"], p.possible_serial_numbers("X") + end + + def test_can_ouput_one_number_serials + skip + p = PatternGenerator.new + assert_equal ["1", "2", "3", "4", "5", "6", "7", "8", "9"], p.possible_serial_numbers("N") + end + + def test_can_ouput_two_character_long_pattern + p = PatternGenerator.new + assert_includes ["AA", "AB"], p.possible_serial_numbers("XX") + end + + + def test_can_ouput_possible_serial_numbers + skip + p = PatternGenerator.new + assert_includes "AA1B2", p.possible_serial_numbers("XXNXN") + end + + + +end