examenJoaquinAngelica 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +16 -0
  6. data/Gemfile +5 -0
  7. data/Guardfile +30 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +20 -0
  10. data/Rakefile +5 -0
  11. data/doc/Examen.html +129 -0
  12. data/doc/Examen/EleccionSimple.html +163 -0
  13. data/doc/Examen/Exam.html +363 -0
  14. data/doc/Examen/Examen.html +163 -0
  15. data/doc/Examen/Interfaz.html +359 -0
  16. data/doc/Examen/Pregunta.html +385 -0
  17. data/doc/Examen/Verdaderofalso.html +161 -0
  18. data/doc/Gemfile.html +100 -0
  19. data/doc/Gemfile_lock.html +190 -0
  20. data/doc/Guardfile.html +121 -0
  21. data/doc/LICENSE_txt.html +116 -0
  22. data/doc/Lista.html +527 -0
  23. data/doc/Object.html +130 -0
  24. data/doc/README_md.html +112 -0
  25. data/doc/Rakefile.html +99 -0
  26. data/doc/created.rid +19 -0
  27. data/doc/examen_gemspec.html +134 -0
  28. data/doc/fonts.css +167 -0
  29. data/doc/fonts/Lato-Light.ttf +0 -0
  30. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  31. data/doc/fonts/Lato-Regular.ttf +0 -0
  32. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  33. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  34. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  35. data/doc/images/add.png +0 -0
  36. data/doc/images/arrow_up.png +0 -0
  37. data/doc/images/brick.png +0 -0
  38. data/doc/images/brick_link.png +0 -0
  39. data/doc/images/bug.png +0 -0
  40. data/doc/images/bullet_black.png +0 -0
  41. data/doc/images/bullet_toggle_minus.png +0 -0
  42. data/doc/images/bullet_toggle_plus.png +0 -0
  43. data/doc/images/date.png +0 -0
  44. data/doc/images/delete.png +0 -0
  45. data/doc/images/find.png +0 -0
  46. data/doc/images/loadingAnimation.gif +0 -0
  47. data/doc/images/macFFBgHack.png +0 -0
  48. data/doc/images/package.png +0 -0
  49. data/doc/images/page_green.png +0 -0
  50. data/doc/images/page_white_text.png +0 -0
  51. data/doc/images/page_white_width.png +0 -0
  52. data/doc/images/plugin.png +0 -0
  53. data/doc/images/ruby.png +0 -0
  54. data/doc/images/tag_blue.png +0 -0
  55. data/doc/images/tag_green.png +0 -0
  56. data/doc/images/transparent.png +0 -0
  57. data/doc/images/wrench.png +0 -0
  58. data/doc/images/wrench_orange.png +0 -0
  59. data/doc/images/zoom.png +0 -0
  60. data/doc/index.html +118 -0
  61. data/doc/js/darkfish.js +140 -0
  62. data/doc/js/jquery.js +4 -0
  63. data/doc/js/navigation.js +142 -0
  64. data/doc/js/search.js +109 -0
  65. data/doc/js/search_index.js +1 -0
  66. data/doc/js/searcher.js +228 -0
  67. data/doc/rdoc.css +580 -0
  68. data/doc/table_of_contents.html +238 -0
  69. data/examen.gemspec +40 -0
  70. data/lib/examen.rb +13 -0
  71. data/lib/examen/eleccionsimple.rb +16 -0
  72. data/lib/examen/exam.rb +109 -0
  73. data/lib/examen/examen.rb +17 -0
  74. data/lib/examen/interfaz.rb +45 -0
  75. data/lib/examen/lista.rb +92 -0
  76. data/lib/examen/pregunta.rb +53 -0
  77. data/lib/examen/verdaderofalso.rb +13 -0
  78. data/lib/examen/version.rb +3 -0
  79. data/spec/examen_spec.rb +624 -0
  80. data/spec/spec_helper.rb +32 -0
  81. metadata +280 -0
@@ -0,0 +1,92 @@
1
+ #===Class Lista
2
+ #*Metodo initialize
3
+ #*Metodo push
4
+ #*Metodo pushf
5
+ #*Metodo pop
6
+ #*Metodo ext
7
+ #*Metodo extfin
8
+ #*Metodo inicio
9
+ #*Metodo fin
10
+ #*Metodo respuesta
11
+ #*Metodo each
12
+ include Enumerable
13
+ Nodo =Struct.new(:value, :next, :prev)
14
+ class Lista
15
+ Nodo =Struct.new(:value, :next, :prev)
16
+ include Enumerable
17
+
18
+ def initialize(nodo)
19
+ @inicio=Nodo.new(nil)
20
+ @fin=Nodo.new(nil)
21
+ @fin=@inicio
22
+ end
23
+
24
+
25
+ def push(nodo) #poner if preguntar Nodo vacio
26
+
27
+ nodo.next =@inicio
28
+ @inicio.prev=nodo
29
+ @inicio=nodo
30
+
31
+ end
32
+
33
+
34
+
35
+
36
+ def pushf(nodo) #poner if preguntar Nodo vacio
37
+
38
+ @inicio=nodo
39
+ @fin=nodo
40
+
41
+
42
+
43
+ end
44
+
45
+
46
+
47
+ def pop(nodo)
48
+ @inicio=@inicio.next
49
+ #@inicio.prev=nil
50
+ end
51
+
52
+ def ext
53
+ aux=@inicio
54
+ @inicio=@inicio.next
55
+ aux.value
56
+ end
57
+
58
+ def extfin
59
+ aux=@fin
60
+ @fin=@fin.prev
61
+ aux.value
62
+ end
63
+
64
+
65
+ def inicio
66
+
67
+ @inicio
68
+ end
69
+
70
+ def fin
71
+
72
+ @fin
73
+ end
74
+
75
+
76
+ def respuesta
77
+ @respuesta
78
+ end
79
+
80
+
81
+ def each(&block)
82
+ tempo = @inicio
83
+ while tempo != nil
84
+ block.call(tempo)
85
+ #yield tempo.value
86
+ tempo=tempo.next
87
+ end
88
+ end
89
+
90
+
91
+ end
92
+
@@ -0,0 +1,53 @@
1
+ #===Class Pregunta
2
+ #*Metodo initialize
3
+ #*Metodo extresp
4
+ #*Metodo to_s
5
+ #*Metodo preg
6
+ #*Metodo <=>
7
+ require 'pry'
8
+ module Examen
9
+
10
+ class Pregunta #< Struct.new("Pregunta", :enunciado , :respuesta, :falsas)
11
+ #use a class to define behavior, together with a Struct that defines the data to which the class should be initialized.
12
+ #----------------------------------------------------------
13
+ #----------------------------------------------------------
14
+ #Mas general una clase pregunta y que eleccion simple y verdader falso hereden de ella, en pregunta instancear variable 'ponderacion'
15
+ #que permita comprar el nivel de dificultad entre dos preguntas distintas
16
+ #----------------------------------------------------------
17
+ #----------------------------------------------------------
18
+
19
+ attr_reader :valor, :enunciado, :respuesta,:falsas
20
+ include Comparable
21
+ def initialize(arg)
22
+ @valor=arg[:valor]
23
+ @enunciado=arg[:enunciado]
24
+ @respuesta=arg[:respuesta]
25
+ @falsas=arg[:falsas]
26
+ end
27
+
28
+
29
+ def extresp
30
+
31
+ "RESPUESTAS : #{@respuesta}, #{@falsas}"
32
+
33
+ end
34
+
35
+ def to_s
36
+ preg + extresp
37
+ end
38
+
39
+
40
+ def preg
41
+ "PREGUNTA : #{@enunciado}"
42
+ end
43
+
44
+ def <=> other
45
+ #return nil unless other.is_a? Examen
46
+ self.valor <=> other.valor
47
+ end
48
+
49
+
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,13 @@
1
+ #===Class Verdaderofalso
2
+ #*Metodo initialize
3
+ module Examen
4
+ class Verdaderofalso < Pregunta
5
+
6
+ def initialize arg
7
+ super(arg)
8
+ end
9
+
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+ module Examen
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,624 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'spec_helper'
5
+ require 'examen'
6
+
7
+ module Examen
8
+ class Pregunta
9
+ describe Examen::Pregunta do
10
+
11
+ before :each do
12
+
13
+
14
+ @p=EleccionSimple.new({:enunciado => "¿Esto es una pregunta?", :respuesta => "si", :falsas => ["No",0,"Tal vez"]})
15
+
16
+ end
17
+
18
+ context "Eleccion Simple" do
19
+
20
+
21
+ it "Debe existir una pregunta " do
22
+ expect(@p.enunciado).to eq("¿Esto es una pregunta?")
23
+ expect(@p.respuesta)=='si'
24
+ expect(@p.falsas)==['No',0,'Tal vez']
25
+
26
+ end
27
+
28
+ it "Debe existir un metodo para obtener la pregunta " do
29
+ expect(@p.preg).to eq("PREGUNTA : ¿Esto es una pregunta?")
30
+ end
31
+
32
+ it "Deben existir opciones de respuesta " do
33
+ expect(@p.respuesta) != nil
34
+ expect(@p.falsas) !=[nil]
35
+
36
+ end
37
+
38
+ it "Se debe invocar a un metodo para obtener las opciones de respuesta" do
39
+ expect(@p.extresp).to eq("RESPUESTAS : si, [\"No\", 0, \"Tal vez\"]")
40
+
41
+
42
+ end
43
+
44
+ it "Se deben mostrar por la consola la pregunta y las opciones de respuesta" do
45
+ expect(@p.to_s).to eq("PREGUNTA : ¿Esto es una pregunta?RESPUESTAS : si, [\"No\", 0, \"Tal vez\"]")
46
+ end
47
+
48
+
49
+ it "Prueba de preguntas" do
50
+ #creo las preguntas
51
+ @p1=EleccionSimple.new(:enunciado =>"¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots",:respuesta =>"nil",:falsas => ["#<Xyz:0xa000208>",0,"Ninguna de las anteriores"])
52
+ @p2=EleccionSimple.new(:enunciado =>"¿La siguiente definicion de un hash en ruby es valida?",:respuesta => "verdadero" ,:falsas => "falso")
53
+ @p3=EleccionSimple.new(:enunciado =>"¿Cual es la siguiente salida del codigo en ruby?",:respuesta =>1,:falsas => ["bob","HEY","Ninguna"])
54
+ @p4=EleccionSimple.new(:enunciado =>"¿Cual es el tipo de objeto en el siguiente codigo en ruby?",:respuesta => "una instancia de la clase Class",:falsas => ["una constante","un objeto","Ninguna"])
55
+ @p5=EleccionSimple.new(:enunciado =>"¿Es apropiado que una clase tablero herede de una clase juego?",:respuesta =>"verdadero" , :falsas =>"falso")
56
+
57
+ #crear nodos
58
+
59
+ @nodo1=Nodo.new(@p1)
60
+ @nodo2=Nodo.new(@p2)
61
+ @nodo3=Nodo.new(@p3)
62
+ @nodo4=Nodo.new(@p4)
63
+ @nodo5=Nodo.new(@p5)
64
+
65
+ #se crea la lista
66
+
67
+ @lista=Lista.new(0)
68
+ @lista.push(@nodo1)
69
+ @lista.push(@nodo2)
70
+ @lista.push(@nodo3)
71
+ @lista.push(@nodo4)
72
+ @lista.push(@nodo5)
73
+
74
+
75
+ end#cierro it
76
+
77
+
78
+
79
+ end#cierro context
80
+
81
+
82
+ end#cierro describe
83
+
84
+
85
+
86
+
87
+ describe Examen do
88
+ before :all do
89
+ @lista = Lista.new(0)
90
+ @n1 = Nodo.new("Nodo 1")
91
+ @n2 = Nodo.new("Nodo 2")
92
+ end
93
+
94
+ it "Se deben insertar nodos en la lista." do
95
+ @lista.push(@n1)
96
+ expect(@lista.inicio).to eq(@n1)
97
+ end
98
+
99
+ it "Se insertan varios elementos." do
100
+ @lista.push(@n1)
101
+ @lista.push(@n2)
102
+ expect(@lista.inicio).to eq(@n2)
103
+ @lista.ext
104
+ expect(@lista.inicio).to eq(@n1)
105
+ end
106
+
107
+ it "Se extrae el primer elemento de la lista." do
108
+ @lista.push(@n1)
109
+ @lista.push(@n2)
110
+ @lista.ext
111
+ expect(@lista.inicio).to eq(@n1)
112
+ end
113
+
114
+ end
115
+
116
+
117
+ describe Examen do
118
+ before :all do
119
+ @examen = Lista.new(0)
120
+ @p1=EleccionSimple.new(:enunciado => "¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots",:respuesta =>"nil",:falsas => ["#<Xyz:0xa000208>",0,"Ninguna de las anteriores"])
121
+ @p2=EleccionSimple.new(:enunciado =>"¿La siguiente definicion de un hash en ruby es valida?",:respuesta => "verdadero" ,:falsas => "falso")
122
+ @p3=EleccionSimple.new(:enunciado =>"¿Cual es la siguiente salida del codigo en ruby?",:respuesta =>1,:falsas => ["bob","HEY","Ninguna"])
123
+ @p4=EleccionSimple.new(:enunciado =>"¿Cual es el tipo de objeto en el siguiente codigo en ruby?",:respuesta => "una instancia de la clase Class",:falsas => ["una constante","un objeto","Ninguna"])
124
+ @p5=EleccionSimple.new(:enunciado =>"¿Es apropiado que una clase tablero herede de una clase juego?",:respuesta =>"verdadero" , :falsas =>"falso")
125
+
126
+ end
127
+
128
+ it "Se deben insertar una pregunta en el examen." do
129
+ @nodo1=Nodo.new(@p1)
130
+ @examen.push(@nodo1)
131
+ expect(@examen.inicio).to eq(@nodo1)
132
+ end
133
+
134
+ it "Se insertan varios elementos." do
135
+ @nodo1=Nodo.new(@p1)
136
+ @nodo2=Nodo.new(@p2)
137
+ @nodo3=Nodo.new(@p3)
138
+ @nodo4=Nodo.new(@p4)
139
+ @nodo5=Nodo.new(@p5)
140
+ @examen.push(@nodo1)
141
+ @examen.push(@nodo2)
142
+ @examen.push(@nodo3)
143
+ @examen.push(@nodo4)
144
+ @examen.push(@nodo5)
145
+ expect(@examen.inicio).to eq(@nodo5)
146
+ @examen.ext
147
+ expect(@examen.inicio).to eq(@nodo4)
148
+ @examen.ext
149
+ expect(@examen.inicio).to eq(@nodo3)
150
+ @examen.ext
151
+ expect(@examen.inicio).to eq(@nodo2)
152
+ @examen.ext
153
+ expect(@examen.inicio).to eq(@nodo1)
154
+ end
155
+
156
+ it "Se extrae el primer elemento del examen." do
157
+ @nodo1=Nodo.new(@p1)
158
+ @nodo2=Nodo.new(@p2)
159
+ @nodo3=Nodo.new(@p3)
160
+ @nodo4=Nodo.new(@p4)
161
+ @nodo5=Nodo.new(@p5)
162
+ @examen.push(@nodo1)
163
+ @examen.push(@nodo2)
164
+ @examen.push(@nodo3)
165
+ @examen.push(@nodo4)
166
+ @examen.push(@nodo5)
167
+
168
+ @examen.ext
169
+ @examen.ext
170
+ @examen.ext
171
+ @examen.ext
172
+ expect(@examen.inicio).to eq(@nodo1)
173
+
174
+
175
+ end
176
+
177
+ end
178
+
179
+ describe Examen do
180
+ before :each do
181
+ @p=Verdaderofalso.new(:enunciado => "¿Pregunta de falso y verdadero?",:respuesta => "verdadero", :falsas => "falso")
182
+ end
183
+
184
+ it "Debe heredar de EleccionSimple" do
185
+ #----------------------------------------------------------
186
+ #----------------------------------------------------------
187
+ #crear expect comparando pregunta
188
+ #pregunte es una instancia de o intance_of -- is_a
189
+ #----------------------------------------------------------
190
+ #----------------------------------------------------------
191
+ expect(@p).instance_of?(Verdaderofalso)
192
+ expect(@p).is_a?(EleccionSimple)
193
+ expect(@p.enunciado).to eq("¿Pregunta de falso y verdadero?")
194
+ end
195
+
196
+ it "Debe existir una pregunta de verdadero y falso" do
197
+ #debe evaluar de que tenga dos elementos, falso y verdadero
198
+ expect(@p.respuesta)=="verdadero"
199
+ expect(@p.falsas)=="falso"
200
+ end
201
+
202
+
203
+
204
+ end
205
+
206
+
207
+ describe Examen do
208
+ before :all do
209
+ @examen = Lista.new(0)
210
+ @p1=EleccionSimple.new(:enunciado => "¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots",:respuesta =>"nil",:falsas => ["#<Xyz:0xa000208>",0,"Ninguna de las anteriores"])
211
+ @p2=EleccionSimple.new(:enunciado =>"¿La siguiente definicion de un hash en ruby es valida?",:respuesta => "verdadero" ,:falsas => "falso")
212
+ @p3=EleccionSimple.new(:enunciado =>"¿Cual es la siguiente salida del codigo en ruby?",:respuesta =>1,:falsas => ["bob","HEY","Ninguna"])
213
+ @p4=EleccionSimple.new(:enunciado =>"¿Cual es el tipo de objeto en el siguiente codigo en ruby?",:respuesta => "una instancia de la clase Class",:falsas => ["una constante","un objeto","Ninguna"])
214
+ @p5=EleccionSimple.new(:enunciado =>"¿Es apropiado que una clase tablero herede de una clase juego?",:respuesta =>"verdadero" , :falsas =>"falso")
215
+
216
+
217
+ end
218
+
219
+ it "Las lista enlazadas se deben poder recorrer en ambos sentidos" do
220
+ @nodo1=Nodo.new(@p1)
221
+
222
+ @nodo2=Nodo.new(@p2)
223
+ @nodo3=Nodo.new(@p3)
224
+ @nodo4=Nodo.new(@p4)
225
+ @nodo5=Nodo.new(@p5)
226
+ @examen.pushf(@nodo5)
227
+ @examen.push(@nodo4)
228
+ @examen.push(@nodo3)
229
+ @examen.push(@nodo2)
230
+ @examen.push(@nodo1)
231
+ expect(@examen.inicio).to eq(@nodo1)
232
+ expect(@examen.fin).to eq(@nodo5)
233
+ @examen.ext
234
+ @examen.extfin
235
+ expect(@examen.inicio).to eq(@nodo2)
236
+ expect(@examen.fin).to eq(@nodo4)
237
+ @examen.ext
238
+ @examen.extfin
239
+ expect(@examen.inicio).to eq(@nodo3)
240
+ expect(@examen.fin).to eq(@nodo3)
241
+
242
+
243
+ end
244
+
245
+ it "Extraer el primer elemento del examen" do
246
+ @nodo1=Nodo.new(@p1)
247
+ @nodo2=Nodo.new(@p2)
248
+ @nodo3=Nodo.new(@p3)
249
+ @nodo4=Nodo.new(@p4)
250
+ @nodo5=Nodo.new(@p5)
251
+ @examen.push(@nodo5)
252
+ @examen.push(@nodo4)
253
+ @examen.push(@nodo3)
254
+ @examen.push(@nodo2)
255
+ @examen.push(@nodo1)
256
+
257
+ expect(@examen.inicio).to eq(@nodo1)
258
+
259
+
260
+ end
261
+
262
+ it "Extraer el ultimo elemento del examen" do
263
+ @nodo1=Nodo.new(@p1)
264
+ @nodo2=Nodo.new(@p2)
265
+ @nodo3=Nodo.new(@p3)
266
+ @nodo4=Nodo.new(@p4)
267
+ @nodo5=Nodo.new(@p5)
268
+ @examen.pushf(@nodo1)
269
+ @examen.push(@nodo2)
270
+ @examen.push(@nodo3)
271
+ @examen.push(@nodo4)
272
+ @examen.push(@nodo5)
273
+
274
+ expect(@examen.fin).to eq(@nodo1)
275
+
276
+
277
+ end
278
+
279
+
280
+
281
+ end
282
+
283
+ describe Examen do
284
+ before :all do
285
+ @examen = Lista.new(0)
286
+ @p1=EleccionSimple.new(:valor => "5",:enunciado => "¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots",:respuesta =>"nil",:falsas => ["#<Xyz:0xa000208>",0,"Ninguna de las anteriores"])
287
+ @p2=EleccionSimple.new(:valor => "2",:enunciado =>"¿La siguiente definicion de un hash en ruby es valida?",:respuesta => "verdadero" ,:falsas => "falso")
288
+ @p3=EleccionSimple.new(:valor => "3",:enunciado =>"¿Cual es la siguiente salida del codigo en ruby?",:respuesta =>1,:falsas => ["bob","HEY","Ninguna"])
289
+ @p4=EleccionSimple.new(:valor => "5",:enunciado =>"¿Cual es el tipo de objeto en el siguiente codigo en ruby?",:respuesta => "una instancia de la clase Class",:falsas => ["una constante","un objeto","Ninguna"])
290
+ @p5=EleccionSimple.new(:valor => "1",:enunciado =>"¿Es apropiado que una clase tablero herede de una clase juego?",:respuesta =>"verdadero" , :falsas =>"falso")
291
+
292
+ @nodo1=Nodo.new(@p1)
293
+ @nodo2=Nodo.new(@p2)
294
+ @nodo3=Nodo.new(@p3)
295
+ @nodo4=Nodo.new(@p4)
296
+ @nodo5=Nodo.new(@p5)
297
+
298
+ @examen.pushf(@nodo5)
299
+ @examen.push(@nodo4)
300
+ @examen.push(@nodo3)
301
+ @examen.push(@nodo2)
302
+ @examen.push(@nodo1)
303
+
304
+ end
305
+
306
+
307
+
308
+
309
+ context "Comparacion de la dificultad de las preguntas" do
310
+
311
+
312
+ it "La pregunta p1 debe tener una mayor dificultad que la pregunta p2" do
313
+ #expect(@p1.valor).should > (@p2.valor)
314
+ expect(@p1 > @p2).to eq(true)
315
+ end
316
+
317
+ it "La pregunta p1 debe tener una mayor dificultad que la pregunta p2" do
318
+ #expect(@p1.valor).should > (@p2.valor)
319
+ expect(@p1 < @p2).to eq(false)
320
+ end
321
+
322
+ it "La pregunta p1 debe tener una dificultad igual que la pregunta p4" do
323
+ #expect(@p1.valor).should == (@p4.valor)
324
+ expect(@p1 == @p4).to eq(true)
325
+ end
326
+
327
+ it "La pregunta p5 debe tener una dificultad menor que la pregunta p4" do
328
+ #expect(@p5.valor).should < (@p4.valor)
329
+ expect(@p5 < @p4).to eq(true)
330
+ end
331
+
332
+ it "La pregunta p1 es mayor que la pregunta p3 : True" do
333
+ expect(@p1.enunciado.size > @p3.enunciado.size).to eq(true)
334
+ end
335
+
336
+ it "La pregunta p es mayor que la pregunta p : False" do
337
+ expect(@p5.enunciado.size < @p2.enunciado.size).to eq(false)
338
+ end
339
+
340
+ it "La pregunta p5 es igual a la pregunta p5 : True" do
341
+ expect(@p5.enunciado.size == @p5.enunciado.size).to eq(true)
342
+ end
343
+
344
+ it "La pregunta p5 no es igual a la pregunta p2" do
345
+ expect(@p5.enunciado.size == @p2.enunciado.size).to eq(false)
346
+ end
347
+
348
+
349
+ end
350
+
351
+
352
+
353
+
354
+ context "Enumerable las listas enlazadas" do
355
+
356
+ it "La lista es enumerable" do
357
+ string = ""
358
+ @examen.each do |l|
359
+ string << "probando"
360
+ string << "\n"
361
+ end
362
+ expect(string).to eq("probando\n"*5)
363
+ end
364
+
365
+
366
+ it "Debe contar los elementos de la lista" do
367
+ expect(@examen.count).to eq(5)
368
+
369
+ end
370
+
371
+ it "Drop" do
372
+ expect(@examen.drop(5)).to eq([])
373
+ end
374
+
375
+ it "Encontrar index" do
376
+ expect(@examen.find_index {|i| i.value == @nodo3.value}).to eq(2)
377
+ end
378
+
379
+ it "Se puede hacer un each" do
380
+ @examen.each{|i| i}
381
+ end
382
+
383
+ it "Debe iteriar en la lista enlazada : min" do
384
+ expect(@examen.min_by{|nodo| nodo.length} != @nodo1).to eq(false)
385
+
386
+ end
387
+
388
+ it "Debe iteriar en la lista enlazada : max" do
389
+
390
+ expect(@examen.max_by{|nodo| nodo.length}).to eq(@nodo1)
391
+
392
+ end
393
+ it "Debe iteriar en la lista enlazada : sort" do
394
+ expect(@examen.sort_by {|palabra| palabra.length} != @examen).to eq(true)
395
+
396
+ end
397
+
398
+
399
+
400
+ end
401
+
402
+ context "Clase Exam " do
403
+
404
+ before :each do
405
+ @examen = Lista.new(0)
406
+ @p1=EleccionSimple.new(:valor => "5",:enunciado =>"¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots",:respuesta =>"nil",:falsas => ["#<Xyz:0xa000208>",0,"Ninguna de las anteriores"])
407
+ @p2=EleccionSimple.new(:valor => "2",:enunciado =>"¿La siguiente definicion de un hash en ruby es valida?",:respuesta => "verdadero" ,:falsas => "falso")
408
+ @p3=EleccionSimple.new(:valor => "3",:enunciado =>"¿Cual es la siguiente salida del codigo en ruby?",:respuesta =>1,:falsas => ["bob","HEY","Ninguna"])
409
+ @p4=EleccionSimple.new(:valor => "5",:enunciado =>"¿Cual es el tipo de objeto en el siguiente codigo en ruby?",:respuesta => "una instancia de la clase Class",:falsas => ["una constante","un objeto","Ninguna"])
410
+ @p5=EleccionSimple.new(:valor => "1",:enunciado =>"¿Es apropiado que una clase tablero herede de una clase juego?",:respuesta =>"verdadero" , :falsas =>"falso")
411
+
412
+
413
+ @nodo1=Nodo.new(@p1)
414
+ @nodo2=Nodo.new(@p2)
415
+ @nodo3=Nodo.new(@p3)
416
+ @nodo4=Nodo.new(@p4)
417
+ @nodo5=Nodo.new(@p5)
418
+
419
+ @examen.pushf(@nodo5)
420
+ @examen.push(@nodo4)
421
+ @examen.push(@nodo3)
422
+ @examen.push(@nodo2)
423
+ @examen.push(@nodo1)
424
+
425
+ @rc1="nil"
426
+ @rc2="verdadero"
427
+ @rc3="1"
428
+ @rc4="una instancia de la clase Class"
429
+ @rc5="verdadero"
430
+ @rf2="falso"
431
+ @rf3="HEY"
432
+ @rf4="Ninguna"
433
+ @rf5='falso'
434
+
435
+ @arrayPreguntas=[@p1,@p2,@p3,@p4,@p5]
436
+ @arrayinvertido=[@p5,@p4,@p3,@p2,@p1]
437
+ arrayRespuestasCorrectas = ["@rc1","@rc2","@rc3","@rc4","@rc5"]
438
+
439
+ @exam=Exam.new(:preguntas => @examen, :respuescorrectas => arrayRespuestasCorrectas)
440
+
441
+
442
+
443
+ end
444
+
445
+ it "Debe existir una clase examen" do
446
+ expect(@exam).instance_of?(Exam)
447
+ end
448
+
449
+ it "#Añadir una pregunta al examen" do
450
+ expect(@exam.insertQuestion(@p1)).to eq(@p1)
451
+ end
452
+
453
+ it "Debe tener una lista de respuestas correctas" do
454
+ expect(@exam.respu).to eq(["@rc1","@rc2","@rc3","@rc4","@rc5"])
455
+ end
456
+
457
+
458
+
459
+ it "#Se evalua si todas las respuestas correctas" do
460
+
461
+ arrayRespuestasUsuario = ["@rc1","@rc2","@rc3","@rc4","@rc5"]
462
+ expect(@exam.compresp(arrayRespuestasUsuario)).to eq("Su nota es: Sobresaliente 10")
463
+
464
+ end
465
+
466
+ it "Se evalua si el examen esta aprobado" do
467
+ arrayRespuestasUsuario = ["@rc1","@rc2","@rf3","@rc4","@rc5"]
468
+ expect(@exam.compresp(arrayRespuestasUsuario)).to eq("Ha aprobado el examen: 4/5")
469
+ end
470
+
471
+ it "#Se evalua si el examen esta suspenso" do
472
+ arrayRespuestasUsuario = ["@rc1","@rf2","@rc3","@rf4","@rf5"]
473
+ expect(@exam.compresp(arrayRespuestasUsuario)).to eq("Ha suspendido el examen: 2/5")
474
+ end
475
+
476
+ it "Se deben mostrar en orden inverso las preguntas" do
477
+
478
+ expect(@exam.invertir).to eq(@p5.to_s+"\n"+@p4.to_s+"\n"+@p3.to_s+"\n"+@p2.to_s+"\n"+@p1.to_s+"\n")
479
+
480
+ end
481
+
482
+ it " Metodo para invertir las preguntas del examen prog funcional" do
483
+ expect(@exam.invertirfuncional(@arrayPreguntas)).to eq(@arrayinvertido)
484
+
485
+ end
486
+
487
+ it " Metodo para invertir lambda" do
488
+ expect(@exam.invertirlambda(@arrayPreguntas)).to eq(@arrayinvertido)
489
+
490
+ end
491
+
492
+
493
+ end
494
+
495
+
496
+
497
+
498
+
499
+ context "#Interfaz" do
500
+
501
+ before :each do
502
+ @examen = Lista.new(0)
503
+ @p1=EleccionSimple.new(:valor => "5",:enunciado =>"¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots",:respuesta =>"nil",:falsas => ["#<Xyz:0xa000208>",0,"Ninguna de las anteriores"])
504
+ @p2=EleccionSimple.new(:valor => "2",:enunciado =>"¿La siguiente definicion de un hash en ruby es valida?",:respuesta => "verdadero" ,:falsas => "falso")
505
+ @p3=EleccionSimple.new(:valor => "3",:enunciado =>"¿Cual es la siguiente salida del codigo en ruby?",:respuesta =>1,:falsas => ["bob","HEY","Ninguna"])
506
+ @p4=EleccionSimple.new(:valor => "5",:enunciado =>"¿Cual es el tipo de objeto en el siguiente codigo en ruby?",:respuesta => "una instancia de la clase Class",:falsas => ["una constante","un objeto","Ninguna"])
507
+ @p5=EleccionSimple.new(:valor => "1",:enunciado =>"¿Es apropiado que una clase tablero herede de una clase juego?",:respuesta =>"verdadero" , :falsas =>"falso")
508
+
509
+
510
+ @nodo1=Nodo.new(@p1)
511
+ @nodo2=Nodo.new(@p2)
512
+ @nodo3=Nodo.new(@p3)
513
+ @nodo4=Nodo.new(@p4)
514
+ @nodo5=Nodo.new(@p5)
515
+
516
+ @examen.pushf(@nodo5)
517
+ @examen.push(@nodo4)
518
+ @examen.push(@nodo3)
519
+ @examen.push(@nodo2)
520
+ @examen.push(@nodo1)
521
+
522
+ @rc1="nil"
523
+ @rc2="verdadero"
524
+ @rc3="1"
525
+ @rc4="una instancia de la clase Class"
526
+ @rc5="verdadero"
527
+ @rf2="falso"
528
+ @rf3="HEY"
529
+ @rf4="Ninguna"
530
+
531
+ arrayRespuestasCorrectas = ["@rc1","@rc2","@rc3","@rc4","@rc5"]
532
+
533
+ @exam=Exam.new(:preguntas => @examen, :respuescorrectas => arrayRespuestasCorrectas)
534
+
535
+
536
+
537
+
538
+
539
+ @interfaz=Interfaz.new(:examen => @examen)
540
+
541
+
542
+ end
543
+
544
+ it "Debe tener un examen" do
545
+ expect(@interfaz).instance_of?(Interfaz)
546
+ expect(@exam.class).to eq(Exam)
547
+
548
+ end
549
+
550
+ it "Debe de mostrar el examen al usuario" do
551
+ expect(@interfaz.to_s).to eq(@p1.to_s+"\n"+@p2.to_s+"\n"+@p3.to_s+"\n"+@p4.to_s+"\n"+@p5.to_s+"\n")
552
+
553
+ end
554
+
555
+ it "Se deben mostrar ordenadas las preguntas" do
556
+
557
+ expect(@interfaz.to_s).to eq(@p1.to_s+"\n"+@p2.to_s+"\n"+@p3.to_s+"\n"+@p4.to_s+"\n"+@p5.to_s+"\n")
558
+
559
+ end
560
+
561
+
562
+
563
+ end
564
+ context "Quiz DSL" do
565
+
566
+ before :all do
567
+ @examen=Lista.new(0)
568
+ @p1=EleccionSimple.new(:valor => "5",:enunciado =>"¿Cuantos argumentos de tipo bloque puede recibir un metodo?",:respuesta =>"1",:falsas => ["2", "muchos","los que defina el usuario"])
569
+ @p2=Verdaderofalso.new(:valor => "5",:enunciado =>"En Ruby los bloque son objetos que continen codigo",:respuesta =>"Cierto",:falsas => "Falso")
570
+
571
+ @nodo1=Nodo.new(@p1)
572
+ @nodo2=Nodo.new(@p2)
573
+
574
+ @examen.pushf(@nodo2)
575
+ @examen.push(@nodo1)
576
+ @exam=Exam.new(:preguntas=>@examen)
577
+
578
+ @quiz = Quiz2.new ("Examen"){
579
+
580
+
581
+ pregunta "¿Cuantos argumentos de tipo bloque puede recibir un metodo?" ,
582
+ :falsas => "muchos",
583
+ :falsas => "2",
584
+ :falsas => "los que defina el usuario",
585
+ :respuesta => "1"
586
+
587
+ pregunta "En Ruby los bloque son objetos que continen codigo",
588
+ :falsas => 'Cierto',
589
+ :respuesta => 'Falso'
590
+
591
+
592
+ }
593
+
594
+
595
+
596
+ end
597
+
598
+
599
+
600
+ it " Esto" do
601
+ expect(@quiz.to_s).to eq("hola")
602
+
603
+ end
604
+
605
+
606
+
607
+ end
608
+
609
+ end
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+ end
621
+ end
622
+
623
+
624
+