exner 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. data/.autotest +23 -0
  2. data/.gemtest +0 -0
  3. data/History.txt +4 -0
  4. data/Manifest.txt +42 -0
  5. data/README.txt +49 -0
  6. data/Rakefile +19 -0
  7. data/bin/rorschach +4 -0
  8. data/bin/zulliger +4 -0
  9. data/data/.~lock.sumario_Zulliger.rtf# +1 -0
  10. data/data/Rorschach_Zest.txt +50 -0
  11. data/data/Zulliger_Zest.txt +50 -0
  12. data/data/sumario.rtf +240 -0
  13. data/data/sumario2.rtf +271 -0
  14. data/data/sumario_Rorschach.rtf +233 -0
  15. data/data/sumario_Zulliger.rtf +203 -0
  16. data/data/test_manchas.txt +16 -0
  17. data/data/zulli_test.txt +11 -0
  18. data/lib/exner/respuesta.rb +110 -0
  19. data/lib/exner/rorschach.rb +11 -0
  20. data/lib/exner/rorschach_plugins/cdi.rb +22 -0
  21. data/lib/exner/rorschach_plugins/depi.rb +38 -0
  22. data/lib/exner/rorschach_plugins/hvi.rb +25 -0
  23. data/lib/exner/rorschach_plugins/interpretacion.rb +438 -0
  24. data/lib/exner/rorschach_plugins/obs.rb +36 -0
  25. data/lib/exner/rorschach_plugins/scon.rb +44 -0
  26. data/lib/exner/rorschach_plugins/sczi.rb +25 -0
  27. data/lib/exner/rtf/rorschach.rb +69 -0
  28. data/lib/exner/rtf/zulliger.rb +59 -0
  29. data/lib/exner/rtf.rb +46 -0
  30. data/lib/exner/test_manchas.rb +445 -0
  31. data/lib/exner/zulliger.rb +26 -0
  32. data/lib/exner/zulliger_plugins/interpretacion.rb +328 -0
  33. data/lib/exner.rb +44 -0
  34. data/test/extras.rb +11 -0
  35. data/test/helpers_tests.rb +41 -0
  36. data/test/test_depi.rb +29 -0
  37. data/test/test_exner.rb +100 -0
  38. data/test/test_hvi.rb +33 -0
  39. data/test/test_obs.rb +29 -0
  40. data/test/test_rorschach.rb +1 -0
  41. data/test/test_scon.rb +34 -0
  42. data/test/test_sczi.rb +29 -0
  43. data/test/text_cdi.rb +28 -0
  44. data.tar.gz.sig +0 -0
  45. metadata +193 -0
  46. 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,11 @@
1
+ require 'TestManchas'
2
+ require 'test/unit/ui/console/testrunner'
3
+ class TC_ExnerTest < Test::Unit::TestCase
4
+ def setup
5
+ @a= Exner::Rorschach.new
6
+ @a.open_file('test_manchas.txt')
7
+ @a.procesar
8
+ end
9
+ def teardown
10
+ end
11
+ end
@@ -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
+
@@ -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
+