module GreenDay::TestBuilder

Public Instance Methods

build_example(submit_file_path, input, output) click to toggle source
# File lib/green_day/test_builder.rb, line 15
    def build_example(submit_file_path, input, output)
      <<~SPEC
        #{tab}it 'test with #{unify_cr_lf(input)}' do
        #{tab}#{tab}io = IO.popen("ruby #{submit_file_path}", "w+")
        #{tab}#{tab}io.puts(#{unify_cr_lf(input)})
        #{tab}#{tab}io.close_write
        #{tab}#{tab}expect(io.readlines.join).to eq(#{unify_cr_lf(output)})
        #{tab}end
      SPEC
    end
build_test(submit_file_path, input_output_hash) click to toggle source
# File lib/green_day/test_builder.rb, line 7
    def build_test(submit_file_path, input_output_hash)
      <<~SPEC
        RSpec.describe 'test' do
        #{input_output_hash.map { |input, output| build_example(submit_file_path, input, output) }.join("\n")}
        end
      SPEC
    end
tab() click to toggle source
# File lib/green_day/test_builder.rb, line 32
def tab
  "\s\s"
end
unify_cr_lf(string) click to toggle source
# File lib/green_day/test_builder.rb, line 26
def unify_cr_lf(string)
  return unless string # たまに画像で例を出してくるとsampleの文字がなくなる

  string.gsub(/\R/, "\n").dump
end