origen 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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