time = ['2030 10:00-20:00',
'10:00-20:00',
'2030 week 1 10:00-20:00',
'2030 week 1,3 10:00-20:00',
'2030 week 1,3,10-30 10:00-20:00',
'2030 week 1,3,10-30/2 10:00-20:00',
'2030 week 1,3,10-30/2,50 10:00-20:00',
'week 1 10:00-20:00',
'week 1,3 10:00-20:00',
'week 1,3,10-30 10:00-20:00',
'week 1,3,10-30/2 10:00-20:00',
'week 1,3,10-30/2,50 10:00-20:00',
'2030 Jan 10:00-20:00',
'2030 Jan 1-Jun 30 10:00-20:00',
'2030 Jan-2050 Jun 10:00-20:00',
'2030 Jan 10-2050 Jun 30 10:00-20:00',
'2030-2050 10:00-20:00',
'Jan 10:00-20:00',
'Jan 1-Jun 30 10:00-20:00',
'Jan 10-Jun 30 10:00-20:00']
offs = ['2030 off',
'off',
'2030 week 1 off',
'2030 week 1,3 off',
'2030 week 1,3,10-30 off',
'2030 week 1,3,10-30/2 off',
'2030 week 1,3,10-30/2,50 off',
'week 1 off',
'week 1,3 off',
'week 1,3,10-30 off',
'week 1,3,10-30/2 off',
'week 1,3,10-30/2,50 off',
'2030 Jan 1-31 off',
'2030 Jan 1-Jun 30 off',
'2030 Jan-2050 Jun off',
'2030 Jan 10-2050 Jun 30 off',
'2030-2050 off',
'Jan 1-31 off',
'Jan 1-Jun 30 off',
'Jan 10-Jun 30 off']
ph_offs = ['2030 PH off',
'PH off',
'2030 week 1 PH off',
'2030 week 1,3 PH off',
'2030 week 1,3,10-30 PH off',
'2030 week 1,3,10-30/2 PH off',
'2030 week 1,3,10-30/2,50 PH off',
'week 1 PH off',
'week 1,3 PH off',
'week 1,3,10-30 PH off',
'week 1,3,10-30/2 PH off',
'week 1,3,10-30/2,50 PH off',
'2030 Jan 1-31 PH off',
'2030 Jan 1-Jun 30 PH off',
'2030 Jan 1-2050 Jun 30 PH off',
'2030 Jan 10-2050 Jun 30 PH off',
'2030-2050 PH off',
'Jan 1-31 PH off',
'Jan 1-Jun 30 PH off',
'Jan 10-Jun 30 PH off']
multime = ['2030 10:00-20:00,21:00-23:00',
'10:00-20:00,21:00-23:00',
'2030 week 1 10:00-20:00,21:00-23:00',
'2030 week 1,3 10:00-20:00,21:00-23:00',
'2030 week 1,3,10-30 10:00-20:00,21:00-23:00',
'2030 week 1,3,10-30/2 10:00-20:00,21:00-23:00',
'2030 week 1,3,10-30/2,50 10:00-20:00,21:00-23:00',
'week 1 10:00-20:00,21:00-23:00',
'week 1,3 10:00-20:00,21:00-23:00',
'week 1,3,10-30 10:00-20:00,21:00-23:00',
'week 1,3,10-30/2 10:00-20:00,21:00-23:00',
'week 1,3,10-30/2,50 10:00-20:00,21:00-23:00',
'2030 Jan 10:00-20:00,21:00-23:00',
'2030 Jan 1-Jun 30 10:00-20:00,21:00-23:00',
'2030 Jan-2050 Jun 10:00-20:00,21:00-23:00',
'2030 Jan 10-2050 Jun 30 10:00-20:00,21:00-23:00',
'2030-2050 10:00-20:00,21:00-23:00',
'Jan 10:00-20:00,21:00-23:00',
'Jan 1-Jun 30 10:00-20:00,21:00-23:00',
'Jan 10-Jun 30 10:00-20:00,21:00-23:00']
days = ['2030 Mo-Fr 10:00-20:00,21:00-23:00',
'Mo-Fr 10:00-20:00,21:00-23:00',
'2030 week 1 Mo-Fr 10:00-20:00,21:00-23:00',
'2030 week 1,3 Mo-Fr 10:00-20:00,21:00-23:00',
'2030 week 1,3,10-30 Mo-Fr 10:00-20:00,21:00-23:00',
'2030 week 1,3,10-30/2 Mo-Fr 10:00-20:00,21:00-23:00',
'2030 week 1,3,10-30/2,50 Mo-Fr 10:00-20:00,21:00-23:00',
'week 1 Mo-Fr 10:00-20:00,21:00-23:00',
'week 1,3 Mo-Fr 10:00-20:00,21:00-23:00',
'week 1,3,10-30 Mo-Fr 10:00-20:00,21:00-23:00',
'week 1,3,10-30/2 Mo-Fr 10:00-20:00,21:00-23:00',
'week 1,3,10-30/2,50 Mo-Fr 10:00-20:00,21:00-23:00',
'2030 Jan Mo-Fr 10:00-20:00,21:00-23:00',
'2030 Jan 1-Jun 30 Mo-Fr 10:00-20:00,21:00-23:00',
'2030 Jan-2050 Jun Mo-Fr 10:00-20:00,21:00-23:00',
'2030-2050 Mo-Fr 10:00-20:00,21:00-23:00',
'Jan Mo-Fr 10:00-20:00,21:00-23:00',
'Jan 1-Jun 30 Mo-Fr 10:00-20:00,21:00-23:00',
'Jan 10-Jun 30 Mo-Fr 10:00-20:00,21:00-23:00']
combos = [time, offs, ph_offs, multime, days]
@products = []
combos.each_with_index do |ohs, index|
combos.each_with_index do |combo, combo_index|
next if index == combo_index
@products += ohs.product(combo).map { |product| product.join('; ') }
end
end
@products += time
@products += offs
@products += ph_offs
@products += multime
@products += days
passing = @products.select { |oh| @builder.build(@parser.parse(oh)) == oh }
not_passing = @products - passing
File.open('spec/automaticaly_generated_parser_passing_spec.rb', 'w') do |f|
f.write("require 'opening_hours_converter'\n\nRSpec.describe OpeningHoursConverter::OpeningHoursParser, '#parse' do")
f.write(passing.map do |oh|
" it \"#{oh}\" do\n expect(OpeningHoursConverter::OpeningHoursBuilder.new.build(OpeningHoursConverter::OpeningHoursParser.new.parse('#{oh}'))).to eql('#{oh}')\n end\n"
end.join)
f.write('end')
end
File.open('spec/automaticaly_generated_parser_not_passing_spec.rb', 'w') do |f|
f.write("require 'opening_hours_converter'\n\nRSpec.describe OpeningHoursConverter::OpeningHoursParser, '#parse' do")
f.write(not_passing.map do |oh|
" it \"#{oh}\" do\n expect(OpeningHoursConverter::OpeningHoursBuilder.new.build(OpeningHoursConverter::OpeningHoursParser.new.parse('#{oh}'))).to eql('#{oh}')\n # #{OpeningHoursConverter::OpeningHoursBuilder.new.build(OpeningHoursConverter::OpeningHoursParser.new.parse(oh))}\n end\n"
end.join)
f.write('end')
end