stats_package_syntax_file_generator 1.0.1
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.
- checksums.yaml +7 -0
- data/README +128 -0
- data/lib/stats_package_syntax_file_generator.rb +19 -0
- data/lib/stats_package_syntax_file_generator/controller.rb +323 -0
- data/lib/stats_package_syntax_file_generator/maker.rb +126 -0
- data/lib/stats_package_syntax_file_generator/maker_sas.rb +306 -0
- data/lib/stats_package_syntax_file_generator/maker_spss.rb +194 -0
- data/lib/stats_package_syntax_file_generator/maker_stata.rb +300 -0
- data/lib/stats_package_syntax_file_generator/maker_sts.rb +181 -0
- data/lib/stats_package_syntax_file_generator/value.rb +29 -0
- data/lib/stats_package_syntax_file_generator/variable.rb +56 -0
- data/tests/input_all_vars.yaml +2012 -0
- data/tests/input_controller.yaml +13 -0
- data/tests/setup.rb +103 -0
- data/tests/tc_controller.rb +378 -0
- data/tests/tc_maker.rb +172 -0
- data/tests/tc_maker_sas.rb +251 -0
- data/tests/tc_maker_spss.rb +121 -0
- data/tests/tc_maker_stata.rb +224 -0
- data/tests/tc_maker_sts.rb +190 -0
- data/tests/tc_value.rb +23 -0
- data/tests/tc_variable.rb +53 -0
- data/tests/ts_all.rb +20 -0
- metadata +67 -0
@@ -0,0 +1,224 @@
|
|
1
|
+
# This file is part of the Minnesota Population Center's stats_package_syntax_file_generator project.
|
2
|
+
# For copyright and licensing information, see the NOTICE and LICENSE files
|
3
|
+
# in this project's top-level directory, and also on-line at:
|
4
|
+
# https://github.com/mnpopcenter/stats_package_syntax_file_generator
|
5
|
+
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'setup.rb'))
|
7
|
+
|
8
|
+
module StatsPackageSyntaxFileGeneratorTest
|
9
|
+
class MakerSTATA < Test::Unit::TestCase
|
10
|
+
|
11
|
+
include StatsPackageSyntaxFileGeneratorTestSetup
|
12
|
+
|
13
|
+
def test_create_maker_stata
|
14
|
+
msg = 'Try to create an object.'
|
15
|
+
mk = new_maker('stata')
|
16
|
+
assert_instance_of StatsPackageSyntaxFileGenerator::MakerSTATA, mk, msg
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_syn_infix_start
|
20
|
+
msg = 'Compare against hardcoded result.'
|
21
|
+
mk = new_maker('stata')
|
22
|
+
expected = [
|
23
|
+
'clear',
|
24
|
+
'quietly infix ///',
|
25
|
+
]
|
26
|
+
actual = mk.syn_infix_start
|
27
|
+
assert_equal expected, actual, msg
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_syn_infix_var_locs
|
31
|
+
msg = 'Compare against hardcoded result.'
|
32
|
+
mk = new_maker('stata')
|
33
|
+
expected = [
|
34
|
+
' str rectype 1-1 ///',
|
35
|
+
' long dwnum 2-7 ///',
|
36
|
+
' byte hhnum 8-8 ///',
|
37
|
+
' int fbig_nd 45-48 ///',
|
38
|
+
' float canton 67-69 ///',
|
39
|
+
' byte lit 101-101 ///',
|
40
|
+
]
|
41
|
+
var_list = names_to_vars( mk.sfc, %w(RECTYPE DWNUM HHNUM FBIG_ND CANTON LIT) )
|
42
|
+
actual = mk.syn_infix_var_locs(var_list)
|
43
|
+
assert_equal expected, actual, msg
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_syn_dfh_infix_gen
|
47
|
+
mk = new_maker('stata')
|
48
|
+
|
49
|
+
msg = 'Compare against hardcoded result: rectangularize=false.'
|
50
|
+
expected = [
|
51
|
+
'gen _line_num = _n',
|
52
|
+
]
|
53
|
+
mk.sfc.rectangularize = false
|
54
|
+
actual = mk.syn_dfh_infix_gen
|
55
|
+
assert_equal expected, actual, msg
|
56
|
+
|
57
|
+
msg = 'Compare against hardcoded result: rectangularize=true.'
|
58
|
+
expected = [
|
59
|
+
'gen _line_numH = _n',
|
60
|
+
'gen _line_numP = _n',
|
61
|
+
'replace _line_numH = _line_numH[_n - 1] if _n > 1 & rectype != `"H"\'',
|
62
|
+
'replace _line_numP = _line_numP[_n - 1] if _n > 1 & rectype != `"P"\'',
|
63
|
+
]
|
64
|
+
mk.sfc.rectangularize = true
|
65
|
+
actual = mk.syn_dfh_infix_gen
|
66
|
+
assert_equal expected, actual, msg
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_syn_dfh_combine_append
|
70
|
+
mk = new_maker('stata')
|
71
|
+
|
72
|
+
msg = 'Compare against hardcoded result: rectangularize=false.'
|
73
|
+
expected = [
|
74
|
+
'use __temp_ipums_hier_H.dta',
|
75
|
+
'append using __temp_ipums_hier_P.dta',
|
76
|
+
]
|
77
|
+
mk.sfc.rectangularize = false
|
78
|
+
actual = mk.syn_dfh_combine_append
|
79
|
+
assert_equal expected, actual, msg
|
80
|
+
|
81
|
+
msg = 'Compare against hardcoded result: rectangularize=true.'
|
82
|
+
expected = [
|
83
|
+
'use __temp_ipums_hier_P.dta',
|
84
|
+
'merge m:1 _line_numH using __temp_ipums_hier_H.dta, keep(master match)',
|
85
|
+
'drop _merge',
|
86
|
+
]
|
87
|
+
mk.sfc.rectangularize = true
|
88
|
+
actual = mk.syn_dfh_combine_append
|
89
|
+
assert_equal expected, actual, msg
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_syn_dfh_combine_save
|
93
|
+
mk = new_maker('stata')
|
94
|
+
|
95
|
+
msg = 'Compare against hardcoded result: rectangularize=false.'
|
96
|
+
expected = [
|
97
|
+
'sort _line_num',
|
98
|
+
'drop _line_num',
|
99
|
+
# 'save xx9999a.dta',
|
100
|
+
]
|
101
|
+
mk.sfc.rectangularize = false
|
102
|
+
actual = mk.syn_dfh_combine_save
|
103
|
+
assert_equal expected, actual, msg
|
104
|
+
|
105
|
+
msg = 'Compare against hardcoded result: rectangularize=true.'
|
106
|
+
expected = [
|
107
|
+
'sort _line_numH _line_numP',
|
108
|
+
'drop _line_numH _line_numP',
|
109
|
+
# 'save xx9999a.dta',
|
110
|
+
]
|
111
|
+
mk.sfc.rectangularize = true
|
112
|
+
actual = mk.syn_dfh_combine_save
|
113
|
+
assert_equal expected, actual, msg
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_syn_dfh_combine_erase
|
117
|
+
mk = new_maker('stata')
|
118
|
+
|
119
|
+
msg = 'Compare against hardcoded result.'
|
120
|
+
expected = [
|
121
|
+
'erase __temp_ipums_hier_H.dta',
|
122
|
+
'erase __temp_ipums_hier_P.dta',
|
123
|
+
]
|
124
|
+
mk.sfc.rectangularize = false
|
125
|
+
actual = mk.syn_dfh_combine_erase
|
126
|
+
assert_equal expected, actual, msg
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_syn_convert_implied_decim
|
130
|
+
msg = 'Compare against hardcoded result.'
|
131
|
+
mk = new_maker('stata')
|
132
|
+
expected = [
|
133
|
+
'replace canton = canton / 10',
|
134
|
+
'replace resprev2 = resprev2 / 1000',
|
135
|
+
"replace bigdec = bigdec / 100000"
|
136
|
+
]
|
137
|
+
actual = mk.syn_convert_implied_decim
|
138
|
+
assert_equal expected, actual, msg
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_syn_display_format
|
142
|
+
msg = 'Compare against hardcoded result.'
|
143
|
+
mk = new_maker('stata')
|
144
|
+
expected = [
|
145
|
+
"format canton %3.1f",
|
146
|
+
"format resprev2 %4.3f",
|
147
|
+
"format bigdec %10.5f",
|
148
|
+
"format bigint %19.0f"
|
149
|
+
]
|
150
|
+
actual = mk.syn_display_format
|
151
|
+
assert_equal expected, actual, msg
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_syn_var_labs
|
155
|
+
msg = 'Compare against hardcoded result.'
|
156
|
+
mk = new_maker('stata')
|
157
|
+
expected = [
|
158
|
+
'label var rectype `"Record type"\'',
|
159
|
+
'label var hdfirstd `"Head not first ["dwelling-wide"] {note}"\'',
|
160
|
+
'label var canton `"Canton "geo area""\'',
|
161
|
+
'label var age `"Age"\'',
|
162
|
+
]
|
163
|
+
var_list = names_to_vars( mk.sfc, %w(RECTYPE HDFIRSTD CANTON AGE) )
|
164
|
+
actual = mk.syn_var_labs(var_list)
|
165
|
+
assert_equal expected, actual, msg
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_syn_val_labs_for_var
|
169
|
+
msg = 'Compare against hardcoded result.'
|
170
|
+
mk = new_maker('stata')
|
171
|
+
expected = [
|
172
|
+
[
|
173
|
+
'label define urban_lbl 1 `"Urban"\'',
|
174
|
+
'label define urban_lbl 2 `"Rural"\', add',
|
175
|
+
],
|
176
|
+
[
|
177
|
+
'label define sex_lbl 1 `"Male"\'',
|
178
|
+
'label define sex_lbl 2 `"Female"\', add',
|
179
|
+
],
|
180
|
+
]
|
181
|
+
var_list = names_to_vars( mk.sfc, %w(URBAN SEX) )
|
182
|
+
var_list.each_index { |i|
|
183
|
+
actual = mk.syn_val_labs_for_var(var_list[i])
|
184
|
+
assert_equal expected[i], actual, msg
|
185
|
+
}
|
186
|
+
end
|
187
|
+
|
188
|
+
def test_temp_file_names
|
189
|
+
msg = 'Compare against hardcoded result.'
|
190
|
+
mk = new_maker('stata')
|
191
|
+
expected = [
|
192
|
+
'__temp_ipums_hier_H.dta',
|
193
|
+
'__temp_ipums_hier_P.dta',
|
194
|
+
]
|
195
|
+
actual = mk.temp_file_names
|
196
|
+
assert_equal expected, actual, msg
|
197
|
+
|
198
|
+
msg = 'Should return [] if there are no record types.'
|
199
|
+
mk.sfc.record_types = []
|
200
|
+
actual = mk.temp_file_names
|
201
|
+
assert_equal [], actual, msg
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_sort_vars
|
205
|
+
msg = 'Compare against hardcoded result.'
|
206
|
+
mk = new_maker('stata')
|
207
|
+
mk.sfc.rectangularize = true
|
208
|
+
expected = ['_line_numH', '_line_numP']
|
209
|
+
assert_equal expected, mk.sort_vars, msg
|
210
|
+
|
211
|
+
mk.sfc.rectangularize = false
|
212
|
+
expected = ['_line_num']
|
213
|
+
assert_equal expected, mk.sort_vars, msg
|
214
|
+
end
|
215
|
+
|
216
|
+
def test_rt_ne_statement
|
217
|
+
msg = 'Compare against hardcoded result.'
|
218
|
+
mk = new_maker('stata')
|
219
|
+
expected = 'rectype != `"H"\''
|
220
|
+
assert_equal expected, mk.rt_ne_statement('H'), msg
|
221
|
+
end
|
222
|
+
|
223
|
+
end
|
224
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
# This file is part of the Minnesota Population Center's stats_package_syntax_file_generator project.
|
2
|
+
# For copyright and licensing information, see the NOTICE and LICENSE files
|
3
|
+
# in this project's top-level directory, and also on-line at:
|
4
|
+
# https://github.com/mnpopcenter/stats_package_syntax_file_generator
|
5
|
+
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'setup.rb'))
|
7
|
+
|
8
|
+
module StatsPackageSyntaxFileGeneratorTest
|
9
|
+
class MakerSTS < Test::Unit::TestCase
|
10
|
+
|
11
|
+
include StatsPackageSyntaxFileGeneratorTestSetup
|
12
|
+
|
13
|
+
def test_create_maker_sts
|
14
|
+
msg = 'Try to create an object.'
|
15
|
+
mk = new_maker('sts')
|
16
|
+
assert_instance_of StatsPackageSyntaxFileGenerator::MakerSTS, mk, msg
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_syn_quoting
|
20
|
+
msg = 'Quoting empty string.'
|
21
|
+
mk = new_maker('sts')
|
22
|
+
expected = "\"\""
|
23
|
+
actual = mk.q('')
|
24
|
+
assert_equal expected, actual, msg
|
25
|
+
|
26
|
+
msg = 'Quoting string with quotes.'
|
27
|
+
expected = "\"before''this is a ''test''after\""
|
28
|
+
actual = mk.q('before"this is a "test"after')
|
29
|
+
assert_equal expected, actual, msg
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_syn_var_fmt
|
33
|
+
msg = 'Compare against hardcoded result.'
|
34
|
+
mk = new_maker('sts')
|
35
|
+
expected = [
|
36
|
+
' (A)',
|
37
|
+
' (F3.1)',
|
38
|
+
'',
|
39
|
+
' (F4.3)',
|
40
|
+
]
|
41
|
+
var_list = names_to_vars( mk.sfc, %w(RECTYPE CANTON URBAN RESPREV2) )
|
42
|
+
actual = var_list.map { |v| mk.var_fmt(v) }
|
43
|
+
assert_equal expected, actual, msg
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_syn_var_loc_with_fmt
|
47
|
+
msg = 'Compare against hardcoded result.'
|
48
|
+
mk = new_maker('sts')
|
49
|
+
expected = [
|
50
|
+
'1-1 (A)',
|
51
|
+
'67 (F3.1)',
|
52
|
+
'80-80',
|
53
|
+
'80 (F4.3)',
|
54
|
+
]
|
55
|
+
var_list = names_to_vars( mk.sfc, %w(RECTYPE CANTON URBAN RESPREV2) )
|
56
|
+
actual = var_list.map { |v| mk.var_loc_with_fmt(v) }
|
57
|
+
assert_equal expected, actual, msg
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_supported_val
|
61
|
+
msg = 'Incompat value label -- empty label'
|
62
|
+
mk = new_maker('sts')
|
63
|
+
expected = false
|
64
|
+
actual = mk.supported_val?(StatsPackageSyntaxFileGenerator::Value.new(:value => 'FOO', :label => ''))
|
65
|
+
assert_equal expected, actual, msg
|
66
|
+
|
67
|
+
msg = 'Incompat value label -- pure whitespace label'
|
68
|
+
mk = new_maker('sts')
|
69
|
+
expected = false
|
70
|
+
actual = mk.supported_val?(StatsPackageSyntaxFileGenerator::Value.new(:value => 'FOO', :label => ' '))
|
71
|
+
assert_equal expected, actual, msg
|
72
|
+
|
73
|
+
msg = 'Incompat value value -- pure whitespace value'
|
74
|
+
mk = new_maker('sts')
|
75
|
+
expected = false
|
76
|
+
actual = mk.supported_val?(StatsPackageSyntaxFileGenerator::Value.new(:value => ' ', :label => 'FOO'))
|
77
|
+
assert_equal expected, actual, msg
|
78
|
+
|
79
|
+
msg = 'Incompat value value -- blank value'
|
80
|
+
mk = new_maker('sts')
|
81
|
+
expected = false
|
82
|
+
actual = mk.supported_val?(StatsPackageSyntaxFileGenerator::Value.new(:value => '', :label => 'FOO'))
|
83
|
+
assert_equal expected, actual, msg
|
84
|
+
|
85
|
+
msg = 'Incompat value value -- nonalphanumeric value'
|
86
|
+
mk = new_maker('sts')
|
87
|
+
expected = false
|
88
|
+
actual = mk.supported_val?(StatsPackageSyntaxFileGenerator::Value.new(:value => '@#(BAR)', :label => 'FOO'))
|
89
|
+
assert_equal expected, actual, msg
|
90
|
+
|
91
|
+
msg = 'Incompat value value -- value with space'
|
92
|
+
mk = new_maker('sts')
|
93
|
+
expected = false
|
94
|
+
actual = mk.supported_val?(StatsPackageSyntaxFileGenerator::Value.new(:value => 'a thing', :label => 'FOO'))
|
95
|
+
assert_equal expected, actual, msg
|
96
|
+
|
97
|
+
msg = 'Compat value'
|
98
|
+
mk = new_maker('sts')
|
99
|
+
expected = true
|
100
|
+
actual = mk.supported_val?(StatsPackageSyntaxFileGenerator::Value.new(:value => 'BAR', :label => 'FOO'))
|
101
|
+
assert_equal expected, actual, msg
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_syn_val_labs_for_var
|
105
|
+
msg = 'Compare against hardcoded result.'
|
106
|
+
mk = new_maker('sts')
|
107
|
+
expected = [
|
108
|
+
[
|
109
|
+
" \\URBAN",
|
110
|
+
" 1 \"Urban\"",
|
111
|
+
" 2 \"Rural\""
|
112
|
+
],
|
113
|
+
[
|
114
|
+
" \\RECTYPE",
|
115
|
+
" 'H' \"Household\"",
|
116
|
+
" 'P' \"Person\""
|
117
|
+
],
|
118
|
+
[
|
119
|
+
],
|
120
|
+
[" \\RENT",
|
121
|
+
" '......................................40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290.......300' \"[no label]............................40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290.......300\"",
|
122
|
+
" '0050' \"[no label]\"",
|
123
|
+
" '0070' \"[no label]\"",
|
124
|
+
" '0075' \"[no label]\"",
|
125
|
+
" '0080' \"[no label]\"",
|
126
|
+
" '0085' \"[no label]\"",
|
127
|
+
" '0100' \"[no label]\"",
|
128
|
+
" '0120' \"[no label]\"",
|
129
|
+
" '0125' \"[no label]\"",
|
130
|
+
" '0130' \"[no label]\"",
|
131
|
+
" '0140' \"[no label]\"",
|
132
|
+
" '0150' \"[no label]\"",
|
133
|
+
" '0160' \"[no label]\"",
|
134
|
+
" '0175' \"[no label]\"",
|
135
|
+
" '0200' \"[no label]\"",
|
136
|
+
" '0210' \"[no label]\"",
|
137
|
+
" '0225' \"[no label]\"",
|
138
|
+
" '0240' \"[no label]\"",
|
139
|
+
" '0250' \"[no label]\"",
|
140
|
+
" '0300' \"[no label]\"",
|
141
|
+
" '0400' \"[no label]\"",
|
142
|
+
" '0425' \"[no label]\"",
|
143
|
+
" '0454' \"[no label]\"",
|
144
|
+
" '0500' \"[no label]\"",
|
145
|
+
" '0550' \"[no label]\"",
|
146
|
+
" '0700' \"[no label]\"",
|
147
|
+
" '1800' \"[no label]\"",
|
148
|
+
" '2000' \"[no label]\"",
|
149
|
+
" '8501' \"[no label]\""]
|
150
|
+
]
|
151
|
+
var_list = names_to_vars( mk.sfc, %w(URBAN RECTYPE DWNUM RENT) )
|
152
|
+
var_list.each_index { |i|
|
153
|
+
actual = mk.syn_val_labs_for_var(var_list[i])
|
154
|
+
assert_equal expected[i], actual, msg
|
155
|
+
}
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_syn_var_labs
|
159
|
+
msg = 'Compare against hardcoded result.'
|
160
|
+
mk = new_maker('sts')
|
161
|
+
expected = ["VARIABLE LABELS",
|
162
|
+
" HHNUM \"''Household number''\"",
|
163
|
+
" HDFIRSTD \"Head not first [''dwelling-wide''] {note}\"",
|
164
|
+
" CANTON \"Canton ''geo area''\"",
|
165
|
+
" SEX \".........x.........x.........x.........x.........x.........x.........x.........x.........x.........x.........x.........x.........x.........x.........x\"",
|
166
|
+
"",
|
167
|
+
""]
|
168
|
+
var_list = names_to_vars( mk.sfc, %w(HHNUM HDFIRSTD CANTON SEX) )
|
169
|
+
var_list[-1].label = '.........x' * 15
|
170
|
+
actual = mk.syn_var_labs(var_list)
|
171
|
+
assert_equal expected, actual, msg
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_syn_var_locations
|
175
|
+
msg = 'Compare against hardcoded result.'
|
176
|
+
mk = new_maker('sts')
|
177
|
+
expected = [
|
178
|
+
"VARIABLES",
|
179
|
+
" RECTYPE 1-1 (A) \\RECTYPE",
|
180
|
+
" CANTON 67 (F3.1) ",
|
181
|
+
" AGE 69-71 ",
|
182
|
+
" LIT 101-101 \\LIT"
|
183
|
+
]
|
184
|
+
var_list = names_to_vars( mk.sfc, %w(RECTYPE CANTON AGE LIT) )
|
185
|
+
actual = mk.syn_var_locations(var_list)
|
186
|
+
assert_equal expected, actual, msg
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
190
|
+
end
|
data/tests/tc_value.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# This file is part of the Minnesota Population Center's stats_package_syntax_file_generator project.
|
2
|
+
# For copyright and licensing information, see the NOTICE and LICENSE files
|
3
|
+
# in this project's top-level directory, and also on-line at:
|
4
|
+
# https://github.com/mnpopcenter/stats_package_syntax_file_generator
|
5
|
+
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'setup.rb'))
|
7
|
+
|
8
|
+
module StatsPackageSyntaxFileGeneratorTest
|
9
|
+
class Value < Test::Unit::TestCase
|
10
|
+
|
11
|
+
include StatsPackageSyntaxFileGeneratorTestSetup
|
12
|
+
|
13
|
+
def test_create_value
|
14
|
+
msg = 'Try to create an object.'
|
15
|
+
v = StatsPackageSyntaxFileGenerator::Value.new(:value => 1234)
|
16
|
+
assert_instance_of StatsPackageSyntaxFileGenerator::Value, v, msg
|
17
|
+
|
18
|
+
msg = 'Try to create an object with required parameters missing.'
|
19
|
+
assert_raise(ArgumentError, msg) { StatsPackageSyntaxFileGenerator::Value.new }
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# This file is part of the Minnesota Population Center's stats_package_syntax_file_generator project.
|
2
|
+
# For copyright and licensing information, see the NOTICE and LICENSE files
|
3
|
+
# in this project's top-level directory, and also on-line at:
|
4
|
+
# https://github.com/mnpopcenter/stats_package_syntax_file_generator
|
5
|
+
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'setup.rb'))
|
7
|
+
|
8
|
+
module StatsPackageSyntaxFileGeneratorTest
|
9
|
+
class Variable < Test::Unit::TestCase
|
10
|
+
|
11
|
+
include StatsPackageSyntaxFileGeneratorTestSetup
|
12
|
+
|
13
|
+
def test_create_variable
|
14
|
+
msg = 'Try to create an object.'
|
15
|
+
v = new_variable()
|
16
|
+
assert_instance_of StatsPackageSyntaxFileGenerator::Variable, v, msg
|
17
|
+
|
18
|
+
msg = 'Try to create an object with required parameters missing.'
|
19
|
+
assert_raise(ArgumentError, msg) { StatsPackageSyntaxFileGenerator::Variable.new }
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_column_locations_as_s
|
23
|
+
msg = 'Compare against hardcoded result.'
|
24
|
+
v = new_variable()
|
25
|
+
e = params_variable_lookup(:column_locations_as_s)
|
26
|
+
assert_equal e, v.column_locations_as_s, msg
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_end_column
|
30
|
+
msg = 'Compare against hardcoded result.'
|
31
|
+
v = new_variable()
|
32
|
+
e = params_variable_lookup(:end_column)
|
33
|
+
assert_equal e, v.end_column, msg
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_add_and_clear_values
|
37
|
+
v = new_variable()
|
38
|
+
|
39
|
+
msg = 'New variable should have no values.'
|
40
|
+
assert_equal 0, v.values.size, msg
|
41
|
+
|
42
|
+
msg = 'Adding a value N times should yield a variable with N values.'
|
43
|
+
n = params_values().size
|
44
|
+
add_new_values_to_var(v)
|
45
|
+
assert_equal n, v.values.size, msg
|
46
|
+
|
47
|
+
msg = 'After clearing its values, a variable should have no values.'
|
48
|
+
v.clear_values
|
49
|
+
assert_equal 0, v.values.size, msg
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|