class TestCaseGenerator::GeneratorCplusplus
Public Instance Methods
can_handle?(source_fn)
click to toggle source
# File lib/test_case_generator/generator_cplusplus.rb, line 6 def can_handle?(source_fn) File.extname(source_fn).eql? '.cpp' end
make_class_name(filename)
click to toggle source
# File lib/test_case_generator/generator_cplusplus.rb, line 15 def make_class_name(filename) File.basename filename, '.*' end
write(ctx, source_fn)
click to toggle source
# File lib/test_case_generator/generator_cplusplus.rb, line 10 def write(ctx, source_fn) write_skeleton source_fn unless File.exist? source_fn write_source ctx, source_fn end
write_skeleton(source_fn)
click to toggle source
# File lib/test_case_generator/generator_cplusplus.rb, line 19 def write_skeleton(source_fn) class_name = make_class_name(source_fn) File.open(source_fn, 'w') do |f| writer = IndentedWriter.new f writer.puts <<EOS #include <gtest/gtest.h> class #{class_name} : public testing::Test { protected: // TODO: Declares the variables your tests want to use. protected: virtual void SetUp() { } virtual void TearDown() { } protected: // TODO: ここにアクションを書いてください }; // %% EOS end end
write_source(dsl_context, source_fn)
click to toggle source
# File lib/test_case_generator/generator_cplusplus.rb, line 47 def write_source(dsl_context, source_fn) class_name = make_class_name(source_fn) tmp_fn = source_fn + '.tmp' source = File.open(source_fn).read File.open(tmp_fn, 'w') do |f| source.each_line do |line| f.puts line break if line =~ /^\s*\/\/\s*%%\s*$/ end writer = IndentedWriter.new f writer.blank writer.puts '//' writer.puts '// 以下の行は自動生成されているので直接編集しないでください。' writer.puts '//' writer.puts '// Generated by Test Case Generator' writer.puts '// https://rubygems.org/gems/test_case_generator' writer.puts '//' dsl_context.each do |pattern| method_name = pattern.join '_' writer.blank writer.puts "TEST_F(#{class_name}, #{method_name}) {" pattern.each do |ptn| writer.block_indent ' ' do writer.puts "#{ptn}();" end end writer.puts '}' end # writer.blank end FileUtils.move tmp_fn, source_fn end