exner 1.0.0

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