origen 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/bin/origen +3 -1
  3. data/config/boot.rb +1 -7
  4. data/config/commands.rb +0 -1
  5. data/config/version.rb +2 -2
  6. data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
  7. data/lib/c99/doc_interface.rb +1 -1
  8. data/lib/origen.rb +9 -30
  9. data/lib/origen/application.rb +10 -8
  10. data/lib/origen/application/configuration.rb +13 -26
  11. data/lib/origen/application/plugins.rb +122 -0
  12. data/lib/origen/application/plugins_manager.rb +16 -254
  13. data/lib/origen/application/release.rb +2 -2
  14. data/lib/origen/application/runner.rb +2 -4
  15. data/lib/origen/chips.rb +0 -0
  16. data/lib/origen/chips/chip.rb +0 -0
  17. data/lib/origen/chips/design_entry.rb +0 -0
  18. data/lib/origen/chips/doc_entry.rb +0 -0
  19. data/lib/origen/chips/note.rb +0 -0
  20. data/lib/origen/commands.rb +4 -44
  21. data/lib/origen/commands/compile.rb +1 -2
  22. data/lib/origen/commands/generate.rb +1 -1
  23. data/lib/origen/commands/interactive.rb +1 -2
  24. data/lib/origen/commands/plugin.rb +49 -56
  25. data/lib/origen/commands/program.rb +1 -1
  26. data/lib/origen/commands/rc.rb +2 -2
  27. data/lib/origen/commands/version.rb +2 -17
  28. data/lib/origen/commands_global.rb +3 -0
  29. data/lib/origen/file_handler.rb +10 -10
  30. data/lib/origen/generator.rb +1 -1
  31. data/lib/origen/generator/job.rb +1 -1
  32. data/lib/origen/generator/pattern.rb +2 -2
  33. data/lib/origen/generator/pattern_finder.rb +10 -9
  34. data/lib/origen/pins/pin.rb +0 -0
  35. data/lib/origen/regression_manager.rb +0 -0
  36. data/lib/origen/remote_manager.rb +2 -8
  37. data/lib/origen/revision_control/design_sync.rb +0 -0
  38. data/lib/origen/revision_control/git.rb +0 -0
  39. data/lib/origen/specs.rb +0 -0
  40. data/lib/origen/specs/checkers.rb +0 -0
  41. data/lib/origen/specs/creation_info.rb +0 -0
  42. data/lib/origen/specs/exhibit.rb +0 -0
  43. data/lib/origen/specs/spec.rb +0 -0
  44. data/lib/origen/utility.rb +0 -1
  45. data/lib/origen/utility/diff.rb +0 -0
  46. metadata +42 -119
  47. data/lib/origen/import_manager.rb +0 -596
  48. data/lib/origen/nvm.rb +0 -6
  49. data/lib/origen/nvm/block_array.rb +0 -72
  50. data/lib/origen/tester.rb +0 -56
  51. data/lib/origen/tester/api.rb +0 -277
  52. data/lib/origen/tester/bdm/bdm.rb +0 -25
  53. data/lib/origen/tester/doc/doc.rb +0 -226
  54. data/lib/origen/tester/doc/generator.rb +0 -126
  55. data/lib/origen/tester/doc/generator/flow.rb +0 -71
  56. data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
  57. data/lib/origen/tester/doc/generator/test.rb +0 -68
  58. data/lib/origen/tester/doc/generator/test_group.rb +0 -66
  59. data/lib/origen/tester/doc/generator/tests.rb +0 -47
  60. data/lib/origen/tester/doc/model.rb +0 -162
  61. data/lib/origen/tester/generator.rb +0 -271
  62. data/lib/origen/tester/generator/flow_control_api.rb +0 -606
  63. data/lib/origen/tester/generator/identity_map.rb +0 -25
  64. data/lib/origen/tester/generator/placeholder.rb +0 -13
  65. data/lib/origen/tester/generator/test_numberer.rb +0 -25
  66. data/lib/origen/tester/interface.rb +0 -154
  67. data/lib/origen/tester/j750/files.rb +0 -45
  68. data/lib/origen/tester/j750/generator.rb +0 -203
  69. data/lib/origen/tester/j750/generator/flow.rb +0 -123
  70. data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
  71. data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
  72. data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
  73. data/lib/origen/tester/j750/generator/patset.rb +0 -111
  74. data/lib/origen/tester/j750/generator/patsets.rb +0 -41
  75. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
  76. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
  77. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
  78. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
  79. data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
  80. data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
  81. data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
  82. data/lib/origen/tester/j750/j750.rb +0 -845
  83. data/lib/origen/tester/j750/j750_hpt.rb +0 -35
  84. data/lib/origen/tester/j750/parser.rb +0 -104
  85. data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
  86. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  87. data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
  88. data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
  89. data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
  90. data/lib/origen/tester/j750/parser/flow.rb +0 -111
  91. data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
  92. data/lib/origen/tester/j750/parser/flows.rb +0 -23
  93. data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
  94. data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
  95. data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
  96. data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
  97. data/lib/origen/tester/j750/parser/timeset.rb +0 -15
  98. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  99. data/lib/origen/tester/jlink/jlink.rb +0 -33
  100. data/lib/origen/tester/parser.rb +0 -24
  101. data/lib/origen/tester/parser/description_lookup.rb +0 -64
  102. data/lib/origen/tester/parser/searchable_array.rb +0 -32
  103. data/lib/origen/tester/parser/searchable_hash.rb +0 -32
  104. data/lib/origen/tester/time.rb +0 -338
  105. data/lib/origen/tester/timing.rb +0 -253
  106. data/lib/origen/tester/ultraflex/files.rb +0 -45
  107. data/lib/origen/tester/ultraflex/generator.rb +0 -200
  108. data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
  109. data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
  110. data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
  111. data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
  112. data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
  113. data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
  114. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
  115. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
  116. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
  117. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
  118. data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
  119. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
  120. data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
  121. data/lib/origen/tester/ultraflex/parser.rb +0 -104
  122. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
  123. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  124. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
  125. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
  126. data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
  127. data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
  128. data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
  129. data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
  130. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
  131. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
  132. data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
  133. data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
  134. data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
  135. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  136. data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
  137. data/lib/origen/tester/v93k/generator.rb +0 -80
  138. data/lib/origen/tester/v93k/generator/flow.rb +0 -63
  139. data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
  140. data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
  141. data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
  142. data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
  143. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
  144. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
  145. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
  146. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
  147. data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
  148. data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
  149. data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
  150. data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
  151. data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
  152. data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
  153. data/lib/origen/tester/v93k/v93k.rb +0 -420
  154. data/lib/origen/tester/vector.rb +0 -86
  155. data/lib/origen/tester/vector_generator.rb +0 -637
  156. data/lib/origen/tester/vector_pipeline.rb +0 -150
  157. data/lib/origen/utility/design_sync.rb +0 -494
  158. data/lib/origen/version_checker.rb +0 -117
@@ -1,80 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module Origen
4
- module Tester
5
- class V93K
6
- module Generator
7
- extend ActiveSupport::Concern
8
-
9
- autoload :Flow, 'origen/tester/v93k/generator/flow'
10
- autoload :FlowNode, 'origen/tester/v93k/generator/flow_node'
11
- autoload :TestFunction, 'origen/tester/v93k/generator/test_function'
12
- autoload :TestFunctions, 'origen/tester/v93k/generator/test_functions'
13
- autoload :TestMethod, 'origen/tester/v93k/generator/test_method'
14
- autoload :TestMethods, 'origen/tester/v93k/generator/test_methods'
15
- autoload :TestSuite, 'origen/tester/v93k/generator/test_suite'
16
- autoload :TestSuites, 'origen/tester/v93k/generator/test_suites'
17
- autoload :Pattern, 'origen/tester/v93k/generator/pattern'
18
- autoload :PatternMaster, 'origen/tester/v93k/generator/pattern_master'
19
- autoload :Placeholder, 'origen/tester/generator/placeholder'
20
-
21
- included do
22
- include Origen::Tester::Interface # adds the interface helpers/Origen hook-up
23
- include Origen::Tester::Generator::FlowControlAPI::Interface
24
- PLATFORM = Origen::Tester::V93K
25
- end
26
-
27
- def flow
28
- return @flow if @flow
29
- @flow = Flow.new
30
- @flow.test_functions ||= TestFunctions.new(@flow)
31
- @flow.test_suites ||= TestSuites.new(@flow)
32
- @flow.test_methods ||= TestMethods.new(@flow)
33
- @flow
34
- end
35
-
36
- def pattern_master
37
- @pattern_master_file ||= PatternMaster.new
38
- end
39
-
40
- def test_functions
41
- flow.test_functions
42
- end
43
-
44
- def test_suites
45
- flow.test_suites
46
- end
47
-
48
- def test_methods
49
- flow.test_methods
50
- end
51
-
52
- def flow_sheets
53
- @@flow_sheets ||= {}
54
- end
55
-
56
- # Returns an array containing all sheet generators.
57
- # All Origen program generators must implement this method
58
- def sheet_generators # :nodoc:
59
- g = []
60
- [flow_sheets].each do |sheets|
61
- sheets.each do |_name, sheet|
62
- g << sheet
63
- end
64
- end
65
- g
66
- end
67
-
68
- # Returns an array containing all flow sheet generators.
69
- # All Origen program generators must implement this method
70
- def flow_generators
71
- g = []
72
- flow_sheets.each do |_name, sheet|
73
- g << sheet
74
- end
75
- g
76
- end
77
- end
78
- end
79
- end
80
- end
@@ -1,63 +0,0 @@
1
- module Origen
2
- module Tester
3
- class V93K
4
- module Generator
5
- class Flow
6
- include Origen::Tester::Generator
7
-
8
- attr_accessor :test_functions, :test_suites, :test_methods
9
-
10
- TEMPLATE = "#{Origen.top}/lib/origen/tester/v93k/generator/templates/template.flow.erb"
11
-
12
- def filename
13
- super.gsub('_flow', '')
14
- end
15
-
16
- def run(test_suite, options = {})
17
- add(:run, { test_suite: test_suite }.merge(options))
18
- end
19
-
20
- def run_and_branch(test_suite, options = {})
21
- add(:run_and_branch, { test_suite: test_suite }.merge(options))
22
- end
23
-
24
- private
25
-
26
- def add(type, options = {})
27
- options = update_relationships(options)
28
- ins = FlowLine.new(type, options)
29
- collection << ins
30
- if ins.test?
31
- c = Origen.interface.consume_comments
32
- Origen.interface.descriptions.add_for_test_usage(ins.parameter, Origen.interface.top_level_flow, c)
33
- else
34
- Origen.interface.discard_comments
35
- end
36
- ins
37
- end
38
-
39
- def update_relationships(options = {})
40
- fail_id = options.delete(:if_failed)
41
- pass_id = options.delete(:if_passed)
42
- if fail_id
43
- t = find_by_id(fail_id)
44
- t.continue_on_fail
45
- flag = t.set_flag_on_fail
46
- options[:flag_true] = flag
47
- elsif pass_id
48
- t = find_by_id(pass_id)
49
- t.continue_on_fail
50
- flag = t.set_flag_on_pass
51
- options[:flag_true] = flag
52
- end
53
- options
54
- end
55
-
56
- def find_by_id(id)
57
- collection.find { |l| l.id == id }
58
- end
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,17 +0,0 @@
1
- module Origen
2
- module Tester
3
- class V93K
4
- module Generator
5
- class FlowNode
6
- autoload :Run, 'origen/tester/v93k/generator/flow_node/run'
7
- autoload :RunAndBranch, 'origen/tester/v93k/generator/flow_node/run_and_branch'
8
- autoload :StopBin, 'origen/tester/v93k/generator/flow_node/stop_bin'
9
-
10
- def collection
11
- @collection ||= []
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,10 +0,0 @@
1
- module Origen
2
- module Tester
3
- class V93K
4
- module Generator
5
- class Print < FlowNode
6
- end
7
- end
8
- end
9
- end
10
- end
@@ -1,16 +0,0 @@
1
- module Origen
2
- module Tester
3
- class V93K
4
- module Generator
5
- class Pattern
6
- attr_accessor :name
7
-
8
- def initialize(name, _options = {})
9
- self.name = name
10
- Origen.interface.referenced_patterns << name
11
- end
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,54 +0,0 @@
1
- module Origen
2
- module Tester
3
- class V93K
4
- module Generator
5
- class PatternMaster
6
- include Origen::Tester::Generator
7
-
8
- TEMPLATE = "#{Origen.top}/lib/origen/tester/v93k/generator/templates/template.pmfl.erb"
9
-
10
- def add(name, options = {})
11
- check_for_duplicates(name)
12
- record_pattern(name)
13
- p = Pattern.new(name, options)
14
- collection << p
15
- p
16
- end
17
-
18
- # Returns true if the given pattern name has already been added to the current pattern
19
- # master file.
20
- #
21
- # Pass in :global => true for all pattern sets sheets to be considered.
22
- def duplicate?(name, options = {})
23
- files = existing_patterns[name]
24
- if files && !files.empty?
25
- options[:global] || files.include?(filename)
26
- else
27
- false
28
- end
29
- end
30
-
31
- private
32
-
33
- def check_for_duplicates(name)
34
- if duplicate?(name)
35
- error "Duplicate pattern #{name} generated in #{filename}"
36
- exit 1
37
- elsif duplicate?(name, global: true)
38
- warning "Pattern #{name} is duplicated in: #{existing_patterns[name].join(', ')}"
39
- end
40
- end
41
-
42
- def existing_patterns
43
- @@existing_patterns ||= {}
44
- end
45
-
46
- def record_pattern(name)
47
- existing_patterns[name] ||= []
48
- existing_patterns[name] << filename
49
- end
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,6 +0,0 @@
1
- % tm = options[:test_method]
2
- <%= tm.name %>:
3
- testmethod_class = "<%= tm.klass %>";
4
- testmethod_name = "<%= tm.method_name %>";
5
- testmethod_parameters = "<%= tm.parameters %>";
6
- testmethod_limits = "<%= tm.limits %>";
@@ -1,11 +0,0 @@
1
- % suite = options[:suite]
2
- <%= suite.name %>:
3
- override_tim_equ_set = <%= suite.tim_equ_set %>;
4
- override_lev_equ_set = <%= suite.lev_equ_set %>;
5
- override_tim_spec_set = <%= suite.tim_spec_set %>;
6
- override_lev_spec_set = <%= suite.lev_spec_set %>;
7
- override_timset = <%= suite.timset %>;
8
- override_levset = <%= suite.levset %>;
9
- override_seqlbl = "<%= suite.pattern %>";
10
- override_testf = <%= suite.test_function %>;
11
- override_test_number = <%= suite.test_number %>;
@@ -1,121 +0,0 @@
1
- hp93000,testflow,0.1
2
- language_revision = 1;
3
-
4
- information
5
-
6
- device_name = "Apache";
7
-
8
- device_revision = "0";
9
-
10
- test_revision = "<%= RGen.app.version %>";
11
-
12
- description = "";
13
-
14
- end
15
- --------------------------------------------------
16
- declarations
17
-
18
- end
19
- --------------------------------------------------
20
- flags
21
-
22
- -- System flags
23
- report_to_file = 1;
24
- report_to_printer = 0;
25
- datalog_to_file = 1;
26
- datalog_to_printer = 0;
27
- datalog_to_report_win = 0;
28
- datalog_formatter = 0;
29
- datalog_sample_size = 1;
30
- graphic_result_displa = 1;
31
- state_display = 0;
32
- print_wafermap = 0;
33
- OOC_watch = 1;
34
- OOC_sample_size = 1;
35
- ink_wafer = 0;
36
- max_reprobes = 1;
37
- temp_monitor = 1;
38
- calib_age_monitor = 1;
39
- diag_monitor = 1;
40
- current_monitor = 1;
41
- -- Testflow flags
42
- set_pass_level = 0;
43
- set_fail_level = 0;
44
- set_bypass_level = 0;
45
- hold_on_fail = 0;
46
- optimized_mode = 1;
47
- global_hold = 0;
48
- debug_mode = 0;
49
- parallel_mode = 1;
50
- global_overon = 0;
51
-
52
- end
53
- --------------------------------------------------
54
- testfunctions
55
-
56
- % test_functions.collection.each do |key, func|
57
- % func.lines.each do |line|
58
- <%= line %>
59
- % end
60
- % end
61
-
62
- end
63
- --------------------------------------------------
64
- testmethods
65
-
66
- % test_methods.collection.each do |name, method|
67
- <%= render "#{RGen.top}/lib/rgen/tester/v93k/generator/templates/test_method.txt.erb", :test_method => method, :_inline => true %>
68
- % end
69
-
70
- end
71
- --------------------------------------------------
72
- test_suites
73
-
74
- % test_suites.collection.each do |suite|
75
- <%= render "#{RGen.top}/lib/rgen/tester/v93k/generator/templates/test_suite.txt.erb", :suite => suite, :_inline => true %>
76
-
77
- % end
78
-
79
- end
80
- --------------------------------------------------
81
- test_flow
82
-
83
- run_and_branch(Continuity) then
84
- {
85
- }
86
- else
87
- {
88
- stop_bin "AA", "Continuity failed", , bad,noreprobe,red, ,over_on;
89
- }
90
- run_and_branch(Basic_functional_tes) then
91
- {
92
- }
93
- else
94
- {
95
- stop_bin "BB", "Basic functional test failed", ,bad,noreprobe,red, ,over_on;
96
- }
97
- stop_bin "OK", "Everything went fine", , good,noreprobe,
98
- green, , over_on;
99
- end
100
- -------------------------------------------------
101
- binning
102
-
103
- otherwise bin = "db", "", , bad,noreprobe,red, , not_over_on;
104
- end
105
- -------------------------------------------------
106
- oocrule
107
-
108
-
109
- end
110
- -------------------------------------------------
111
- context
112
-
113
- context_config_file = "74145";
114
- context_levels_file = "LowPower";
115
- context_timing_file = "Fast";
116
- context_vector_file = "74145";
117
- context_attrib_file = "";
118
- context_mixsgl_file = "";
119
-
120
- end
121
- --------------------------------------------------
@@ -1,9 +0,0 @@
1
- hp93000,pattern_master_file,0.1
2
-
3
- path:
4
- ../vectors/
5
-
6
- files:
7
- % collection.each do |pattern|
8
- <%= pattern.name %>
9
- % end
@@ -1,103 +0,0 @@
1
- module Origen
2
- module Tester
3
- class V93K
4
- module Generator
5
- class TestFunction
6
- attr_accessor :name, :type, :description
7
-
8
- # When defining attributes of a given test function here they must be defined
9
- # in the correct order
10
- ATTRS = {
11
-
12
- functional: [],
13
-
14
- general_pmu: %w(pins force_units force clamp_units clamp precharge_units precharge
15
- pass_min_units pass_min pass_max_units pass_max settling_time_units
16
- settling_time test_system_state term output_string mode
17
- )
18
-
19
- }
20
-
21
- ALIASES = {
22
- desc: :description,
23
-
24
- general_pmu: {
25
- state: :test_system_state
26
- }
27
- }
28
-
29
- DEFAULTS = {
30
- description: 'A test function generated by Origen'
31
- }
32
-
33
- # Define the common aliases now, the instance type specific ones will
34
- # be created when the instance type is known
35
- ALIASES.each do |_alias, val|
36
- if val.is_a? Hash
37
- else
38
- define_method("#{_alias}=") do |v|
39
- send("#{val}=", v)
40
- end
41
- define_method("#{_alias}") do
42
- send(val)
43
- end
44
- end
45
- end
46
-
47
- def initialize(name, type, attrs = {})
48
- @type = type
49
- self.name = name
50
- # Build the type specific attribute accessors
51
- ATTRS[@type.to_sym].each do |method|
52
- define_singleton_method("#{method}=") do |v|
53
- instance_variable_set("@#{method}".to_sym, v)
54
- end
55
- define_singleton_method("#{method}") do
56
- instance_variable_get("@#{method}".to_sym)
57
- end
58
- end
59
- # Build the type specific accessors (aliases)
60
- if ALIASES[@type.to_sym]
61
- ALIASES[@type.to_sym].each do |_alias, val|
62
- define_singleton_method("#{_alias}=") do |v|
63
- send("#{val}=", v)
64
- end
65
- define_singleton_method("#{_alias}") do
66
- send(val)
67
- end
68
- end
69
- end
70
- # Set the defaults
71
- DEFAULTS.each do |key, val|
72
- send("#{key}=", val) unless val.is_a?(Hash)
73
- end
74
- if DEFAULTS[@type.to_sym]
75
- DEFAULTS[@type.to_sym].each do |k, v|
76
- send("#{k}=", v)
77
- end
78
- end
79
- # Then the values that have been supplied
80
- attrs.each do |k, v|
81
- m = "#{k}="
82
- send(m, v) if self.respond_to?(m)
83
- end
84
- end
85
-
86
- # Returns the fully formatted lines (an array) that should be inserted into a flow
87
- # sheet to include this test function
88
- def lines
89
- [
90
- "#{name}:",
91
- "testfunction_description = \"#{description}\";",
92
- "testfunction_parameters = \"#{type};#{parameter_string}\";"
93
- ]
94
- end
95
-
96
- def parameter_string
97
- ATTRS[@type.to_sym].map { |attr| send(attr) }.compact.join(';')
98
- end
99
- end
100
- end
101
- end
102
- end
103
- end