class TestCaseGenerator::GeneratorObjectiveC
Public Instance Methods
can_handle?(source_fn)
click to toggle source
# File lib/test_case_generator/generator_objective_c.rb, line 6 def can_handle?(source_fn) File.extname(source_fn).eql? '.m' end
make_class_name(filename)
click to toggle source
# File lib/test_case_generator/generator_objective_c.rb, line 16 def make_class_name(filename) File.basename filename, '.*' end
write(ctx, source_fn)
click to toggle source
# File lib/test_case_generator/generator_objective_c.rb, line 10 def write(ctx, source_fn) write_skeleton source_fn unless File.exist? source_fn write_header ctx, File.join(File.dirname(source_fn), File.basename(source_fn, File.extname(source_fn)) + 'Generated.h') write_source ctx, source_fn end
write_header(dsl_context, header_fn)
click to toggle source
# File lib/test_case_generator/generator_objective_c.rb, line 53 def write_header(dsl_context, header_fn) protocol_name = File.basename(header_fn, File.extname(header_fn)) tmp_fn = header_fn + '.tmp' File.open(tmp_fn, 'w') do |f| writer = IndentedWriter.new f writer.puts '#import <Foundation/Foundation.h>' writer.blank writer.puts "@protocol #{protocol_name} <NSObject>" dsl_context.labels.each do |label| method_name = Utils.make_method_name label writer.puts "- (void)#{method_name};" end writer.puts '@end' end FileUtils.move tmp_fn, header_fn end
write_skeleton(source_fn)
click to toggle source
# File lib/test_case_generator/generator_objective_c.rb, line 20 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 #import <UIKit/UIKit.h> #import <XCTest/XCTest.h> #import "#{class_name}Generated.h" #pragma mark - #{class_name} @interface #{class_name} : XCTestCase <#{class_name}Generated> @end @implementation #{class_name} - (void)setUp { [super setUp]; } - (void)tearDown { [super tearDown]; } #pragma mark #{class_name}Generated // TODO: ここにアクションを書いてください // %% EOS end end
write_source(dsl_context, source_fn)
click to toggle source
# File lib/test_case_generator/generator_objective_c.rb, line 74 def write_source(dsl_context, 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 "- (void)test_#{method_name} {" pattern.each do |ptn| writer.block_indent ' ' do writer.puts "[self #{ptn}];" end end writer.puts '}' end writer.blank writer.puts '@end' end FileUtils.move tmp_fn, source_fn end