create.rb.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #!/usr/bin/env ruby
  2. # Tool for creating a new unit test case.
  3. require 'erb'
  4. def main
  5. if ARGV.size != 1
  6. usage()
  7. exit 1
  8. end
  9. class_name = ARGV[0]
  10. if class_name !~ /^[a-z0-9]+$/i
  11. print "'#{class_name}' doesn't look like a valid class name.n"
  12. exit 1
  13. end
  14. header = find_header(class_name)
  15. if header.nil?
  16. print "Cannot find header file for #{class_name}.n"
  17. exit 1
  18. end
  19. source = generate_result(class_name, header)
  20. filename = File.join(File.dirname(__FILE__), "#{class_name}Test.cpp")
  21. if File.exist?(filename)
  22. print "Error: file #{class_name}Test.cpp already exists.n"
  23. exit 1
  24. end
  25. f = File.new(filename, "w")
  26. f.print(source)
  27. f.close
  28. print "  Created     test/unit/#{class_name}Test.cppn"
  29. end
  30. def usage
  31. print "Usage: create.rb <CLASS>nn"
  32. print "Creates a new unit test case for CLASS.nn"
  33. print "Examples:n"
  34. print "  create.rb Objectn"
  35. print "  create.rb InputStreamn"
  36. end
  37. def find_file(base_path, dirname, file)
  38. result = nil
  39. dir = Dir.open(dirname)
  40. dir.each do |entry|
  41. if entry =~ /^./
  42. next
  43. elsif entry == file
  44. result = "#{base_path}/#{file}"
  45. break
  46. elsif File.directory?(File.join(dirname, entry))
  47. result = find_file("#{base_path}/#{entry}", File.join(dirname, entry), file)
  48. if !result.nil?
  49. break
  50. end
  51. end
  52. end
  53. dir.close
  54. return result
  55. end
  56. def find_header(class_name)
  57. dir = File.join(File.dirname(__FILE__), "..", "..")
  58. result = find_file(".", dir, "#{class_name}.h")
  59. if !result.nil?
  60. result = result.gsub(/^.//, '')
  61. end
  62. return result
  63. end
  64. def generate_result(class_name, header)
  65. source = <<-EOF
  66. #include "tut.h"
  67. #include "../../#{header}"
  68. /*
  69.  * Test case for OSL::#{class_name}
  70.  */
  71. namespace tut {
  72. struct #{class_name}Test {
  73. };
  74. DEFINE_TEST_GROUP(#{class_name}Test);
  75. TEST_METHOD(1) {
  76. // Put your tests here.
  77. ensure(true);
  78. }
  79. }
  80. EOF
  81. source = source.gsub(/^tt?/s, '')
  82. return source
  83. end
  84. main()