ski_binding_calculator 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/config/binding_codes.yml +20 -7
- data/config/binding_settings.yml +349 -146
- data/lib/ski_binding_calculator/calculator.rb +70 -17
- data/lib/ski_binding_calculator.rb +0 -1
- data/ski_binding_calculator.gemspec +3 -3
- data/spec/lib/calculator_spec.rb +110 -29
- data/spec/lib/config_loader_spec.rb +2 -2
- metadata +18 -5
- data/lib/ski_binding_calculator/person.rb +0 -20
- data/spec/lib/person_spec.rb +0 -58
data/config/binding_codes.yml
CHANGED
@@ -1,41 +1,54 @@
|
|
1
1
|
#weight [kg]
|
2
2
|
#height [cm]
|
3
|
+
#Code A
|
3
4
|
- !ruby/object:SkiBinding::Code
|
4
5
|
weight: !ruby/range 10..13
|
5
|
-
height:
|
6
|
+
height: ~
|
7
|
+
#Code B
|
6
8
|
- !ruby/object:SkiBinding::Code
|
7
9
|
weight: !ruby/range 14..17
|
8
|
-
height:
|
10
|
+
height: ~
|
11
|
+
#Code C
|
9
12
|
- !ruby/object:SkiBinding::Code
|
10
13
|
weight: !ruby/range 18..21
|
11
|
-
height:
|
14
|
+
height: ~
|
15
|
+
#Code D
|
12
16
|
- !ruby/object:SkiBinding::Code
|
13
17
|
weight: !ruby/range 22..25
|
14
|
-
height:
|
18
|
+
height: ~
|
19
|
+
#Code E
|
15
20
|
- !ruby/object:SkiBinding::Code
|
16
21
|
weight: !ruby/range 26..30
|
17
|
-
height:
|
22
|
+
height: ~
|
23
|
+
#Code F
|
18
24
|
- !ruby/object:SkiBinding::Code
|
19
25
|
weight: !ruby/range 31..35
|
20
|
-
height:
|
26
|
+
height: ~
|
27
|
+
#Code G
|
21
28
|
- !ruby/object:SkiBinding::Code
|
22
29
|
weight: !ruby/range 36..41
|
23
|
-
height:
|
30
|
+
height: ~
|
31
|
+
#Code H
|
24
32
|
- !ruby/object:SkiBinding::Code
|
25
33
|
weight: !ruby/range 42..48
|
26
34
|
height: !ruby/range 1..148
|
35
|
+
#Code I
|
27
36
|
- !ruby/object:SkiBinding::Code
|
28
37
|
weight: !ruby/range 49..57
|
29
38
|
height: !ruby/range 149..157
|
39
|
+
#Code J
|
30
40
|
- !ruby/object:SkiBinding::Code
|
31
41
|
weight: !ruby/range 58..66
|
32
42
|
height: !ruby/range 158..166
|
43
|
+
#Code K
|
33
44
|
- !ruby/object:SkiBinding::Code
|
34
45
|
weight: !ruby/range 67..78
|
35
46
|
height: !ruby/range 167..178
|
47
|
+
#Code L
|
36
48
|
- !ruby/object:SkiBinding::Code
|
37
49
|
weight: !ruby/range 79..94
|
38
50
|
height: !ruby/range 179..194
|
51
|
+
#Code M
|
39
52
|
- !ruby/object:SkiBinding::Code
|
40
53
|
weight: !ruby/range
|
41
54
|
begin: 95
|
data/config/binding_settings.yml
CHANGED
@@ -3,72 +3,101 @@
|
|
3
3
|
# forward_lean [Nm]
|
4
4
|
-
|
5
5
|
- !ruby/object:SkiBinding::Setting
|
6
|
-
shoe_size_range: !ruby/range 1..
|
6
|
+
shoe_size_range: !ruby/range 1..230
|
7
7
|
z_value: 0.75
|
8
8
|
twist: &turning_moment 8
|
9
|
-
forward_lean: &forward_lean 29
|
10
|
-
- !ruby/object:SkiBinding::Setting
|
9
|
+
forward_lean: &forward_lean 29
|
10
|
+
- !ruby/object:SkiBinding::Setting
|
11
|
+
shoe_size_range: !ruby/range 231..250
|
12
|
+
z_value: 0.75
|
13
|
+
twist: *turning_moment
|
14
|
+
forward_lean: *forward_lean
|
15
|
+
- !ruby/object:SkiBinding::Setting
|
11
16
|
shoe_size_range: !ruby/range 251..270
|
12
17
|
z_value: 0.75
|
13
18
|
twist: *turning_moment
|
14
19
|
forward_lean: *forward_lean
|
15
|
-
- !ruby/object:SkiBinding::Setting
|
16
|
-
shoe_size_range:
|
20
|
+
- !ruby/object:SkiBinding::Setting
|
21
|
+
shoe_size_range: !ruby/range 271..290
|
22
|
+
z_value: ~
|
23
|
+
twist: ~
|
24
|
+
forward_lean: ~
|
25
|
+
- !ruby/object:SkiBinding::Setting
|
26
|
+
shoe_size_range: !ruby/range 291..310
|
17
27
|
z_value: ~
|
18
28
|
twist: ~
|
19
29
|
forward_lean: ~
|
20
|
-
- !ruby/object:SkiBinding::Setting
|
21
|
-
shoe_size_range:
|
30
|
+
- !ruby/object:SkiBinding::Setting
|
31
|
+
shoe_size_range: !ruby/range 311..330
|
22
32
|
z_value: ~
|
23
33
|
twist: ~
|
24
34
|
forward_lean: ~
|
25
|
-
- !ruby/object:SkiBinding::Setting
|
26
|
-
shoe_size_range:
|
35
|
+
- !ruby/object:SkiBinding::Setting
|
36
|
+
shoe_size_range: !ruby/range 331..350
|
27
37
|
z_value: ~
|
28
38
|
twist: ~
|
29
39
|
forward_lean: ~
|
30
|
-
- !ruby/object:SkiBinding::Setting
|
31
|
-
shoe_size_range:
|
40
|
+
- !ruby/object:SkiBinding::Setting
|
41
|
+
shoe_size_range: !ruby/range
|
42
|
+
begin: 351
|
43
|
+
end: .inf
|
32
44
|
z_value: ~
|
33
45
|
twist: ~
|
34
46
|
forward_lean: ~
|
35
|
-
-
|
47
|
+
-
|
36
48
|
- !ruby/object:SkiBinding::Setting
|
37
|
-
shoe_size_range: !ruby/range 1..
|
38
|
-
z_value: 1
|
49
|
+
shoe_size_range: !ruby/range 1..230
|
50
|
+
z_value: 1.0
|
39
51
|
twist: &turning_moment 11
|
40
|
-
forward_lean: &forward_lean 40
|
52
|
+
forward_lean: &forward_lean 40
|
53
|
+
- !ruby/object:SkiBinding::Setting
|
54
|
+
shoe_size_range: !ruby/range 231..250
|
55
|
+
z_value: 0.75
|
56
|
+
twist: *turning_moment
|
57
|
+
forward_lean: *forward_lean
|
41
58
|
- !ruby/object:SkiBinding::Setting
|
42
59
|
shoe_size_range: !ruby/range 251..270
|
43
|
-
z_value:
|
60
|
+
z_value: 0.75
|
44
61
|
twist: *turning_moment
|
45
62
|
forward_lean: *forward_lean
|
46
63
|
- !ruby/object:SkiBinding::Setting
|
47
64
|
shoe_size_range: !ruby/range 271..290
|
48
65
|
z_value: 0.75
|
49
66
|
twist: *turning_moment
|
50
|
-
forward_lean:
|
51
|
-
- !ruby/object:SkiBinding::Setting
|
52
|
-
shoe_size_range:
|
67
|
+
forward_lean: *forward_lean
|
68
|
+
- !ruby/object:SkiBinding::Setting
|
69
|
+
shoe_size_range: !ruby/range 291..310
|
53
70
|
z_value: ~
|
54
71
|
twist: ~
|
55
72
|
forward_lean: ~
|
56
|
-
- !ruby/object:SkiBinding::Setting
|
57
|
-
shoe_size_range:
|
73
|
+
- !ruby/object:SkiBinding::Setting
|
74
|
+
shoe_size_range: !ruby/range 311..330
|
58
75
|
z_value: ~
|
59
76
|
twist: ~
|
60
77
|
forward_lean: ~
|
61
|
-
- !ruby/object:SkiBinding::Setting
|
62
|
-
shoe_size_range:
|
78
|
+
- !ruby/object:SkiBinding::Setting
|
79
|
+
shoe_size_range: !ruby/range 331..350
|
63
80
|
z_value: ~
|
64
81
|
twist: ~
|
65
82
|
forward_lean: ~
|
66
|
-
-
|
67
83
|
- !ruby/object:SkiBinding::Setting
|
68
|
-
shoe_size_range: !ruby/range
|
84
|
+
shoe_size_range: !ruby/range
|
85
|
+
begin: 351
|
86
|
+
end: .inf
|
87
|
+
z_value: ~
|
88
|
+
twist: ~
|
89
|
+
forward_lean: ~
|
90
|
+
-
|
91
|
+
- !ruby/object:SkiBinding::Setting
|
92
|
+
shoe_size_range: !ruby/range 1..230
|
69
93
|
z_value: 1.5
|
70
94
|
twist: &turning_moment 14
|
71
95
|
forward_lean: &forward_lean 52
|
96
|
+
- !ruby/object:SkiBinding::Setting
|
97
|
+
shoe_size_range: !ruby/range 231..250
|
98
|
+
z_value: 1.25
|
99
|
+
twist: *turning_moment
|
100
|
+
forward_lean: *forward_lean
|
72
101
|
- !ruby/object:SkiBinding::Setting
|
73
102
|
shoe_size_range: !ruby/range 251..270
|
74
103
|
z_value: 1.25
|
@@ -76,30 +105,42 @@
|
|
76
105
|
forward_lean: *forward_lean
|
77
106
|
- !ruby/object:SkiBinding::Setting
|
78
107
|
shoe_size_range: !ruby/range 271..290
|
79
|
-
z_value: 1
|
108
|
+
z_value: 1.0
|
80
109
|
twist: *turning_moment
|
81
110
|
forward_lean: *forward_lean
|
82
|
-
- !ruby/object:SkiBinding::Setting
|
83
|
-
shoe_size_range:
|
111
|
+
- !ruby/object:SkiBinding::Setting
|
112
|
+
shoe_size_range: !ruby/range 291..310
|
84
113
|
z_value: ~
|
85
114
|
twist: ~
|
86
115
|
forward_lean: ~
|
87
|
-
- !ruby/object:SkiBinding::Setting
|
88
|
-
shoe_size_range:
|
116
|
+
- !ruby/object:SkiBinding::Setting
|
117
|
+
shoe_size_range: !ruby/range 311..330
|
89
118
|
z_value: ~
|
90
119
|
twist: ~
|
91
120
|
forward_lean: ~
|
92
|
-
- !ruby/object:SkiBinding::Setting
|
93
|
-
shoe_size_range:
|
121
|
+
- !ruby/object:SkiBinding::Setting
|
122
|
+
shoe_size_range: !ruby/range 331..350
|
123
|
+
z_value: ~
|
124
|
+
twist: ~
|
125
|
+
forward_lean: ~
|
126
|
+
- !ruby/object:SkiBinding::Setting
|
127
|
+
shoe_size_range: !ruby/range
|
128
|
+
begin: 351
|
129
|
+
end: .inf
|
94
130
|
z_value: ~
|
95
131
|
twist: ~
|
96
132
|
forward_lean: ~
|
97
133
|
-
|
98
134
|
- !ruby/object:SkiBinding::Setting
|
99
|
-
shoe_size_range: !ruby/range 1..
|
100
|
-
z_value:
|
135
|
+
shoe_size_range: !ruby/range 1..230
|
136
|
+
z_value: 2.0
|
101
137
|
twist: &turning_moment 17
|
102
138
|
forward_lean: &forward_lean 64
|
139
|
+
- !ruby/object:SkiBinding::Setting
|
140
|
+
shoe_size_range: !ruby/range 231..250
|
141
|
+
z_value: 1.75
|
142
|
+
twist: *turning_moment
|
143
|
+
forward_lean: *forward_lean
|
103
144
|
- !ruby/object:SkiBinding::Setting
|
104
145
|
shoe_size_range: !ruby/range 251..270
|
105
146
|
z_value: 1.5
|
@@ -115,25 +156,37 @@
|
|
115
156
|
z_value: 1.25
|
116
157
|
twist: *turning_moment
|
117
158
|
forward_lean: *forward_lean
|
118
|
-
- !ruby/object:SkiBinding::Setting
|
119
|
-
shoe_size_range:
|
159
|
+
- !ruby/object:SkiBinding::Setting
|
160
|
+
shoe_size_range: !ruby/range 311..330
|
161
|
+
z_value: ~
|
162
|
+
twist: ~
|
163
|
+
forward_lean: ~
|
164
|
+
- !ruby/object:SkiBinding::Setting
|
165
|
+
shoe_size_range: !ruby/range 331..350
|
120
166
|
z_value: ~
|
121
167
|
twist: ~
|
122
168
|
forward_lean: ~
|
123
|
-
- !ruby/object:SkiBinding::Setting
|
124
|
-
shoe_size_range:
|
169
|
+
- !ruby/object:SkiBinding::Setting
|
170
|
+
shoe_size_range: !ruby/range
|
171
|
+
begin: 351
|
172
|
+
end: .inf
|
125
173
|
z_value: ~
|
126
174
|
twist: ~
|
127
175
|
forward_lean: ~
|
128
176
|
-
|
129
177
|
- !ruby/object:SkiBinding::Setting
|
130
|
-
shoe_size_range: !ruby/range 1..
|
131
|
-
z_value: 2.
|
178
|
+
shoe_size_range: !ruby/range 1..230
|
179
|
+
z_value: 2.5
|
132
180
|
twist: &turning_moment 20
|
133
181
|
forward_lean: &forward_lean 75
|
134
182
|
- !ruby/object:SkiBinding::Setting
|
135
|
-
shoe_size_range: !ruby/range
|
136
|
-
z_value: 2
|
183
|
+
shoe_size_range: !ruby/range 231..250
|
184
|
+
z_value: 2.25
|
185
|
+
twist: *turning_moment
|
186
|
+
forward_lean: *forward_lean
|
187
|
+
- !ruby/object:SkiBinding::Setting
|
188
|
+
shoe_size_range: !ruby/range 251..270
|
189
|
+
z_value: 2.0
|
137
190
|
twist: *turning_moment
|
138
191
|
forward_lean: *forward_lean
|
139
192
|
- !ruby/object:SkiBinding::Setting
|
@@ -147,23 +200,35 @@
|
|
147
200
|
twist: *turning_moment
|
148
201
|
forward_lean: *forward_lean
|
149
202
|
- !ruby/object:SkiBinding::Setting
|
150
|
-
shoe_size_range: !ruby/range 311..330
|
203
|
+
shoe_size_range: !ruby/range 311..330
|
151
204
|
z_value: 1.5
|
152
205
|
twist: *turning_moment
|
153
206
|
forward_lean: *forward_lean
|
154
|
-
- !ruby/object:SkiBinding::Setting
|
155
|
-
shoe_size_range:
|
207
|
+
- !ruby/object:SkiBinding::Setting
|
208
|
+
shoe_size_range: !ruby/range 331..350
|
209
|
+
z_value: ~
|
210
|
+
twist: ~
|
211
|
+
forward_lean: ~
|
212
|
+
- !ruby/object:SkiBinding::Setting
|
213
|
+
shoe_size_range: !ruby/range
|
214
|
+
begin: 351
|
215
|
+
end: .inf
|
156
216
|
z_value: ~
|
157
217
|
twist: ~
|
158
218
|
forward_lean: ~
|
159
219
|
-
|
160
220
|
- !ruby/object:SkiBinding::Setting
|
161
|
-
shoe_size_range: !ruby/range 1..
|
162
|
-
z_value:
|
221
|
+
shoe_size_range: !ruby/range 1..230
|
222
|
+
z_value: 3.0
|
163
223
|
twist: &turning_moment 23
|
164
224
|
forward_lean: &forward_lean 87
|
165
225
|
- !ruby/object:SkiBinding::Setting
|
166
|
-
shoe_size_range: !ruby/range
|
226
|
+
shoe_size_range: !ruby/range 231..250
|
227
|
+
z_value: 2.75
|
228
|
+
twist: *turning_moment
|
229
|
+
forward_lean: *forward_lean
|
230
|
+
- !ruby/object:SkiBinding::Setting
|
231
|
+
shoe_size_range: !ruby/range 251..270
|
167
232
|
z_value: 2.5
|
168
233
|
twist: *turning_moment
|
169
234
|
forward_lean: *forward_lean
|
@@ -174,7 +239,7 @@
|
|
174
239
|
forward_lean: *forward_lean
|
175
240
|
- !ruby/object:SkiBinding::Setting
|
176
241
|
shoe_size_range: !ruby/range 291..310
|
177
|
-
z_value: 2
|
242
|
+
z_value: 2.0
|
178
243
|
twist: *turning_moment
|
179
244
|
forward_lean: *forward_lean
|
180
245
|
- !ruby/object:SkiBinding::Setting
|
@@ -183,21 +248,31 @@
|
|
183
248
|
twist: *turning_moment
|
184
249
|
forward_lean: *forward_lean
|
185
250
|
- !ruby/object:SkiBinding::Setting
|
186
|
-
shoe_size_range: !ruby/range
|
187
|
-
begin: 331
|
188
|
-
end: .inf
|
251
|
+
shoe_size_range: !ruby/range 331..350
|
189
252
|
z_value: 1.75
|
190
253
|
twist: *turning_moment
|
191
254
|
forward_lean: *forward_lean
|
255
|
+
- !ruby/object:SkiBinding::Setting
|
256
|
+
shoe_size_range: !ruby/range
|
257
|
+
begin: 351
|
258
|
+
end: .inf
|
259
|
+
z_value: ~
|
260
|
+
twist: ~
|
261
|
+
forward_lean: ~
|
192
262
|
-
|
193
263
|
- !ruby/object:SkiBinding::Setting
|
194
|
-
shoe_size_range: !ruby/range 1..
|
264
|
+
shoe_size_range: !ruby/range 1..230
|
265
|
+
z_value: ~
|
266
|
+
twist: ~
|
267
|
+
forward_lean: ~
|
268
|
+
- !ruby/object:SkiBinding::Setting
|
269
|
+
shoe_size_range: !ruby/range 231..250
|
195
270
|
z_value: 3.5
|
196
271
|
twist: &turning_moment 27
|
197
272
|
forward_lean: &forward_lean 102
|
198
273
|
- !ruby/object:SkiBinding::Setting
|
199
274
|
shoe_size_range: !ruby/range 251..270
|
200
|
-
z_value: 3
|
275
|
+
z_value: 3.0
|
201
276
|
twist: *turning_moment
|
202
277
|
forward_lean: *forward_lean
|
203
278
|
- !ruby/object:SkiBinding::Setting
|
@@ -216,31 +291,41 @@
|
|
216
291
|
twist: *turning_moment
|
217
292
|
forward_lean: *forward_lean
|
218
293
|
- !ruby/object:SkiBinding::Setting
|
219
|
-
shoe_size_range: !ruby/range
|
220
|
-
|
221
|
-
end: .inf
|
222
|
-
z_value: 2
|
294
|
+
shoe_size_range: !ruby/range 331..350
|
295
|
+
z_value: 2.0
|
223
296
|
twist: *turning_moment
|
224
297
|
forward_lean: *forward_lean
|
298
|
+
- !ruby/object:SkiBinding::Setting
|
299
|
+
shoe_size_range: !ruby/range
|
300
|
+
begin: 351
|
301
|
+
end: .inf
|
302
|
+
z_value: ~
|
303
|
+
twist: ~
|
304
|
+
forward_lean: ~
|
225
305
|
-
|
226
306
|
- !ruby/object:SkiBinding::Setting
|
227
|
-
shoe_size_range: !ruby/range 1..
|
228
|
-
z_value:
|
229
|
-
twist:
|
230
|
-
forward_lean:
|
307
|
+
shoe_size_range: !ruby/range 1..230
|
308
|
+
z_value: ~
|
309
|
+
twist: ~
|
310
|
+
forward_lean: ~
|
311
|
+
- !ruby/object:SkiBinding::Setting
|
312
|
+
shoe_size_range: !ruby/range 231..250
|
313
|
+
z_value: ~
|
314
|
+
twist: ~
|
315
|
+
forward_lean: ~
|
231
316
|
- !ruby/object:SkiBinding::Setting
|
232
317
|
shoe_size_range: !ruby/range 251..270
|
233
318
|
z_value: 3.5
|
234
|
-
twist:
|
235
|
-
forward_lean:
|
319
|
+
twist: &turning_moment 27
|
320
|
+
forward_lean: &forward_lean 102
|
236
321
|
- !ruby/object:SkiBinding::Setting
|
237
322
|
shoe_size_range: !ruby/range 271..290
|
238
|
-
z_value: 3
|
323
|
+
z_value: 3.0
|
239
324
|
twist: *turning_moment
|
240
325
|
forward_lean: *forward_lean
|
241
326
|
- !ruby/object:SkiBinding::Setting
|
242
327
|
shoe_size_range: !ruby/range 291..310
|
243
|
-
z_value: 3
|
328
|
+
z_value: 3.0
|
244
329
|
twist: *turning_moment
|
245
330
|
forward_lean: *forward_lean
|
246
331
|
- !ruby/object:SkiBinding::Setting
|
@@ -249,26 +334,36 @@
|
|
249
334
|
twist: *turning_moment
|
250
335
|
forward_lean: *forward_lean
|
251
336
|
- !ruby/object:SkiBinding::Setting
|
252
|
-
shoe_size_range: !ruby/range
|
253
|
-
begin: 331
|
254
|
-
end: .inf
|
337
|
+
shoe_size_range: !ruby/range 331..350
|
255
338
|
z_value: 2.5
|
256
339
|
twist: *turning_moment
|
257
340
|
forward_lean: *forward_lean
|
341
|
+
- !ruby/object:SkiBinding::Setting
|
342
|
+
shoe_size_range: !ruby/range
|
343
|
+
begin: 351
|
344
|
+
end: .inf
|
345
|
+
z_value: ~
|
346
|
+
twist: ~
|
347
|
+
forward_lean: ~
|
258
348
|
-
|
259
349
|
- !ruby/object:SkiBinding::Setting
|
260
|
-
shoe_size_range: !ruby/range 1..
|
261
|
-
z_value:
|
262
|
-
twist:
|
263
|
-
forward_lean:
|
350
|
+
shoe_size_range: !ruby/range 1..230
|
351
|
+
z_value: ~
|
352
|
+
twist: ~
|
353
|
+
forward_lean: ~
|
354
|
+
- !ruby/object:SkiBinding::Setting
|
355
|
+
shoe_size_range: !ruby/range 231..250
|
356
|
+
z_value: ~
|
357
|
+
twist: ~
|
358
|
+
forward_lean: ~
|
264
359
|
- !ruby/object:SkiBinding::Setting
|
265
360
|
shoe_size_range: !ruby/range 251..270
|
266
361
|
z_value: 4.5
|
267
|
-
twist:
|
268
|
-
forward_lean:
|
362
|
+
twist: &turning_moment 37
|
363
|
+
forward_lean: &forward_lean 141
|
269
364
|
- !ruby/object:SkiBinding::Setting
|
270
365
|
shoe_size_range: !ruby/range 271..290
|
271
|
-
z_value: 4
|
366
|
+
z_value: 4.0
|
272
367
|
twist: *turning_moment
|
273
368
|
forward_lean: *forward_lean
|
274
369
|
- !ruby/object:SkiBinding::Setting
|
@@ -282,26 +377,36 @@
|
|
282
377
|
twist: *turning_moment
|
283
378
|
forward_lean: *forward_lean
|
284
379
|
- !ruby/object:SkiBinding::Setting
|
285
|
-
shoe_size_range: !ruby/range
|
286
|
-
|
287
|
-
end: .inf
|
288
|
-
z_value: 3
|
380
|
+
shoe_size_range: !ruby/range 331..350
|
381
|
+
z_value: 3.0
|
289
382
|
twist: *turning_moment
|
290
383
|
forward_lean: *forward_lean
|
384
|
+
- !ruby/object:SkiBinding::Setting
|
385
|
+
shoe_size_range: !ruby/range
|
386
|
+
begin: 351
|
387
|
+
end: .inf
|
388
|
+
z_value: ~
|
389
|
+
twist: ~
|
390
|
+
forward_lean: ~
|
291
391
|
-
|
292
392
|
- !ruby/object:SkiBinding::Setting
|
293
|
-
shoe_size_range: !ruby/range 1..
|
294
|
-
z_value:
|
295
|
-
twist:
|
296
|
-
forward_lean:
|
393
|
+
shoe_size_range: !ruby/range 1..230
|
394
|
+
z_value: ~
|
395
|
+
twist: ~
|
396
|
+
forward_lean: ~
|
397
|
+
- !ruby/object:SkiBinding::Setting
|
398
|
+
shoe_size_range: !ruby/range 231..250
|
399
|
+
z_value: ~
|
400
|
+
twist: ~
|
401
|
+
forward_lean: ~
|
297
402
|
- !ruby/object:SkiBinding::Setting
|
298
403
|
shoe_size_range: !ruby/range 251..270
|
299
404
|
z_value: 5.5
|
300
|
-
twist:
|
301
|
-
forward_lean:
|
405
|
+
twist: &turning_moment 43
|
406
|
+
forward_lean: &forward_lean 165
|
302
407
|
- !ruby/object:SkiBinding::Setting
|
303
408
|
shoe_size_range: !ruby/range 271..290
|
304
|
-
z_value: 5
|
409
|
+
z_value: 5.0
|
305
410
|
twist: *turning_moment
|
306
411
|
forward_lean: *forward_lean
|
307
412
|
- !ruby/object:SkiBinding::Setting
|
@@ -311,30 +416,40 @@
|
|
311
416
|
forward_lean: *forward_lean
|
312
417
|
- !ruby/object:SkiBinding::Setting
|
313
418
|
shoe_size_range: !ruby/range 311..330
|
314
|
-
z_value: 4
|
419
|
+
z_value: 4.0
|
420
|
+
twist: *turning_moment
|
421
|
+
forward_lean: *forward_lean
|
422
|
+
- !ruby/object:SkiBinding::Setting
|
423
|
+
shoe_size_range: !ruby/range 331..350
|
424
|
+
z_value: 3.5
|
315
425
|
twist: *turning_moment
|
316
426
|
forward_lean: *forward_lean
|
317
427
|
- !ruby/object:SkiBinding::Setting
|
318
428
|
shoe_size_range: !ruby/range
|
319
|
-
begin:
|
429
|
+
begin: 351
|
320
430
|
end: .inf
|
321
|
-
z_value: 3.
|
431
|
+
z_value: 3.0
|
322
432
|
twist: *turning_moment
|
323
433
|
forward_lean: *forward_lean
|
324
434
|
-
|
325
435
|
- !ruby/object:SkiBinding::Setting
|
326
|
-
shoe_size_range: !ruby/range 1..
|
327
|
-
z_value:
|
328
|
-
twist:
|
329
|
-
forward_lean:
|
436
|
+
shoe_size_range: !ruby/range 1..230
|
437
|
+
z_value: ~
|
438
|
+
twist: ~
|
439
|
+
forward_lean: ~
|
440
|
+
- !ruby/object:SkiBinding::Setting
|
441
|
+
shoe_size_range: !ruby/range 231..250
|
442
|
+
z_value: ~
|
443
|
+
twist: ~
|
444
|
+
forward_lean: ~
|
330
445
|
- !ruby/object:SkiBinding::Setting
|
331
446
|
shoe_size_range: !ruby/range 251..270
|
332
447
|
z_value: 6.5
|
333
|
-
twist:
|
334
|
-
forward_lean:
|
448
|
+
twist: &turning_moment 50
|
449
|
+
forward_lean: &forward_lean 194
|
335
450
|
- !ruby/object:SkiBinding::Setting
|
336
451
|
shoe_size_range: !ruby/range 271..290
|
337
|
-
z_value: 6
|
452
|
+
z_value: 6.0
|
338
453
|
twist: *turning_moment
|
339
454
|
forward_lean: *forward_lean
|
340
455
|
- !ruby/object:SkiBinding::Setting
|
@@ -344,30 +459,40 @@
|
|
344
459
|
forward_lean: *forward_lean
|
345
460
|
- !ruby/object:SkiBinding::Setting
|
346
461
|
shoe_size_range: !ruby/range 311..330
|
347
|
-
z_value: 5
|
462
|
+
z_value: 5.0
|
463
|
+
twist: *turning_moment
|
464
|
+
forward_lean: *forward_lean
|
465
|
+
- !ruby/object:SkiBinding::Setting
|
466
|
+
shoe_size_range: !ruby/range 331..350
|
467
|
+
z_value: 4.5
|
348
468
|
twist: *turning_moment
|
349
469
|
forward_lean: *forward_lean
|
350
470
|
- !ruby/object:SkiBinding::Setting
|
351
471
|
shoe_size_range: !ruby/range
|
352
|
-
begin:
|
472
|
+
begin: 351
|
353
473
|
end: .inf
|
354
|
-
z_value: 4.
|
474
|
+
z_value: 4.0
|
355
475
|
twist: *turning_moment
|
356
476
|
forward_lean: *forward_lean
|
357
477
|
-
|
358
478
|
- !ruby/object:SkiBinding::Setting
|
359
|
-
shoe_size_range: !ruby/range 1..
|
360
|
-
z_value:
|
361
|
-
twist:
|
362
|
-
forward_lean:
|
479
|
+
shoe_size_range: !ruby/range 1..230
|
480
|
+
z_value: ~
|
481
|
+
twist: ~
|
482
|
+
forward_lean: ~
|
483
|
+
- !ruby/object:SkiBinding::Setting
|
484
|
+
shoe_size_range: !ruby/range 231..250
|
485
|
+
z_value: ~
|
486
|
+
twist: ~
|
487
|
+
forward_lean: ~
|
363
488
|
- !ruby/object:SkiBinding::Setting
|
364
489
|
shoe_size_range: !ruby/range 251..270
|
365
490
|
z_value: 7.5
|
366
|
-
twist:
|
367
|
-
forward_lean:
|
491
|
+
twist: &turning_moment 58
|
492
|
+
forward_lean: &forward_lean 229
|
368
493
|
- !ruby/object:SkiBinding::Setting
|
369
494
|
shoe_size_range: !ruby/range 271..290
|
370
|
-
z_value: 7
|
495
|
+
z_value: 7.0
|
371
496
|
twist: *turning_moment
|
372
497
|
forward_lean: *forward_lean
|
373
498
|
- !ruby/object:SkiBinding::Setting
|
@@ -377,65 +502,85 @@
|
|
377
502
|
forward_lean: *forward_lean
|
378
503
|
- !ruby/object:SkiBinding::Setting
|
379
504
|
shoe_size_range: !ruby/range 311..330
|
380
|
-
z_value: 6
|
505
|
+
z_value: 6.0
|
506
|
+
twist: *turning_moment
|
507
|
+
forward_lean: *forward_lean
|
508
|
+
- !ruby/object:SkiBinding::Setting
|
509
|
+
shoe_size_range: !ruby/range 331..350
|
510
|
+
z_value: 5.5
|
381
511
|
twist: *turning_moment
|
382
512
|
forward_lean: *forward_lean
|
383
513
|
- !ruby/object:SkiBinding::Setting
|
384
514
|
shoe_size_range: !ruby/range
|
385
|
-
begin:
|
515
|
+
begin: 351
|
386
516
|
end: .inf
|
387
|
-
z_value: 5.
|
517
|
+
z_value: 5.0
|
388
518
|
twist: *turning_moment
|
389
519
|
forward_lean: *forward_lean
|
390
520
|
-
|
391
521
|
- !ruby/object:SkiBinding::Setting
|
392
|
-
shoe_size_range: !ruby/range 1..
|
393
|
-
z_value:
|
394
|
-
twist:
|
395
|
-
forward_lean:
|
522
|
+
shoe_size_range: !ruby/range 1..230
|
523
|
+
z_value: ~
|
524
|
+
twist: ~
|
525
|
+
forward_lean: ~
|
526
|
+
- !ruby/object:SkiBinding::Setting
|
527
|
+
shoe_size_range: !ruby/range 231..250
|
528
|
+
z_value: ~
|
529
|
+
twist: ~
|
530
|
+
forward_lean: ~
|
396
531
|
- !ruby/object:SkiBinding::Setting
|
397
532
|
shoe_size_range: !ruby/range 251..270
|
398
|
-
z_value:
|
399
|
-
twist:
|
400
|
-
forward_lean:
|
533
|
+
z_value: ~
|
534
|
+
twist: ~
|
535
|
+
forward_lean: ~
|
401
536
|
- !ruby/object:SkiBinding::Setting
|
402
537
|
shoe_size_range: !ruby/range 271..290
|
403
538
|
z_value: 8.5
|
404
|
-
twist:
|
405
|
-
forward_lean:
|
539
|
+
twist: &turning_moment 67
|
540
|
+
forward_lean: &forward_lean 271
|
406
541
|
- !ruby/object:SkiBinding::Setting
|
407
542
|
shoe_size_range: !ruby/range 291..310
|
408
|
-
z_value: 8
|
543
|
+
z_value: 8.0
|
409
544
|
twist: *turning_moment
|
410
545
|
forward_lean: *forward_lean
|
411
546
|
- !ruby/object:SkiBinding::Setting
|
412
547
|
shoe_size_range: !ruby/range 311..330
|
413
|
-
z_value: 7
|
548
|
+
z_value: 7.0
|
549
|
+
twist: *turning_moment
|
550
|
+
forward_lean: *forward_lean
|
551
|
+
- !ruby/object:SkiBinding::Setting
|
552
|
+
shoe_size_range: !ruby/range 331..350
|
553
|
+
z_value: 6.5
|
414
554
|
twist: *turning_moment
|
415
555
|
forward_lean: *forward_lean
|
416
556
|
- !ruby/object:SkiBinding::Setting
|
417
557
|
shoe_size_range: !ruby/range
|
418
|
-
begin:
|
558
|
+
begin: 351
|
419
559
|
end: .inf
|
420
|
-
z_value: 6.
|
560
|
+
z_value: 6.0
|
421
561
|
twist: *turning_moment
|
422
562
|
forward_lean: *forward_lean
|
423
563
|
-
|
424
564
|
- !ruby/object:SkiBinding::Setting
|
425
|
-
shoe_size_range: !ruby/range 1..
|
426
|
-
z_value:
|
427
|
-
twist:
|
428
|
-
forward_lean:
|
565
|
+
shoe_size_range: !ruby/range 1..230
|
566
|
+
z_value: ~
|
567
|
+
twist: ~
|
568
|
+
forward_lean: ~
|
569
|
+
- !ruby/object:SkiBinding::Setting
|
570
|
+
shoe_size_range: !ruby/range 231..250
|
571
|
+
z_value: ~
|
572
|
+
twist: ~
|
573
|
+
forward_lean: ~
|
429
574
|
- !ruby/object:SkiBinding::Setting
|
430
575
|
shoe_size_range: !ruby/range 251..270
|
431
|
-
z_value:
|
432
|
-
twist:
|
433
|
-
forward_lean:
|
576
|
+
z_value: ~
|
577
|
+
twist: ~
|
578
|
+
forward_lean: ~
|
434
579
|
- !ruby/object:SkiBinding::Setting
|
435
580
|
shoe_size_range: !ruby/range 271..290
|
436
|
-
z_value: 10
|
437
|
-
twist:
|
438
|
-
forward_lean:
|
581
|
+
z_value: 10.0
|
582
|
+
twist: &turning_moment 78
|
583
|
+
forward_lean: &forward_lean 320
|
439
584
|
- !ruby/object:SkiBinding::Setting
|
440
585
|
shoe_size_range: !ruby/range 291..310
|
441
586
|
z_value: 9.5
|
@@ -446,43 +591,101 @@
|
|
446
591
|
z_value: 8.5
|
447
592
|
twist: *turning_moment
|
448
593
|
forward_lean: *forward_lean
|
594
|
+
- !ruby/object:SkiBinding::Setting
|
595
|
+
shoe_size_range: !ruby/range 331..350
|
596
|
+
z_value: 8.0
|
597
|
+
twist: *turning_moment
|
598
|
+
forward_lean: *forward_lean
|
449
599
|
- !ruby/object:SkiBinding::Setting
|
450
600
|
shoe_size_range: !ruby/range
|
451
|
-
begin:
|
601
|
+
begin: 351
|
452
602
|
end: .inf
|
453
|
-
z_value:
|
603
|
+
z_value: 7.5
|
454
604
|
twist: *turning_moment
|
455
605
|
forward_lean: *forward_lean
|
456
606
|
-
|
457
607
|
- !ruby/object:SkiBinding::Setting
|
458
|
-
shoe_size_range: !ruby/range 1..
|
459
|
-
z_value:
|
608
|
+
shoe_size_range: !ruby/range 1..230
|
609
|
+
z_value: ~
|
610
|
+
twist: ~
|
611
|
+
forward_lean: ~
|
612
|
+
- !ruby/object:SkiBinding::Setting
|
613
|
+
shoe_size_range: !ruby/range 231..250
|
614
|
+
z_value: ~
|
615
|
+
twist: ~
|
616
|
+
forward_lean: ~
|
617
|
+
- !ruby/object:SkiBinding::Setting
|
618
|
+
shoe_size_range: !ruby/range 251..270
|
619
|
+
z_value: ~
|
620
|
+
twist: ~
|
621
|
+
forward_lean: ~
|
622
|
+
- !ruby/object:SkiBinding::Setting
|
623
|
+
shoe_size_range: !ruby/range 271..290
|
624
|
+
z_value: 11.5
|
460
625
|
twist: &turning_moment 91
|
461
626
|
forward_lean: &forward_lean 380
|
462
627
|
- !ruby/object:SkiBinding::Setting
|
463
|
-
shoe_size_range: !ruby/range
|
464
|
-
z_value:
|
628
|
+
shoe_size_range: !ruby/range 291..310
|
629
|
+
z_value: 11.0
|
465
630
|
twist: *turning_moment
|
466
631
|
forward_lean: *forward_lean
|
467
632
|
- !ruby/object:SkiBinding::Setting
|
468
|
-
shoe_size_range: !ruby/range
|
469
|
-
z_value:
|
633
|
+
shoe_size_range: !ruby/range 311..330
|
634
|
+
z_value: 10.0
|
470
635
|
twist: *turning_moment
|
471
636
|
forward_lean: *forward_lean
|
472
637
|
- !ruby/object:SkiBinding::Setting
|
473
|
-
shoe_size_range: !ruby/range
|
474
|
-
z_value:
|
638
|
+
shoe_size_range: !ruby/range 331..350
|
639
|
+
z_value: 9.5
|
475
640
|
twist: *turning_moment
|
476
641
|
forward_lean: *forward_lean
|
642
|
+
- !ruby/object:SkiBinding::Setting
|
643
|
+
shoe_size_range: !ruby/range
|
644
|
+
begin: 351
|
645
|
+
end: .inf
|
646
|
+
z_value: 9.0
|
647
|
+
twist: *turning_moment
|
648
|
+
forward_lean: *forward_lean
|
649
|
+
-
|
650
|
+
- !ruby/object:SkiBinding::Setting
|
651
|
+
shoe_size_range: !ruby/range 1..230
|
652
|
+
z_value: ~
|
653
|
+
twist: ~
|
654
|
+
forward_lean: ~
|
655
|
+
- !ruby/object:SkiBinding::Setting
|
656
|
+
shoe_size_range: !ruby/range 231..250
|
657
|
+
z_value: ~
|
658
|
+
twist: ~
|
659
|
+
forward_lean: ~
|
660
|
+
- !ruby/object:SkiBinding::Setting
|
661
|
+
shoe_size_range: !ruby/range 251..270
|
662
|
+
z_value: ~
|
663
|
+
twist: ~
|
664
|
+
forward_lean: ~
|
665
|
+
- !ruby/object:SkiBinding::Setting
|
666
|
+
shoe_size_range: !ruby/range 271..290
|
667
|
+
z_value: ~
|
668
|
+
twist: ~
|
669
|
+
forward_lean: ~
|
670
|
+
- !ruby/object:SkiBinding::Setting
|
671
|
+
shoe_size_range: !ruby/range 291..310
|
672
|
+
z_value: ~
|
673
|
+
twist: ~
|
674
|
+
forward_lean: ~
|
477
675
|
- !ruby/object:SkiBinding::Setting
|
478
676
|
shoe_size_range: !ruby/range 311..330
|
479
|
-
z_value:
|
677
|
+
z_value: 12.0
|
678
|
+
twist: &turning_moment 105
|
679
|
+
forward_lean: &forward_lean 452
|
680
|
+
- !ruby/object:SkiBinding::Setting
|
681
|
+
shoe_size_range: !ruby/range 331..350
|
682
|
+
z_value: 11.0
|
480
683
|
twist: *turning_moment
|
481
684
|
forward_lean: *forward_lean
|
482
685
|
- !ruby/object:SkiBinding::Setting
|
483
686
|
shoe_size_range: !ruby/range
|
484
|
-
begin:
|
687
|
+
begin: 351
|
485
688
|
end: .inf
|
486
|
-
z_value:
|
689
|
+
z_value: 10.5
|
487
690
|
twist: *turning_moment
|
488
691
|
forward_lean: *forward_lean
|
@@ -3,36 +3,89 @@ require 'ski_binding_calculator/config_loader'
|
|
3
3
|
class SkiBinding::Calculator
|
4
4
|
extend SkiBinding::ConfigLoader
|
5
5
|
|
6
|
-
def self.setting(
|
7
|
-
|
8
|
-
self.
|
6
|
+
def self.setting(attrs)
|
7
|
+
attrs = self.prep_attributes(attrs)
|
8
|
+
attrs = self.age(attrs)
|
9
|
+
attrs = self.validate_type(attrs)
|
10
|
+
code = self.binding_code(attrs)
|
11
|
+
self.binding_setting(attrs, code)
|
9
12
|
end
|
10
13
|
|
11
14
|
private
|
12
|
-
|
13
|
-
|
15
|
+
def self.prep_attributes(attrs)
|
16
|
+
hashy = {}
|
17
|
+
hashy[:weight] = attrs[:weight].to_f || attrs["weight"].to_f
|
18
|
+
if hashy[:weight] < 10
|
19
|
+
raise ArgumentError, "Weight must be at least 10kg"
|
20
|
+
end
|
21
|
+
hashy[:height] = attrs[:height].to_f || attrs["height"].to_f
|
22
|
+
hashy[:shoe_size] = attrs[:shoe_size].to_f || attrs["shoe_size"].to_f
|
23
|
+
hashy[:birthday] = attrs[:birthday] || attrs["birthdate"]
|
24
|
+
hashy[:type] = attrs[:type] || attrs["type"]
|
25
|
+
attrs = hashy
|
26
|
+
attrs
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.age(attrs)
|
30
|
+
birthday = Date.parse(attrs[:birthday])
|
31
|
+
now = Date.today
|
32
|
+
age = now.year - birthday.year
|
33
|
+
age -= ((now.month > birthday.month ||
|
34
|
+
(now.month == birthday.month && now.day >= birthday.day)) ? 0 : 1)
|
35
|
+
attrs.delete(:birthday)
|
36
|
+
attrs[:age] = age
|
37
|
+
attrs
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.validate_type(attrs)
|
41
|
+
type_string = attrs[:type]
|
42
|
+
types = {"Type1-" => -1, "Type1" => 0, "Type2" => 1,
|
43
|
+
"Type3" => 2, "Type3+" => 3}
|
44
|
+
keys = types.keys
|
45
|
+
if keys.include?(type_string)
|
46
|
+
attrs[:type] = types[type_string]
|
47
|
+
else
|
48
|
+
raise ArgumentError, "You have entered an invalid type."
|
49
|
+
end
|
50
|
+
attrs
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.binding_code(attrs)
|
14
54
|
code = -1
|
15
55
|
self.load_binding_codes.each_with_index do |c,i|
|
16
|
-
|
17
|
-
|
18
|
-
|
56
|
+
if c.height.nil?
|
57
|
+
if c.weight.include?(attrs[:weight])
|
58
|
+
code = i
|
59
|
+
break
|
60
|
+
end
|
61
|
+
else
|
62
|
+
if c.weight.include?(attrs[:weight]) || c.height.include?(attrs[:height])
|
63
|
+
code = i
|
64
|
+
break
|
65
|
+
end
|
66
|
+
end
|
19
67
|
end
|
20
|
-
|
21
|
-
|
22
|
-
|
68
|
+
if code == -1
|
69
|
+
raise ArgumentError, "You have entered invalid weight and/or height"
|
70
|
+
end
|
71
|
+
unless attrs[:weight] < 13
|
72
|
+
code += attrs[:type]
|
73
|
+
if attrs[:age] >= 50 || attrs[:age] < 10
|
23
74
|
code -= 1
|
24
75
|
end
|
25
76
|
end
|
26
77
|
code
|
27
78
|
end
|
28
|
-
|
29
|
-
def self.binding_setting(
|
79
|
+
|
80
|
+
def self.binding_setting(attrs, code)
|
30
81
|
settings = self.load_binding_settings(code)
|
31
82
|
settings.each do |s|
|
32
|
-
if s.shoe_size_range.include?(
|
33
|
-
|
34
|
-
|
35
|
-
|
83
|
+
if s.shoe_size_range.include?(attrs[:shoe_size])
|
84
|
+
unless s.z_value.nil?
|
85
|
+
return {"z_value" => s.z_value}
|
86
|
+
else
|
87
|
+
raise ArgumentError, "Please calculate z-index by hand."
|
88
|
+
end
|
36
89
|
end
|
37
90
|
end
|
38
91
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'ski_binding_calculator'
|
4
|
-
s.version = '0.
|
4
|
+
s.version = '0.6.0'
|
5
5
|
s.date = '2013-08-05'
|
6
6
|
s.summary = "Ski Binding Calculator"
|
7
|
-
s.description = "
|
8
|
-
moment according to ISO 11088."
|
7
|
+
s.description = "Calculates the z-value according to ISO 11088."
|
9
8
|
s.authors = ["Jonas Ruef, Felix Langenegger"]
|
10
9
|
s.email = 'support@fadendaten.ch'
|
11
10
|
s.homepage = 'http://fadendaten.ch'
|
@@ -14,6 +13,7 @@ Gem::Specification.new do |s|
|
|
14
13
|
s.add_development_dependency "rspec", "~> 2.14.1"
|
15
14
|
s.add_development_dependency "spork", "~> 0.9.2"
|
16
15
|
s.add_development_dependency "simplecov", "~> 0.7.1"
|
16
|
+
s.add_development_dependency "timecop", "~> 0.6.3"
|
17
17
|
|
18
18
|
s.files = Dir.glob("{config,lib,spec}/**/*")
|
19
19
|
s.files += %w(Rakefile ski_binding_calculator.gemspec)
|
data/spec/lib/calculator_spec.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'timecop'
|
2
3
|
|
3
4
|
describe SkiBinding::Calculator do
|
4
5
|
before(:all) do
|
5
|
-
@
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
@hash = {:type => "Type2",
|
7
|
+
:weight => "70",
|
8
|
+
:height => "170",
|
9
|
+
:shoe_size => "315",
|
10
|
+
:birthday => "1983-01-01"}
|
11
|
+
#We freeze time so birthday will always be 30 years back
|
12
|
+
Timecop.freeze(2013, 8, 13)
|
9
13
|
end
|
10
14
|
|
11
15
|
describe "#new" do
|
@@ -14,53 +18,130 @@ describe SkiBinding::Calculator do
|
|
14
18
|
end
|
15
19
|
end
|
16
20
|
|
17
|
-
describe "#
|
18
|
-
it "returns a valid
|
19
|
-
|
20
|
-
|
21
|
+
describe "#prep_attributes" do
|
22
|
+
it "returns a valid hash" do
|
23
|
+
expected_hash = {:type => "Type2",
|
24
|
+
:weight => 70.0,
|
25
|
+
:height => 170.0,
|
26
|
+
:shoe_size => 315.0,
|
27
|
+
:birthday => "1983-01-01"}
|
28
|
+
SkiBinding::Calculator.prep_attributes(@hash).should == expected_hash
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns argument error if weight < 10kg" do
|
32
|
+
@hash[:weight] = "9"
|
33
|
+
expect { SkiBinding::Calculator.prep_attributes(@hash) }
|
34
|
+
.to raise_error(ArgumentError, "Weight must be at least 10kg")
|
35
|
+
@hash[:weight] = "70"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#age" do
|
40
|
+
before(:all) do
|
41
|
+
@preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns a hash with an age" do
|
45
|
+
result = SkiBinding::Calculator.age(@preped_hash)
|
46
|
+
result[:age].should == 30
|
21
47
|
end
|
22
48
|
end
|
23
49
|
|
50
|
+
describe "#validate_type" do
|
51
|
+
before :all do
|
52
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
53
|
+
@aged_hash = SkiBinding::Calculator.age(preped_hash)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "sets \"Type2\" to 1" do
|
57
|
+
result = SkiBinding::Calculator.validate_type(@aged_hash)
|
58
|
+
result[:type].should == 1
|
59
|
+
end
|
60
|
+
|
61
|
+
it "raises argument error on type \"unknown\"" do
|
62
|
+
wrong_aged_hash = {:type => "unknown",
|
63
|
+
:weight => 70,
|
64
|
+
:height => 170,
|
65
|
+
:shoe_size => 315,
|
66
|
+
:age => 30}
|
67
|
+
expect { SkiBinding::Calculator.validate_type(wrong_aged_hash) }
|
68
|
+
.to raise_error(ArgumentError, "You have entered an invalid type.")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
24
73
|
describe "#binding_code" do
|
74
|
+
before :each do
|
75
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
76
|
+
aged_hash = SkiBinding::Calculator.age(preped_hash)
|
77
|
+
@type_validated_hash = SkiBinding::Calculator.validate_type(aged_hash)
|
78
|
+
end
|
79
|
+
|
25
80
|
it "returns a valid code" do
|
26
|
-
SkiBinding::Calculator.binding_code(@
|
81
|
+
SkiBinding::Calculator.binding_code(@type_validated_hash).should == 11
|
82
|
+
end
|
83
|
+
|
84
|
+
it "returns unchanged code if weight less than 13kg" do
|
85
|
+
# because we set "Type2" the code would be changed by 1
|
86
|
+
@type_validated_hash[:weight] = 12
|
87
|
+
SkiBinding::Calculator.binding_code(@type_validated_hash).should == 0
|
88
|
+
end
|
89
|
+
|
90
|
+
it "raises argumentError if no code was found" do
|
91
|
+
@type_validated_hash[:weight] = -1
|
92
|
+
@type_validated_hash[:height] = -1
|
93
|
+
expect { SkiBinding::Calculator.binding_code(@type_validated_hash) }
|
94
|
+
.to raise_error(ArgumentError, "You have entered invalid weight and/or height")
|
27
95
|
end
|
28
96
|
|
29
|
-
context "returns code one less if age >= 50" do
|
97
|
+
context "returns code one less if age >= 50 || age < 10" do
|
30
98
|
before :each do
|
31
|
-
|
99
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
100
|
+
aged_hash = SkiBinding::Calculator.age(preped_hash)
|
101
|
+
@type_validated_hash_age_context = SkiBinding::Calculator.validate_type(aged_hash)
|
102
|
+
@code = SkiBinding::Calculator.binding_code(@type_validated_hash_age_context)
|
32
103
|
end
|
33
104
|
|
34
105
|
it "age is 50" do
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
lambda { @code = SkiBinding::Calculator.binding_code(person) }
|
39
|
-
.should change{@code}.by(-1)
|
106
|
+
@type_validated_hash_age_context[:age] = 50
|
107
|
+
lambda { @code = SkiBinding::Calculator.binding_code(@type_validated_hash_age_context) }
|
108
|
+
.should change{@code}.by(-1)
|
40
109
|
end
|
41
110
|
|
42
111
|
it "age is 51" do
|
43
|
-
|
44
|
-
|
45
|
-
person = SkiBinding::Person.new(hash)
|
46
|
-
lambda { @code = SkiBinding::Calculator.binding_code(person) }
|
112
|
+
@type_validated_hash_age_context[:age] = 51
|
113
|
+
lambda { @code = SkiBinding::Calculator.binding_code(@type_validated_hash_age_context) }
|
47
114
|
.should change{@code}.by(-1)
|
48
115
|
end
|
49
116
|
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#binding_setting" do
|
120
|
+
before :each do
|
121
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
122
|
+
aged_hash = SkiBinding::Calculator.age(preped_hash)
|
123
|
+
@type_validated_hash = SkiBinding::Calculator.validate_type(aged_hash)
|
124
|
+
end
|
50
125
|
|
51
|
-
it "returns
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
126
|
+
it "returns a valid setting" do
|
127
|
+
SkiBinding::Calculator.binding_setting(@type_validated_hash, 11).should ==
|
128
|
+
{"z_value"=>6}
|
129
|
+
end
|
130
|
+
|
131
|
+
it "raises argument error if no settings found" do
|
132
|
+
expect { SkiBinding::Calculator.binding_setting(@type_validated_hash, 0) }
|
133
|
+
.to raise_error(ArgumentError, "Please calculate z-index by hand.")
|
57
134
|
end
|
58
135
|
end
|
59
136
|
|
60
|
-
describe "#
|
137
|
+
describe "#setting" do
|
61
138
|
it "returns a valid setting" do
|
62
|
-
SkiBinding::Calculator.
|
63
|
-
{"z_value"=>6
|
139
|
+
SkiBinding::Calculator.setting(@hash).should ==
|
140
|
+
{"z_value"=>6}
|
64
141
|
end
|
65
142
|
end
|
143
|
+
|
144
|
+
after(:all) do
|
145
|
+
Timecop.return
|
146
|
+
end
|
66
147
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "ConfigLoader" do
|
4
4
|
|
5
5
|
before(:all) do
|
6
|
-
@range = 0..
|
6
|
+
@range = 0..15 #cause 16 settings
|
7
7
|
@dummy_class = DummyClass.new
|
8
8
|
@dummy_class.extend(SkiBinding::ConfigLoader)
|
9
9
|
end
|
@@ -61,7 +61,7 @@ describe "ConfigLoader" do
|
|
61
61
|
|
62
62
|
it "has 6 settings" do
|
63
63
|
@settings_all_codes.each do |s|
|
64
|
-
s.size.should ==
|
64
|
+
s.size.should == 8
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ski_binding_calculator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -59,8 +59,23 @@ dependencies:
|
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.7.1
|
62
|
-
|
63
|
-
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: timecop
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.6.3
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.6.3
|
78
|
+
description: Calculates the z-value according to ISO 11088.
|
64
79
|
email: support@fadendaten.ch
|
65
80
|
executables: []
|
66
81
|
extensions: []
|
@@ -71,14 +86,12 @@ files:
|
|
71
86
|
- lib/ski_binding_calculator/calculator.rb
|
72
87
|
- lib/ski_binding_calculator/code.rb
|
73
88
|
- lib/ski_binding_calculator/config_loader.rb
|
74
|
-
- lib/ski_binding_calculator/person.rb
|
75
89
|
- lib/ski_binding_calculator/setting.rb
|
76
90
|
- lib/ski_binding_calculator/ski_binding.rb
|
77
91
|
- lib/ski_binding_calculator.rb
|
78
92
|
- spec/lib/calculator_spec.rb
|
79
93
|
- spec/lib/code_spec.rb
|
80
94
|
- spec/lib/config_loader_spec.rb
|
81
|
-
- spec/lib/person_spec.rb
|
82
95
|
- spec/lib/setting_spec.rb
|
83
96
|
- spec/spec_helper.rb
|
84
97
|
- Rakefile
|
@@ -1,20 +0,0 @@
|
|
1
|
-
class SkiBinding::Person
|
2
|
-
attr_reader :type, :weight, :height, :shoe_size, :age
|
3
|
-
|
4
|
-
def initialize(values_hash)
|
5
|
-
@type = validate_type(values_hash["type"] || values_hash[:type])
|
6
|
-
@weight = values_hash["weight"] || values_hash[:weight]
|
7
|
-
@height = values_hash["height"] || values_hash[:height]
|
8
|
-
@shoe_size = values_hash["shoe_size"] || values_hash[:shoe_size]
|
9
|
-
@age = values_hash["age"] || values_hash[:age]
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def validate_type(type)
|
15
|
-
types = {"Type1-" => -1, "Type1" => 0, "Type2" => 1,
|
16
|
-
"Type3" => 2, "Type3+" => 3}
|
17
|
-
keys = types.keys
|
18
|
-
types[type] if keys.include?(type)
|
19
|
-
end
|
20
|
-
end
|
data/spec/lib/person_spec.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe SkiBinding::Person do
|
4
|
-
before :all do
|
5
|
-
@hash = {:type => "Type2",
|
6
|
-
:weight => 70,
|
7
|
-
:height => 170,
|
8
|
-
:shoe_size => 315,
|
9
|
-
:age => 30}
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "#new" do
|
13
|
-
it "should return a Person class" do
|
14
|
-
SkiBinding::Person.new(@hash).class.should == SkiBinding::Person
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context "instantiated Person class" do
|
19
|
-
before :all do
|
20
|
-
@person = SkiBinding::Person.new(@hash)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "has attribute type" do
|
24
|
-
@person.should respond_to :type
|
25
|
-
end
|
26
|
-
|
27
|
-
it "has attribute weight" do
|
28
|
-
@person.should respond_to :weight
|
29
|
-
end
|
30
|
-
|
31
|
-
it "has attribute heigth" do
|
32
|
-
@person.should respond_to :height
|
33
|
-
end
|
34
|
-
|
35
|
-
it "has attribute shoe_size" do
|
36
|
-
@person.should respond_to :shoe_size
|
37
|
-
end
|
38
|
-
|
39
|
-
it "has attribute age" do
|
40
|
-
@person.should respond_to :age
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "validates type" do
|
44
|
-
it "sets \"Type2\" to 1" do
|
45
|
-
@person.type.should == 1
|
46
|
-
end
|
47
|
-
|
48
|
-
it "sets type \"unknown\" to nil" do
|
49
|
-
hash = {:type => "unknown",
|
50
|
-
:weight => 70,
|
51
|
-
:height => 170,
|
52
|
-
:shoe_size => 315,
|
53
|
-
:age => 30}
|
54
|
-
SkiBinding::Person.new(hash).type.should == nil
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|