exner 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +23 -0
- data/.gemtest +0 -0
- data/History.txt +4 -0
- data/Manifest.txt +42 -0
- data/README.txt +49 -0
- data/Rakefile +19 -0
- data/bin/rorschach +4 -0
- data/bin/zulliger +4 -0
- data/data/.~lock.sumario_Zulliger.rtf# +1 -0
- data/data/Rorschach_Zest.txt +50 -0
- data/data/Zulliger_Zest.txt +50 -0
- data/data/sumario.rtf +240 -0
- data/data/sumario2.rtf +271 -0
- data/data/sumario_Rorschach.rtf +233 -0
- data/data/sumario_Zulliger.rtf +203 -0
- data/data/test_manchas.txt +16 -0
- data/data/zulli_test.txt +11 -0
- data/lib/exner/respuesta.rb +110 -0
- data/lib/exner/rorschach.rb +11 -0
- data/lib/exner/rorschach_plugins/cdi.rb +22 -0
- data/lib/exner/rorschach_plugins/depi.rb +38 -0
- data/lib/exner/rorschach_plugins/hvi.rb +25 -0
- data/lib/exner/rorschach_plugins/interpretacion.rb +438 -0
- data/lib/exner/rorschach_plugins/obs.rb +36 -0
- data/lib/exner/rorschach_plugins/scon.rb +44 -0
- data/lib/exner/rorschach_plugins/sczi.rb +25 -0
- data/lib/exner/rtf/rorschach.rb +69 -0
- data/lib/exner/rtf/zulliger.rb +59 -0
- data/lib/exner/rtf.rb +46 -0
- data/lib/exner/test_manchas.rb +445 -0
- data/lib/exner/zulliger.rb +26 -0
- data/lib/exner/zulliger_plugins/interpretacion.rb +328 -0
- data/lib/exner.rb +44 -0
- data/test/extras.rb +11 -0
- data/test/helpers_tests.rb +41 -0
- data/test/test_depi.rb +29 -0
- data/test/test_exner.rb +100 -0
- data/test/test_hvi.rb +33 -0
- data/test/test_obs.rb +29 -0
- data/test/test_rorschach.rb +1 -0
- data/test/test_scon.rb +34 -0
- data/test/test_sczi.rb +29 -0
- data/test/text_cdi.rb +28 -0
- data.tar.gz.sig +0 -0
- metadata +193 -0
- metadata.gz.sig +0 -0
@@ -0,0 +1,328 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Exner
|
3
|
+
class Zulliger
|
4
|
+
# calcula, para un determinado valor en los baremos
|
5
|
+
# el porcentaje que le corresponde al valor específico
|
6
|
+
# hace el ajuste en función al número de respuestas
|
7
|
+
def norma(valor)
|
8
|
+
r_est=11.92
|
9
|
+
return (valor*self.R) / r_est
|
10
|
+
end
|
11
|
+
def respuestatriple(valor,bajo,alto,resp_bajo,resp_alto,resp_normal)
|
12
|
+
if valor<bajo
|
13
|
+
return resp_bajo
|
14
|
+
elsif valor>alto
|
15
|
+
return resp_alto
|
16
|
+
else
|
17
|
+
return resp_normal
|
18
|
+
end
|
19
|
+
end
|
20
|
+
def interpretacion
|
21
|
+
salida=Array.new
|
22
|
+
# Lambda
|
23
|
+
salida.push('{\b Controles}')
|
24
|
+
if self.R < 8
|
25
|
+
salida.push('{\b ATENCION: POCAS RESPUESTAS. TEST INVALIDO}')
|
26
|
+
end
|
27
|
+
if self.L> 1.51
|
28
|
+
salida.push("L > 1.51. Si hay pocas respuestas complejas, es sobre simplificación de percepción. Si no, es defensivo")
|
29
|
+
elsif self.L<0.2
|
30
|
+
salida.push("L < 0.2. Muy pendientes de la información. Se sobrepasan por lo datos")
|
31
|
+
else
|
32
|
+
salida.push("L normal. Manejo normal de la cantidad de información")
|
33
|
+
end
|
34
|
+
# Tipo vivencial
|
35
|
+
|
36
|
+
if (sumdet("M").to_f-sumcolpond).abs <2
|
37
|
+
salida.push("Ambigual"+(sumdet("M").to_f-sumcolpond).abs.to_s+". No tiene un estilo definido. Duda mucho entre el pensar y el actuar y se desgantan")
|
38
|
+
elsif sumdet("M")>sumcolpond
|
39
|
+
salida.push("Intratensivo. Para solucionar sus problemas recurren a su mundo interno.")
|
40
|
+
elsif sumdet("M")<sumcolpond
|
41
|
+
salida.push("Extratensivo. Para solucionar sus problemas recurren al mundo externo")
|
42
|
+
end
|
43
|
+
|
44
|
+
# estimulacion sufrida (es)
|
45
|
+
|
46
|
+
if self.EA<2
|
47
|
+
salida.push("EA<2. Pocos recursos!")
|
48
|
+
elsif self.EA>7
|
49
|
+
salida.push("EA>7. Muchos recursos")
|
50
|
+
else
|
51
|
+
salida.push("EA normal. Recursos dentro de la norma")
|
52
|
+
end
|
53
|
+
if eb_izq>eb_der
|
54
|
+
salida.push("FM+m aumentado. Ideas sin que el sujeto se lo proponga. Sobrecarga interna.")
|
55
|
+
if sumdet("FM")>sumdet("m")
|
56
|
+
salida.push("FM>m. Malestar crónico por necesidades insatisfechas")
|
57
|
+
elsif sumdet("m")>sumdet("FM")
|
58
|
+
salida.push("m>FM. Malestar agudo, por estresante actual")
|
59
|
+
end
|
60
|
+
elsif eb_der>eb_izq
|
61
|
+
salida.push("C'+T+V+Y aumentados. Aumento del sufrimiento y del dolor psíquico causado por situaciones internas")
|
62
|
+
else
|
63
|
+
salida.push("Necesidades y sufrimientos en igual grado")
|
64
|
+
end
|
65
|
+
if sumdet("FM")>6
|
66
|
+
salida.push("FM>6. Necesidades insatisfechas de forma crónica")
|
67
|
+
end
|
68
|
+
if sumdet("m")>4
|
69
|
+
salida.push("m>4. Malestar por necesidades externas agudo aumentado")
|
70
|
+
end
|
71
|
+
|
72
|
+
if es>7
|
73
|
+
salida.push("es>7. Bastante estimulación sufrida.")
|
74
|
+
end
|
75
|
+
if self.EA*2<self.es
|
76
|
+
salida.push("EA<es*2: La persona mostrará dificultades para hacer frente a situaciones de tensión. Trabajará mejor en situaciones estructuradas")
|
77
|
+
end
|
78
|
+
|
79
|
+
salida.push('{\b Mediación}')
|
80
|
+
if xmas>=0.8
|
81
|
+
salida.push("X+%>0.80. Tiene los 'pies sobre la tierra'. Percibe los estímulos como la mayoría de la gente")
|
82
|
+
end
|
83
|
+
if wda>=0.8
|
84
|
+
salida.push("WDA+%>0.8. La percepción es adecuada en situaciones obvias")
|
85
|
+
if xa<0.8
|
86
|
+
salida.push("XA%<0.8. Pero no lo es en situaciones inusuales")
|
87
|
+
else
|
88
|
+
salida.push("XA%>0.8. Y en situaciones inusuales")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
if xmenos>0.25
|
92
|
+
salida.push("X-%>0.25. Preocupante alejamiento de lo convencional!")
|
93
|
+
end
|
94
|
+
if smenos>0.40
|
95
|
+
salida.push("S-%>0.40. Fuerte interferencia emocional en situaciones de rabia")
|
96
|
+
end
|
97
|
+
|
98
|
+
if @populares<2
|
99
|
+
salida.push("P<2. Tiene dificultades para percibir las normas sociales")
|
100
|
+
elsif @populares<5
|
101
|
+
salida.push("2<P<5. Puede percibir y acatar las normas sociales")
|
102
|
+
else
|
103
|
+
salida.push("P>=5. Sobresocializado. Demasiado atento a las normas sociales. sobresocializado")
|
104
|
+
end
|
105
|
+
|
106
|
+
salida.push('{\b Ideación}')
|
107
|
+
|
108
|
+
if pasivos>activos+1
|
109
|
+
salida.push("p>a+1. Persona que tiende a asumir un rol pasivo frente a los demás. Vigilar T, P, Ego disminuido y Fd")
|
110
|
+
|
111
|
+
salida.push("T>0.Pasivo por necesidad de afecto") if (sumdet('T')>0)
|
112
|
+
salida.push("P>4.Pasivo por Sobresocialización") if (@populares>4)
|
113
|
+
salida.push("Fd>0. Pasivo por dependencia") if (_c['Fd']>0)
|
114
|
+
else
|
115
|
+
salida.push("a+1>p. Persona adopta rol activo")
|
116
|
+
end
|
117
|
+
if _d['Mp']>_d['Ma']+1
|
118
|
+
salida.push("Mp>Ma+1. Crea fantasías, pero tiene dificultades para hacer deliberaciones eficaces. Ocupa su inteligencia para escapar de los problemas, no para afrontarlos")
|
119
|
+
end
|
120
|
+
if intelectualizacion>=5
|
121
|
+
salida.push("Intelectualización alta. Uso abusivo de la intelectualizacion")
|
122
|
+
end
|
123
|
+
if _ccee['MOR']>2
|
124
|
+
salida.push("MOR>2. Pesimismo")
|
125
|
+
end
|
126
|
+
if m_menos>1
|
127
|
+
salida.push("M->0. ALERTA. Mal signo. Sus recursos ideativos presentan alteraciones")
|
128
|
+
end
|
129
|
+
if self.SumBr6>=5
|
130
|
+
salida.push("SumBr6>5.Posible trastorno del pensamiento. INHIBICION DEL POTENCIAL")
|
131
|
+
end
|
132
|
+
if self.SumPon6>2
|
133
|
+
salida.push("SumPon6>2.Posible trastorno del pensamiento. INHIBICION DEL POTENCIAL")
|
134
|
+
end
|
135
|
+
if msin>0
|
136
|
+
salida.push("M sin >0. Es una persona que puede desorientarse y perder contacto con la realidad")
|
137
|
+
end
|
138
|
+
salida.push('{\b Afectos}')
|
139
|
+
if det['FC']<det['CF']+det['C']
|
140
|
+
salida.push("FC<CF+C. Vigilar poco control sobre descarga emocional")
|
141
|
+
salida.push("C>CF. Posible impulsividad!") if det['C']>det['CF']
|
142
|
+
end
|
143
|
+
if det['C']>0
|
144
|
+
salida.push("C>0. Persona que disfruta mucho de situaciones vertiginosas. ")
|
145
|
+
end
|
146
|
+
|
147
|
+
if sumdet("C'")>det['FC']*0.5+det['CF']+det['C']*1.5
|
148
|
+
salida.push("SumC':SumPondC hacia derecha. Se internaliza en demasía la descarga afectiva. Posible somatización")
|
149
|
+
end
|
150
|
+
if self.Afr<0.20
|
151
|
+
salida.push("Afr<0.2. Evitación de situaciones emocionales. Trabaja mejor en ambientes sin carga emocional")
|
152
|
+
elsif self.Afr>1
|
153
|
+
salida.push("Afr>1. Atracción por estimulación emocional. Trabaja mejor en ambientes cargados afectivamente.")
|
154
|
+
else
|
155
|
+
salida.push("Afr normal. Interés normal por estimulación emocional.")
|
156
|
+
end
|
157
|
+
|
158
|
+
if complj_r<0.2 and self.L<=1.51
|
159
|
+
salida.push("Compl/r dism y L normal. Tiende a simplificar las situaciones, aunque no de manera excesiva")
|
160
|
+
elsif complj_r<0.2 and self.L> 1.51
|
161
|
+
salida.push("Compl/r dism y L alto. Limitación de tipo intelectual o tendencia a simplificar demasiado la situación")
|
162
|
+
elsif complj_r>0.25 and self.EA>7
|
163
|
+
salida.push("Compl/r alta y muchos recursos. Buen signo. Tiene capacidad para considerar de manera integral los estímulos y buena capacidad para elaborarlos ")
|
164
|
+
elsif complj_r>0.25 and self.EA<2
|
165
|
+
salida.push("Compl/r alta y pocos recursos. Mal signo. Puede tener dificultad para controlar y puede desorganizarse")
|
166
|
+
else
|
167
|
+
salida.push("complejas normal. Capacidad normal para manejar de forma integral los estímulos")
|
168
|
+
end
|
169
|
+
|
170
|
+
if _l['S'].to_f/self.R>0.2
|
171
|
+
salida.push("S aumentado. Vigilar si es autonomía u oposicionismo")
|
172
|
+
end
|
173
|
+
#
|
174
|
+
# PROCESAMIENTO
|
175
|
+
#
|
176
|
+
|
177
|
+
salida.push('{\b Procesamiento}')
|
178
|
+
if self.Zf<5
|
179
|
+
salida.push("Zf dism. Sujeto con poca capacidad cognitiva o bajo nivel de motivación e inicitiva")
|
180
|
+
elsif self.Zf>9
|
181
|
+
salida.push("Zf alto. Alto nivel de motivación , que dedican al proceso de información más energía que el promedio")
|
182
|
+
else
|
183
|
+
salida.push("Zf normal. Motivación normal")
|
184
|
+
end
|
185
|
+
if _l['W'].to_f/self.R>0.50
|
186
|
+
salida.push("W aumentadas. Gran interés por tareas de análisis y por organizar los componentes del mundo interno en un todo significativo")
|
187
|
+
elsif _l['W'].to_f/self.R<0.15
|
188
|
+
salida.push("W disminuidas. Poco interés en tareas de análisis y dificultad para integrar los elementos de su mundo interno en un todo significativo. Revisar síntomas depresivos")
|
189
|
+
end
|
190
|
+
|
191
|
+
if _l['D'].to_f/self.R>0.70
|
192
|
+
salida.push("D aumentadas. Mucho apego a lo práctico")
|
193
|
+
elsif _l['D'].to_f/self.R<0.30
|
194
|
+
salida.push("D disminuidas. Pierde sentido de lo práctico. Vigilar W y Dd")
|
195
|
+
if _l['W'].to_f/self.R>0.50
|
196
|
+
salida.push("W aum. Pierde sentido de lo práctico por irse en la volada")
|
197
|
+
elsif _l['W'].to_f/self.R>0.50
|
198
|
+
salida.push("Dd aum . Pierde sentido de lo práctico por el detalle")
|
199
|
+
|
200
|
+
else
|
201
|
+
salida.push("Revisa bien los datos, que no pude cachar el mote")
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
if _l['Dd'].to_f/self.R>40
|
206
|
+
salida.push("Dd aumentadas. Muy apegado a la exactitud. temor a cometer equivocaciones. Personas inseguras que se van por las ramas")
|
207
|
+
elsif _l['Dd'].to_f/self.R<0.05
|
208
|
+
salida.push("Dd disminuidas. No muy preocupada por la exactitud")
|
209
|
+
end
|
210
|
+
|
211
|
+
rel_aspir=_l['W'].to_f/sumdet('M')
|
212
|
+
|
213
|
+
if (rel_aspir> 2.5)
|
214
|
+
salida.push("W*2>M ("+rel_aspir.to_s+"); Aspiraciones sobre los recursos. El sujeto se puede frustrar")
|
215
|
+
elsif (rel_aspir<1.5)
|
216
|
+
salida.push("W*2<M ("+rel_aspir.to_s+"); Aspiraciones bajo los recursos. Los gasta en fantasías, vigilar pasividad")
|
217
|
+
else
|
218
|
+
salida.push("W*2=M ("+rel_aspir.to_s+"); Aspiraciones adecuadas a los recursos")
|
219
|
+
end
|
220
|
+
rel_teor=_l['W'].to_f / _l['D'].to_f
|
221
|
+
if (rel_teor> 2.5)
|
222
|
+
salida.push("Teórico ("+rel_teor.to_s+")")
|
223
|
+
elsif (rel_teor<1.5)
|
224
|
+
salida.push("Práctico ("+rel_teor.to_s+")")
|
225
|
+
else
|
226
|
+
salida.push("Equilibrio Teórico práctico ("+rel_teor.to_s+")")
|
227
|
+
end
|
228
|
+
|
229
|
+
if zsum<15
|
230
|
+
salida.push("ZSum<15. Poca interés en integrar")
|
231
|
+
elsif zsum>32
|
232
|
+
salida.push("ZSum>32. Alto interés en integrar")
|
233
|
+
else
|
234
|
+
salida.push("ZSum normal. Interés normal en integrar estímulos")
|
235
|
+
end
|
236
|
+
#
|
237
|
+
# INTERPERSONAL
|
238
|
+
#
|
239
|
+
|
240
|
+
salida.push('{\b Interpersonal}')
|
241
|
+
if _ccee['COP']==0 and _ccee['AG']==0
|
242
|
+
salida.push("COP y AG=0. Poco interés en relaciones interpersonales")
|
243
|
+
end
|
244
|
+
salida.push("Fd>0. Rasgos incrementados de dependencia") if _c['Fd']>0
|
245
|
+
if aislamiento_r>0.45
|
246
|
+
salida.push("Aisl>0.45. Sujeto menos implicados que el resto en lo social")
|
247
|
+
else
|
248
|
+
salida.push("Aisl normal. Sujeto implicado en lo social")
|
249
|
+
end
|
250
|
+
|
251
|
+
# a (H+Dh:A+Ad)
|
252
|
+
salida.push("Lo que sigue, tómalo con andina")
|
253
|
+
hum=_c['H']+_c['Hd']
|
254
|
+
an=_c['A']+_c['Ad']
|
255
|
+
if an>hum*3
|
256
|
+
salida.push(sprintf("H+Dh:A+Ad hacia animal(%d:%d). Persona se está aislando. No tiene interés en otros",hum,an))
|
257
|
+
elsif an<hum*2
|
258
|
+
salida.push(sprintf("H+Dh:A+Ad hacia humano(%d:%d). Persona con interés exagerado por relacionarse",hum,an))
|
259
|
+
else
|
260
|
+
salida.push("H+Dh:A+Ad equilibrado. Persona con interés normal por relacionarse")
|
261
|
+
end
|
262
|
+
ent=_c['H']+_c['A']
|
263
|
+
par=_c['Hd']+_c['Ad']
|
264
|
+
if ent<par*2
|
265
|
+
salida.push(sprintf("H+A:Hd+Ad hacia parcial(%d:%d). Se relaciona con objetos parciales, disocia, escinde, se relaciona con partes del otro",ent,par))
|
266
|
+
else
|
267
|
+
salida.push(sprintf("H+A:Hd+Ad hacia total(%d:%d). Persona se relaciona con objetos totales",ent,par))
|
268
|
+
end
|
269
|
+
|
270
|
+
if (_c['H']+_c['Hd']) >= (_c['(H)']+_c['(Hd)'])*3
|
271
|
+
salida.push("H+Hd>(H)+(hd)*3: Se relaciona a nivel concreto")
|
272
|
+
salida.push("(H)+(Hd)=0. Puede que la persona no se deje tener ideales") if (_c['(H)']+_c['(Hd)'])==0
|
273
|
+
else
|
274
|
+
salida.push("H+Hd<(H)+(hd)*3: Se relaciona en la fantasía")
|
275
|
+
end
|
276
|
+
if porcentaje(_c['H']+_c['Hd'])>=0.2
|
277
|
+
salida.push("H+Hd>=20%. Capacidad e interés en relacionarse con otros")
|
278
|
+
else
|
279
|
+
salida.push("H+Hd<20%. Poca capacidad e interés en relacionarse con otros")
|
280
|
+
end
|
281
|
+
if (_c['Hd']+_c['(H)']+_c['(Hd)'])*3>_c['H']
|
282
|
+
salida.push("H<Hd+(H)+(Hd)*3: Problemas en interpersonal. Revisar protocolo para ver que pasa.")
|
283
|
+
salida.push("Puede que no sea válido, porque faltan humanos") if (_c['Hd']+_c['(H)']+_c['(Hd)']+_c['H'])<3
|
284
|
+
end
|
285
|
+
if _c['Hd']*3>_c['H']
|
286
|
+
salida.push("H<Hd*3: Angustia, depresión y fobia social. Aumenta si los Hd son perfiles de caras")
|
287
|
+
end
|
288
|
+
|
289
|
+
if a_porciento>0.47
|
290
|
+
salida.push("A% aumentado. Sujeto inmaduro, rutinario, predecible")
|
291
|
+
elsif a_porciento<0.31
|
292
|
+
salida.push("A% disminuido. Sujeto Flexible. Si es muy bajo, poco comprometido")
|
293
|
+
else
|
294
|
+
salida.push("A% normal. Buena adaptación social")
|
295
|
+
end
|
296
|
+
salida.push("Hasta aquí llega la andina con andina")
|
297
|
+
if _c['H']<1
|
298
|
+
salida.push("H=0;Presenta poco interés las personas")
|
299
|
+
elsif _c['H']>=1 and _c['H']<4
|
300
|
+
salida.push("H="+_c['H'].to_s+". Presenta un interés promedio en las personas")
|
301
|
+
else
|
302
|
+
salida.push("H>4. Presenta un interés sobre el promedio por las personas")
|
303
|
+
end
|
304
|
+
|
305
|
+
salida.push('{\b Autopercepción}')
|
306
|
+
if autocentracion<0.26
|
307
|
+
salida.push("ego<0.26. Tiene dificultades para tomarse a sí mismo como centro de interes")
|
308
|
+
elsif autocentracion>0.60
|
309
|
+
salida.push("ego>0.60. Sujeto tiende a tomarse como centro de sus preocupaciones. Privilegia mucho su propio punto de vista. Le cuesta ser flexibles")
|
310
|
+
else
|
311
|
+
salida.push("ego normal. Capacidad normal para ser el eje de su propia atención")
|
312
|
+
end
|
313
|
+
salida.push("V>1. Sujeto con instrospección dolorosa") if sumdet('V')>1
|
314
|
+
salida.push("FD>2. Demasiada atención a autoevaluación") if _d['FD']>2
|
315
|
+
salida.push("Xy+An>2. Si no hay problemas físicos, trastornos de autoimagen") if an_xy>2
|
316
|
+
salida.push("MOR>2. Pesimismo") if _ccee['MOR']>2
|
317
|
+
if _c['H']>_c['(H)']+_c['Hd']+_c['(Hd)']
|
318
|
+
salida.push("H>(H)+Hd+(Hd). Percepción realista de sí mismo")
|
319
|
+
else
|
320
|
+
salida.push("H<(H)+Hd+(Hd). Percepción no realista de sí mismo")
|
321
|
+
end
|
322
|
+
#salida.collect {|a|
|
323
|
+
# Iconv.conv('ISO-8859-1','UTF-8',a)
|
324
|
+
#}
|
325
|
+
salida
|
326
|
+
end
|
327
|
+
end
|
328
|
+
end
|
data/lib/exner.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# -encoding: UTF-8
|
2
|
+
|
3
|
+
|
4
|
+
require 'exner/test_manchas.rb'
|
5
|
+
require 'exner/respuesta.rb'
|
6
|
+
require 'exner/rtf'
|
7
|
+
# Clase que almacena información sobre una respuesta a una lámina
|
8
|
+
module Exner
|
9
|
+
VERSION="1.0.0"
|
10
|
+
# De números arábigos a romanos
|
11
|
+
ROMANOS={1=>'I',2=>'II', 3=>'III',4=>'IV',5=>'V', 6=>'VI',7=>'VII',8=>'VIII',9=>'IX',10=>'X'}
|
12
|
+
# Localizaciones válidas
|
13
|
+
LOC_VALIDAS=['W','D','Dd','WS','DS','DdS']
|
14
|
+
DQ_VALIDAS=['+','o','v','v/+']
|
15
|
+
DET_VALIDOS=['F','Ma','FMa', 'ma','Mp','FMp', 'mp', 'C', 'CF', 'FC', 'C', 'Cn', "C'", "C'F", "FC'", "T","TF", "FT","V", "VF","FV", "Y", "YF","FY","FD","rF","Fr"]
|
16
|
+
CONT_VALIDOS=['H','(H)','Hd','(Hd)','Hx','A','(A)','Ad', '(Ad)', 'An', 'Art','Ay','Bl','Bt','Cg','Cl','Ex','Fd','Fi', 'Ge','Hh', 'Ls', 'Na','Sc','Sx','Xy','Id']
|
17
|
+
CCEE_VALIDOS=['DV1','DV2','DR1','DR2','INCOM1','INCOM2','FABCOM1', 'FABCOM2','CONTAM', 'ALOG','PSVi','PSVc','PSVm','CONFAB','AG','COP', 'MOR','AB','PER','CP']
|
18
|
+
CCEE_IDEACION={'DV1'=>1,'DV2'=>2,'INCOM1'=>2,'INCOM2'=>4,'DR1'=>3,'DR2'=>6, 'FABCOM1'=>4, 'FABCOM2'=>7, 'ALOG'=>5, 'CONTAM'=>7}
|
19
|
+
FQ_VALIDAS= ['+','o','u','-','sin']
|
20
|
+
# Abre un archivo zest y devuelve un hash con los valores correspondientes.
|
21
|
+
def self.open_zest(file)
|
22
|
+
aEst=Hash.new
|
23
|
+
File.open(file,'r') { |aFile|
|
24
|
+
aFile.each_line {|line|
|
25
|
+
if line =~ /(\d+)\s+(\d+\.\d+)/
|
26
|
+
aEst[$1.to_i]=$2.to_f
|
27
|
+
end
|
28
|
+
}
|
29
|
+
}
|
30
|
+
aEst
|
31
|
+
end
|
32
|
+
def self.a_romano(i)
|
33
|
+
i.kind_of?(Integer) ? ROMANOS[i] : false
|
34
|
+
end
|
35
|
+
def self.de_romano(s)
|
36
|
+
ROMANOS.has_value?(s) ? ROMANOS.key(s):false
|
37
|
+
end
|
38
|
+
def self.dir_root()
|
39
|
+
File.dirname(__FILE__)
|
40
|
+
end
|
41
|
+
def self.dir_data
|
42
|
+
File.dirname(__FILE__)+"/../data/"
|
43
|
+
end
|
44
|
+
end
|
data/test/extras.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+'/../lib/'))
|
2
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+'/'))
|
3
|
+
|
4
|
+
require 'minitest/unit'
|
5
|
+
require 'tempfile'
|
6
|
+
require 'tmpdir'
|
7
|
+
require 'shoulda'
|
8
|
+
require 'exner'
|
9
|
+
|
10
|
+
|
11
|
+
module MiniTest
|
12
|
+
class Unit
|
13
|
+
class TestCase
|
14
|
+
include Shoulda::InstanceMethods
|
15
|
+
extend Shoulda::ClassMethods
|
16
|
+
include Shoulda::Assertions
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module Assertions
|
21
|
+
alias :assert_raise :assert_raises unless method_defined? :assert_raise
|
22
|
+
alias :assert_not_equal :refute_equal unless method_defined? :assert_not_equal
|
23
|
+
alias :assert_not_same :refute_same unless method_defined? :assert_not_same
|
24
|
+
unless method_defined? :assert_nothing_raised
|
25
|
+
def assert_nothing_raised(msg=nil)
|
26
|
+
msg||="Nothing should be raised, but raised %s"
|
27
|
+
begin
|
28
|
+
yield
|
29
|
+
not_raised=true
|
30
|
+
rescue Exception => e
|
31
|
+
not_raised=false
|
32
|
+
msg=sprintf(msg,e)
|
33
|
+
end
|
34
|
+
assert(not_raised,msg)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
MiniTest::Unit.autorun
|
41
|
+
|
data/test/test_depi.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
|
+
|
3
|
+
class TC_ExnerDepi < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a= Exner::Rorschach.new
|
6
|
+
@a.open_file(Exner.dir_data+'/test_manchas.txt')
|
7
|
+
@a.procesar
|
8
|
+
@lista=@a.depi(true)
|
9
|
+
@p=@a.depi
|
10
|
+
end
|
11
|
+
def teardown
|
12
|
+
end
|
13
|
+
def test_numero
|
14
|
+
assert(@p==2)
|
15
|
+
end
|
16
|
+
def test_lista
|
17
|
+
{1=>false,
|
18
|
+
2=>false,
|
19
|
+
3=>false,
|
20
|
+
4=>true,
|
21
|
+
5=>false,
|
22
|
+
6=>false,
|
23
|
+
7=>true
|
24
|
+
}.each {|k,v|
|
25
|
+
assert_equal(v,@lista[k],k)
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
data/test/test_exner.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
|
+
|
3
|
+
class TC_ExnerTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a= Exner::Rorschach.new
|
6
|
+
@a.open_file(Exner.dir_data+'/test_manchas.txt')
|
7
|
+
@a.procesar
|
8
|
+
end
|
9
|
+
def teardown
|
10
|
+
end
|
11
|
+
def test_localizacion
|
12
|
+
assert_equal(9,@a.zf)
|
13
|
+
assert_equal(26,@a.zsum)
|
14
|
+
assert_equal(27.5,@a.zest)
|
15
|
+
assert_equal({'W'=>3,'Wv'=>0,'D'=>9,'Dd'=>4,'S'=>1},@a.localizaciones)
|
16
|
+
assert_equal({'+'=>5,'o'=>10,'v/+'=>1,'v'=>0},@a.frecuencias['dq'])
|
17
|
+
end
|
18
|
+
def test_determinantes_complejos
|
19
|
+
assert(@a.complejos.size == 4)
|
20
|
+
assert_equal(24,@a.determinantes_simples.size)
|
21
|
+
{'M'=>5,'FM'=>3,'m'=>1,'FC'=>1,'CF'=>2,'C'=>0,'Cn'=>0, "FC'"=>0,"C'F"=>0,"C'"=>0, 'FT'=>0,'TF'=>0, 'T'=>0, 'FV'=>0, 'VF'=>0, 'V'=>0, 'FY'=>4,'YF'=>0,'Y'=>0,'Fr'=>0,'rF'=>0,'FD'=>0,'F'=>4,'(2)'=>6}. each {|k,v|
|
22
|
+
assert_equal(v, @a.determinantes_simples[k],"Clave:"+k)
|
23
|
+
}
|
24
|
+
end
|
25
|
+
def test_controles
|
26
|
+
assert_equal(16,@a.R)
|
27
|
+
assert_equal(1.to_f/3 , @a.L)
|
28
|
+
|
29
|
+
assert_equal('5:2.5',@a.EB)
|
30
|
+
assert_equal('4:4',@a.eb)
|
31
|
+
assert_equal(7.5,@a.EA)
|
32
|
+
assert_equal(8,@a.es)
|
33
|
+
assert_equal(5,@a.Adjes)
|
34
|
+
assert(!@a.EBPer)
|
35
|
+
assert_equal(0,@a.D)
|
36
|
+
assert_equal(0,@a.AdjD)
|
37
|
+
assert_equal(3,@a.sumdet('FM'))
|
38
|
+
assert_equal(1,@a.sumdet('m'))
|
39
|
+
assert_equal(0,@a.sumdet("C'"))
|
40
|
+
assert_equal(0,@a.sumdet('V'))
|
41
|
+
assert_equal(0,@a.sumdet('T'))
|
42
|
+
assert_equal(4,@a.sumdet('Y'))
|
43
|
+
|
44
|
+
end
|
45
|
+
def test_afectos
|
46
|
+
assert_equal('1:2',@a.fc_cf_c)
|
47
|
+
assert_equal('0:2.5',@a.sumc_wsumc)
|
48
|
+
assert_equal(5.to_f/11,@a.Afr)
|
49
|
+
assert_equal(1,@a.localizaciones['S'])
|
50
|
+
assert_equal(0.25,@a.complj_r)
|
51
|
+
assert_equal(0,@a.CP)
|
52
|
+
end
|
53
|
+
def test_interpersonal
|
54
|
+
assert_equal(3,@a.COP)
|
55
|
+
assert_equal(0,@a.AG)
|
56
|
+
assert_equal(0,@a.Fd)
|
57
|
+
assert_equal(0.25,@a.aislamiento_r)
|
58
|
+
assert_equal('3:4',@a.h_h_hd_hd)
|
59
|
+
assert_equal('3:1',@a.p_h_hd_p_a_ad)
|
60
|
+
assert_equal('8:1',@a.h_a_hd_ad)
|
61
|
+
assert_equal(5.to_f/16,@a.a_porciento)
|
62
|
+
end
|
63
|
+
def test_ideacion
|
64
|
+
assert_equal('7:2',@a.a_p)
|
65
|
+
assert_equal('4:1',@a.Ma_Mp)
|
66
|
+
assert_equal(1,@a.intelectualizacion)
|
67
|
+
assert_equal(0,@a.m_menos)
|
68
|
+
assert_equal(3,@a.SumBr6)
|
69
|
+
assert_equal(2,@a.nvl2)
|
70
|
+
assert_equal(15,@a.SumPon6)
|
71
|
+
# assert_equal(0,@a.mqsin)
|
72
|
+
end
|
73
|
+
def test_mediacion
|
74
|
+
assert_equal(5,@a.P)
|
75
|
+
assert_equal(10.to_f/16,@a.xmas)
|
76
|
+
assert_equal(2.to_f/4,@a.fmas)
|
77
|
+
assert_equal(2.to_f/16,@a.xmenos)
|
78
|
+
assert_equal(0,@a.smenos)
|
79
|
+
assert_equal(4.to_f/16,@a.xu)
|
80
|
+
assert_equal(14.to_f/16,@a.xa)
|
81
|
+
assert_equal(11.to_f/12,@a.wda)
|
82
|
+
end
|
83
|
+
def test_procesamiento
|
84
|
+
assert_equal(9,@a.Zf)
|
85
|
+
assert_equal(-1.5,@a.Zd)
|
86
|
+
assert_equal('3:9:4',@a.w_d_dd)
|
87
|
+
assert_equal('3:5',@a.w_m)
|
88
|
+
assert_equal(5,@a.dqmas)
|
89
|
+
assert_equal(0,@a.dqv)
|
90
|
+
|
91
|
+
end
|
92
|
+
def test_autopercepcion
|
93
|
+
assert_equal(0.375,@a.autocentracion)
|
94
|
+
assert_equal(0,@a.fr_rf)
|
95
|
+
assert_equal(0,@a.FD)
|
96
|
+
assert_equal(2,@a.an_xy)
|
97
|
+
assert_equal(0,@a.mor)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
data/test/test_hvi.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
class TC_ExnerHvi < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@a= Exner::Rorschach.new
|
8
|
+
@a.open_file(Exner.dir_data+'/test_manchas.txt')
|
9
|
+
@a.procesar
|
10
|
+
@lista=@a.hvi(true)
|
11
|
+
@p=@a.hvi
|
12
|
+
end
|
13
|
+
def test_numero
|
14
|
+
assert(@p==3)
|
15
|
+
end
|
16
|
+
def test_lista
|
17
|
+
{1=>true,
|
18
|
+
2=>false,
|
19
|
+
3=>false,
|
20
|
+
4=>false,
|
21
|
+
5=>true,
|
22
|
+
6=>true,
|
23
|
+
7=>false,
|
24
|
+
8=>false
|
25
|
+
}.each {|k,v|
|
26
|
+
assert_equal(v,@lista[k],k)
|
27
|
+
}
|
28
|
+
end
|
29
|
+
def test_si
|
30
|
+
assert(!@a.hvi_si)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
data/test/test_obs.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
|
+
|
3
|
+
|
4
|
+
class TC_ExnerObs < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@a= Exner::Rorschach.new
|
7
|
+
@a.open_file(Exner.dir_data+'/test_manchas.txt')
|
8
|
+
@a.procesar
|
9
|
+
@lista=@a.obs(true)
|
10
|
+
@p=@a.obs
|
11
|
+
end
|
12
|
+
def test_numero
|
13
|
+
assert(@p==1)
|
14
|
+
end
|
15
|
+
def test_lista
|
16
|
+
{1=>true,
|
17
|
+
2=>false,
|
18
|
+
3=>false,
|
19
|
+
4=>false,
|
20
|
+
5=>false
|
21
|
+
}.each {|k,v|
|
22
|
+
assert_equal(v,@lista[k],k)
|
23
|
+
}
|
24
|
+
end
|
25
|
+
def test_si
|
26
|
+
assert(!@a.obs_si)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
data/test/test_scon.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
|
+
|
3
|
+
|
4
|
+
class TC_ExnerScon < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@a= Exner::Rorschach.new
|
7
|
+
@a.open_file(Exner.dir_data+'/test_manchas.txt')
|
8
|
+
@a.procesar
|
9
|
+
@lista=@a.scon(true)
|
10
|
+
@p=@a.scon
|
11
|
+
end
|
12
|
+
def teardown
|
13
|
+
end
|
14
|
+
def test_numero
|
15
|
+
assert(@p==4)
|
16
|
+
end
|
17
|
+
def test_lista
|
18
|
+
{1=>false,
|
19
|
+
2=>false,
|
20
|
+
3=>false,
|
21
|
+
4=>false,
|
22
|
+
5=>false,
|
23
|
+
6=>true,
|
24
|
+
7=>true,
|
25
|
+
8=>true,
|
26
|
+
9=>false,
|
27
|
+
10=>false,
|
28
|
+
11=>false,
|
29
|
+
12=>true
|
30
|
+
}.each {|k,v|
|
31
|
+
assert_equal(v,@lista[k],k)
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
data/test/test_sczi.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
|
+
|
3
|
+
|
4
|
+
class TC_ExnerSczi < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@a= Exner::Rorschach.new
|
7
|
+
@a.open_file(Exner.dir_data+'/test_manchas.txt')
|
8
|
+
@a.procesar
|
9
|
+
@lista=@a.sczi(true)
|
10
|
+
@p=@a.sczi
|
11
|
+
end
|
12
|
+
def teardown
|
13
|
+
end
|
14
|
+
def test_numero
|
15
|
+
assert(@p==1)
|
16
|
+
end
|
17
|
+
def test_lista
|
18
|
+
{1=>false,
|
19
|
+
2=>false,
|
20
|
+
3=>false,
|
21
|
+
4=>true,
|
22
|
+
5=>false,
|
23
|
+
6=>false
|
24
|
+
}.each {|k,v|
|
25
|
+
assert_equal(v,@lista[k],k)
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|