estefania_exam 0.0.2
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.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/Guardfile +39 -0
- data/LICENSE.txt +22 -0
- data/README.md +12 -0
- data/Rakefile +14 -0
- data/exam.gemspec +28 -0
- data/lib/doc/Exam.html +114 -0
- data/lib/doc/Exam/Examen.html +350 -0
- data/lib/doc/Interfaz.html +285 -0
- data/lib/doc/List.html +453 -0
- data/lib/doc/Node.html +170 -0
- data/lib/doc/Object.html +121 -0
- data/lib/doc/Question.html +309 -0
- data/lib/doc/SimpleSelection.html +275 -0
- data/lib/doc/VerdaderoFalso.html +228 -0
- data/lib/doc/created.rid +9 -0
- data/lib/doc/fonts.css +167 -0
- data/lib/doc/fonts/Lato-Light.ttf +0 -0
- data/lib/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/doc/fonts/Lato-Regular.ttf +0 -0
- data/lib/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/lib/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/doc/images/add.png +0 -0
- data/lib/doc/images/arrow_up.png +0 -0
- data/lib/doc/images/brick.png +0 -0
- data/lib/doc/images/brick_link.png +0 -0
- data/lib/doc/images/bug.png +0 -0
- data/lib/doc/images/bullet_black.png +0 -0
- data/lib/doc/images/bullet_toggle_minus.png +0 -0
- data/lib/doc/images/bullet_toggle_plus.png +0 -0
- data/lib/doc/images/date.png +0 -0
- data/lib/doc/images/delete.png +0 -0
- data/lib/doc/images/find.png +0 -0
- data/lib/doc/images/loadingAnimation.gif +0 -0
- data/lib/doc/images/macFFBgHack.png +0 -0
- data/lib/doc/images/package.png +0 -0
- data/lib/doc/images/page_green.png +0 -0
- data/lib/doc/images/page_white_text.png +0 -0
- data/lib/doc/images/page_white_width.png +0 -0
- data/lib/doc/images/plugin.png +0 -0
- data/lib/doc/images/ruby.png +0 -0
- data/lib/doc/images/tag_blue.png +0 -0
- data/lib/doc/images/tag_green.png +0 -0
- data/lib/doc/images/transparent.png +0 -0
- data/lib/doc/images/wrench.png +0 -0
- data/lib/doc/images/wrench_orange.png +0 -0
- data/lib/doc/images/zoom.png +0 -0
- data/lib/doc/index.html +99 -0
- data/lib/doc/js/darkfish.js +140 -0
- data/lib/doc/js/jquery.js +4 -0
- data/lib/doc/js/navigation.js +142 -0
- data/lib/doc/js/search.js +109 -0
- data/lib/doc/js/search_index.js +1 -0
- data/lib/doc/js/searcher.js +228 -0
- data/lib/doc/rdoc.css +580 -0
- data/lib/doc/table_of_contents.html +186 -0
- data/lib/exam.rb +46 -0
- data/lib/exam/interfaz.rb +49 -0
- data/lib/exam/list.rb +111 -0
- data/lib/exam/node.rb +5 -0
- data/lib/exam/question.rb +34 -0
- data/lib/exam/simpleSelection.rb +29 -0
- data/lib/exam/verdaderoFalso.rb +21 -0
- data/lib/exam/version.rb +3 -0
- data/lib/quiz.rb +61 -0
- data/lib/quiz/answer.rb +25 -0
- data/lib/quiz/question.rb +29 -0
- data/spec/exam_spec.rb +297 -0
- data/spec/quiz_spec.rb +55 -0
- data/spec/spec_helper.rb +19 -0
- metadata +221 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Clase que hereda de Question y que permite crear preguntas del tipo Verdadero o Falso.
|
|
2
|
+
class VerdaderoFalso < Question
|
|
3
|
+
# Constante que tiene las dos únicas opciones que puede tener este tipo de pregunta (Cierto y Falso)
|
|
4
|
+
OPCIONES = {
|
|
5
|
+
"a" => "Cierto",
|
|
6
|
+
"b" => "Falso"
|
|
7
|
+
}
|
|
8
|
+
# Inicialización de los atributos mediante una llamada al constructor de la clase madre.
|
|
9
|
+
def initialize (ask,respuestaCorrecta,difficulty=0)
|
|
10
|
+
super(ask,respuestaCorrecta,difficulty)
|
|
11
|
+
end
|
|
12
|
+
# Método que devuelve una cadena con el enunciado y las dos posibles opciones de respuesta para la pregunta.
|
|
13
|
+
def to_s
|
|
14
|
+
cadena = @ask + "\n"
|
|
15
|
+
OPCIONES.each do |m,i|
|
|
16
|
+
cadena += "#{m})#{i}\n"
|
|
17
|
+
end
|
|
18
|
+
cadena
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
data/lib/exam/version.rb
ADDED
data/lib/quiz.rb
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require_relative "../lib/quiz/question.rb"
|
|
2
|
+
|
|
3
|
+
class Quiz
|
|
4
|
+
WRONG = :wrong
|
|
5
|
+
RIGHT = :right
|
|
6
|
+
attr_accessor :name, :questions
|
|
7
|
+
|
|
8
|
+
def initialize(name="",&block)
|
|
9
|
+
self.name = name
|
|
10
|
+
self.questions =[]
|
|
11
|
+
|
|
12
|
+
@counter = 0
|
|
13
|
+
instance_eval &block
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def question(text,answers)
|
|
18
|
+
q = Question.new(text,answers)
|
|
19
|
+
@questions << q
|
|
20
|
+
@counter = 0
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def wrong
|
|
25
|
+
@counter += 1
|
|
26
|
+
[@counter, WRONG]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def right
|
|
30
|
+
@counter +=1
|
|
31
|
+
[@counter, RIGHT]
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def to_s
|
|
36
|
+
|
|
37
|
+
cadena = ""
|
|
38
|
+
@questions.each do |m,i|
|
|
39
|
+
cadena += "#{m}"
|
|
40
|
+
end
|
|
41
|
+
cadena
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def checkAnswers(answersUser)
|
|
46
|
+
count = 0
|
|
47
|
+
i = 0
|
|
48
|
+
@questions.each do |q|
|
|
49
|
+
|
|
50
|
+
if q.check(answersUser[i])
|
|
51
|
+
count +=1
|
|
52
|
+
end
|
|
53
|
+
i +=1
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
"Resultado: #{count}/#{@questions.size}"
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
end
|
data/lib/quiz/answer.rb
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
class Answer
|
|
2
|
+
attr_accessor :kind, :order, :answer
|
|
3
|
+
|
|
4
|
+
# order: the position of the answer in the question
|
|
5
|
+
# kind: either :right or :wrong
|
|
6
|
+
# answer: the text of the answer (for instance "1492")
|
|
7
|
+
def initialize(order, kind, answer)
|
|
8
|
+
@kind, @order, @answer = kind, order, answer
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def to_s
|
|
12
|
+
"#{@order}. #{answer}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# decides if this is a right answer
|
|
16
|
+
def is_right?
|
|
17
|
+
@kind == Quiz::RIGHT
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Answer objects must be sorted according to their position
|
|
21
|
+
# inside the question
|
|
22
|
+
def <=>(other)
|
|
23
|
+
self.order <=> other.order
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require_relative "./answer.rb"
|
|
2
|
+
class Question
|
|
3
|
+
|
|
4
|
+
ORDER = 0
|
|
5
|
+
KIND = 1
|
|
6
|
+
attr_accessor :text, :answers
|
|
7
|
+
|
|
8
|
+
def initialize(text, answers)
|
|
9
|
+
@text = text
|
|
10
|
+
|
|
11
|
+
#Primero posición de la respuesta en el examen, luego si es correcta o incorrecta y por último la respuesta.
|
|
12
|
+
@answers = answers.map { |k, v| Answer.new(k[ORDER], k[KIND], v) }.sort
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def check(answerUser)
|
|
16
|
+
|
|
17
|
+
@answers[answerUser -1].is_right?
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def to_s
|
|
22
|
+
cadena = @text + "\n"
|
|
23
|
+
@answers.each do |answer|
|
|
24
|
+
cadena << " #{answer}\n"
|
|
25
|
+
end
|
|
26
|
+
cadena
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
data/spec/exam_spec.rb
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
#encoding: UTF-8
|
|
2
|
+
require_relative "spec_helper"
|
|
3
|
+
require_relative "../lib/exam.rb"
|
|
4
|
+
require_relative "../lib/exam/interfaz.rb"
|
|
5
|
+
|
|
6
|
+
describe Exam do
|
|
7
|
+
|
|
8
|
+
before :each do
|
|
9
|
+
@options1 = {
|
|
10
|
+
"a" => "azul",
|
|
11
|
+
"b" => "verde",
|
|
12
|
+
"c" => "negro",
|
|
13
|
+
"d" => "naranja"
|
|
14
|
+
}
|
|
15
|
+
@options2 = {
|
|
16
|
+
"a" => "Un ave",
|
|
17
|
+
"b" => "Un reptil",
|
|
18
|
+
"c" => "Un mamifero",
|
|
19
|
+
"d" => "Ninguna de las anteriores"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@sS1 = SimpleSelection.new("¿De qué color es el coche del presidente?",@options1,"c",5)
|
|
23
|
+
@sS2 = SimpleSelection.new("¿Que es un perro?",@options2,"c")
|
|
24
|
+
|
|
25
|
+
#Listas enlazadas
|
|
26
|
+
@nodo1 = Node.new(2,nil,nil)
|
|
27
|
+
@nodo2 = Node.new(5,nil,nil)
|
|
28
|
+
@arrayNodos = [@nodo1,@nodo2]
|
|
29
|
+
@nodoCabeza = Node.new(3,nil,nil)
|
|
30
|
+
@lista1 = List.new(@nodoCabeza)
|
|
31
|
+
#Preguntas para las pruebas de la práctica 6
|
|
32
|
+
|
|
33
|
+
#Pregunta 1
|
|
34
|
+
enunciado1 = "¿Cuál es la salida del siguiente código Ruby? class Xyz\ndef pots\n@nice\nend\nend\nxyz = Xyz.new\np xyz.pots"
|
|
35
|
+
opciones1 ={
|
|
36
|
+
"a" => "#<Xyz:0xa000208>",
|
|
37
|
+
"b" => "nil",
|
|
38
|
+
"c" => "0",
|
|
39
|
+
"d" => "Ninguna de las anteriores"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@pregunta1 = SimpleSelection.new(enunciado1,opciones1,"b",6)
|
|
43
|
+
|
|
44
|
+
@nodoP1 = Node.new(@pregunta1,@nodoP2,nil)
|
|
45
|
+
#Pregunta 2
|
|
46
|
+
enunciado2 = "La siguiente definición de un hash en Ruby es válida:\n hash_raro = {\n[1, 2, 3] => Object.new(),\nHash.new => :toto\n}"
|
|
47
|
+
@pregunta2 = VerdaderoFalso.new(enunciado2,"a",4)
|
|
48
|
+
@nodoP2 = Node.new(@pregunta2,@nodoP3,@nodoP1)
|
|
49
|
+
#Pregunta 3
|
|
50
|
+
enunciado3 = "¿Cuál es la salida del siguiente código Ruby?\n class Array\ndef say_hi\n\"HEY!\"\nend\nend\np [1, \"bob\"].say_hi\n"
|
|
51
|
+
opciones3 = {
|
|
52
|
+
"a" => "1",
|
|
53
|
+
"b" => "bob",
|
|
54
|
+
"c" => "HEY!",
|
|
55
|
+
"d" => "Ninguna de las anteriores"
|
|
56
|
+
}
|
|
57
|
+
@pregunta3 = SimpleSelection.new(enunciado3,opciones3,"c",7)
|
|
58
|
+
@nodoP3 = Node.new(@pregunta3,@nodoP4,@nodoP2)
|
|
59
|
+
#Pregunta 4
|
|
60
|
+
enunciado4 = "¿Cúal es el tipo del objeto en el siguiente código Ruby?\nclass Objeto\nend\n"
|
|
61
|
+
opciones4 ={
|
|
62
|
+
"a" => "Una instancia de la clase Class",
|
|
63
|
+
"b" => "Una constante",
|
|
64
|
+
"c" => "Un objeto",
|
|
65
|
+
"d" => "Ninguna de las anteriores"
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
@pregunta4 = SimpleSelection.new(enunciado4,opciones4,"c",8)
|
|
69
|
+
@nodoP4 = Node.new(@pregunta4,@nodoP5,@nodoP3)
|
|
70
|
+
#Pregunta 5
|
|
71
|
+
@vf1 = VerdaderoFalso.new("Es apropiado que una clase Tablero herede de una clase Juego","a",5)
|
|
72
|
+
@nodoP5 = Node.new(@vf1,nil,@nodoP4)
|
|
73
|
+
@arrayNodosPreguntas = [@nodoP1,@nodoP2,@nodoP3,@nodoP4,@nodoP5]
|
|
74
|
+
|
|
75
|
+
#Crear una nueva lista con las preguntas de la práctica anterior para las pruebas de la práctica 8
|
|
76
|
+
@lista2 = List.new(@nodoP1)
|
|
77
|
+
@arrayPreguntas = [@nodoP2,@nodoP3,@nodoP4,@nodoP5]
|
|
78
|
+
@lista2.insertElements(@arrayPreguntas)
|
|
79
|
+
|
|
80
|
+
#Crear variables necesarias para la práctica 9
|
|
81
|
+
@examen = Exam::Examen.new(@lista2)
|
|
82
|
+
|
|
83
|
+
@interfaz = Interfaz.new(@examen)
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
#Pruebas para las preguntas de selección simple
|
|
87
|
+
describe "#Comprobación jerarquía" do
|
|
88
|
+
it "#SimpleSelection es Question" do
|
|
89
|
+
expect(@sS1.is_a?Question).to eq(true)
|
|
90
|
+
end
|
|
91
|
+
it "#VerdaderoFalso es Question" do
|
|
92
|
+
expect(@vf1.is_a?Question).to eq(true)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
describe "# Almacenamiento de la pregunta." do
|
|
96
|
+
|
|
97
|
+
it "Se almacena correctamente la pregunta." do
|
|
98
|
+
expect(@sS1.ask).to eq("¿De qué color es el coche del presidente?")
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "Se almacenan correctamente las respuestas." do
|
|
102
|
+
expect(@sS1.answers_to_s).to eq("a)azul\nb)verde\nc)negro\nd)naranja\n")
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
describe "# Obtencion respuestas" do
|
|
106
|
+
it "Hash de opciones" do
|
|
107
|
+
expect(@sS1.answers).to eq({"a"=>"azul", "b"=>"verde", "c"=>"negro", "d"=>"naranja"})
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
describe "#Mostrar preguntas y respuestas" do
|
|
111
|
+
it "Mostrar una pregunta y su respuesta" do
|
|
112
|
+
expect(@sS1.to_s).to eq("¿De qué color es el coche del presidente?\na)azul\nb)verde\nc)negro\nd)naranja\n")
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
#Prueba de las preguntas de la práctica 6
|
|
117
|
+
describe "#Comprobación preguntas y respuestas" do
|
|
118
|
+
it "#Comprobación pregunta 1" do
|
|
119
|
+
|
|
120
|
+
expect(@pregunta1.to_s).to eq("¿Cuál es la salida del siguiente código Ruby? class Xyz\ndef pots\n@nice\nend\nend\nxyz = Xyz.new\np xyz.pots\na)#<Xyz:0xa000208>\nb)nil\nc)0\nd)Ninguna de las anteriores\n")
|
|
121
|
+
end
|
|
122
|
+
it "#Comprobación pregunta 2" do
|
|
123
|
+
|
|
124
|
+
expect(@pregunta2.to_s).to eq ("La siguiente definición de un hash en Ruby es válida:\n hash_raro = {\n[1, 2, 3] => Object.new(),\nHash.new => :toto\n}\na)Cierto\nb)Falso\n")
|
|
125
|
+
end
|
|
126
|
+
it "#Comprobación pregunta 3" do
|
|
127
|
+
|
|
128
|
+
expect(@pregunta3.to_s).to eq ("¿Cuál es la salida del siguiente código Ruby?\n class Array\ndef say_hi\n\"HEY!\"\nend\nend\np [1, \"bob\"].say_hi\n\na)1\nb)bob\nc)HEY!\nd)Ninguna de las anteriores\n")
|
|
129
|
+
end
|
|
130
|
+
it "#Comprobación pregunta 4" do
|
|
131
|
+
|
|
132
|
+
expect(@pregunta4.to_s).to eq("¿Cúal es el tipo del objeto en el siguiente código Ruby?\nclass Objeto\nend\n\na)Una instancia de la clase Class\nb)Una constante\nc)Un objeto\nd)Ninguna de las anteriores\n")
|
|
133
|
+
end
|
|
134
|
+
it "#Comprobación pregunta 5" do
|
|
135
|
+
|
|
136
|
+
expect(@vf1.to_s).to eq("Es apropiado que una clase Tablero herede de una clase Juego\na)Cierto\nb)Falso\n")
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
#Prueba para comparar preguntas práctica 8
|
|
141
|
+
describe "#Comparar preguntas" do
|
|
142
|
+
it "#Pregunta1 < Pregunta2" do
|
|
143
|
+
test = @pregunta1 < @pregunta3
|
|
144
|
+
test.should eq (true)
|
|
145
|
+
test2 = @pregunta2 < @vf1
|
|
146
|
+
test2.should eq(true)
|
|
147
|
+
end
|
|
148
|
+
it "#Pregunta1 > Pregunta2" do
|
|
149
|
+
test = @pregunta3 > @pregunta4
|
|
150
|
+
test.should eq (false)
|
|
151
|
+
test2 = @vf1 > @pregunta2
|
|
152
|
+
test2.should eq(true)
|
|
153
|
+
|
|
154
|
+
end
|
|
155
|
+
it "#Pregunta1 == Pregunta2" do
|
|
156
|
+
test = @sS1 == @vf1
|
|
157
|
+
test.should eq (false)
|
|
158
|
+
test2 = @pregunta3 == @pregunta1
|
|
159
|
+
test2.should eq(false)
|
|
160
|
+
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
#Pruebas para las listas enlazadas
|
|
164
|
+
describe "#Extracción de elementos" do
|
|
165
|
+
it "#Extraer el primer elemento" do
|
|
166
|
+
@lista1.pullHead.should eq (3)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
describe "#Inserción de elementos" do
|
|
170
|
+
it "#Insertar un elemento" do
|
|
171
|
+
|
|
172
|
+
cola = @lista1.insert(@nodo1)
|
|
173
|
+
cola.value.should eq (2)
|
|
174
|
+
cola.next.should eq (nil)
|
|
175
|
+
nodoAnterior = cola.anterior
|
|
176
|
+
expect(nodoAnterior.value).to eq (3)
|
|
177
|
+
expect(nodoAnterior.next).to eq (@nodo1)
|
|
178
|
+
expect(nodoAnterior.anterior).to eq(nil)
|
|
179
|
+
end
|
|
180
|
+
it "#Insertar varios elementos" do
|
|
181
|
+
cola = @lista1.insertElements(@arrayNodos)
|
|
182
|
+
cola.value.should eq(5)
|
|
183
|
+
cola.next.should eq(nil)
|
|
184
|
+
nodoAnterior = cola.anterior
|
|
185
|
+
expect(nodoAnterior.value).to eq (2)
|
|
186
|
+
expect(nodoAnterior.next).to eq (@nodo2)
|
|
187
|
+
end
|
|
188
|
+
it "#Introducir preguntas en la lista" do
|
|
189
|
+
|
|
190
|
+
cola = @lista1.insertElements(@arrayNodosPreguntas)
|
|
191
|
+
preguntaPrueba = cola.value
|
|
192
|
+
expect(preguntaPrueba.to_s).to eq("Es apropiado que una clase Tablero herede de una clase Juego\na)Cierto\nb)Falso\n")
|
|
193
|
+
cola.next.should eq(nil)
|
|
194
|
+
expect((cola.anterior.value).is_a?Question).to eq(true)
|
|
195
|
+
nodoAnterior = cola.anterior
|
|
196
|
+
preguntaAnterior = nodoAnterior.value
|
|
197
|
+
expect(preguntaAnterior.to_s).to eq("¿Cúal es el tipo del objeto en el siguiente código Ruby?\nclass Objeto\nend\n\na)Una instancia de la clase Class\nb)Una constante\nc)Un objeto\nd)Ninguna de las anteriores\n")
|
|
198
|
+
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
describe "#Eliminar nodos" do
|
|
203
|
+
it "#Eliminar un nodo de en medio de la lista" do
|
|
204
|
+
expect(@lista2.delete(@nodoP3)).to eq(@pregunta4)
|
|
205
|
+
expect(@lista2.count).to eq(4)
|
|
206
|
+
end
|
|
207
|
+
it "#Eliminar la cola" do
|
|
208
|
+
expect(@lista2.delete(@nodoP5)).to eq(@vf1)
|
|
209
|
+
expect(@lista2.count).to eq(4)
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
describe "#Recoger información nodos" do
|
|
214
|
+
it "#Recoger cabeza de la cola" do
|
|
215
|
+
nodoCabeza = @lista1.cabeza
|
|
216
|
+
nodoCabeza.value.should eq (3)
|
|
217
|
+
nodoCabeza.next.should eq (nil)
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
#Pruebas para la práctica 8
|
|
221
|
+
describe "#Comprobación de lista enumerable" do
|
|
222
|
+
|
|
223
|
+
it "#Prueba con count" do
|
|
224
|
+
|
|
225
|
+
expect(@lista2.count).to eq (5)
|
|
226
|
+
end
|
|
227
|
+
it "#Prueba con all?" do
|
|
228
|
+
|
|
229
|
+
expect(@lista2.all?).to eq (true)
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
end
|
|
233
|
+
describe "#Comprobación lista enumerable nodos comparables" do
|
|
234
|
+
|
|
235
|
+
it "#Prueba con max y min" do
|
|
236
|
+
expect(@lista2.max).to eq (@pregunta4)
|
|
237
|
+
expect(@lista2.min).to eq (@pregunta2)
|
|
238
|
+
end
|
|
239
|
+
it "#Prueba con first" do
|
|
240
|
+
expect(@lista2.first).to eq (@pregunta1)
|
|
241
|
+
end
|
|
242
|
+
it "#Prueba con sort" do
|
|
243
|
+
arrayPreguntas = [@pregunta4,@pregunta3,@pregunta1,@vf1,@pregunta2]
|
|
244
|
+
expect(@lista2.sort{|p1,p2| p2<=>p1}).to eq (arrayPreguntas)
|
|
245
|
+
end
|
|
246
|
+
it "#Prueba con detect" do #Detect devuelve el primero que cumple la condición
|
|
247
|
+
expect(@lista2.detect{|preg| preg.difficulty % 2 == 0}).to eq(@pregunta1)
|
|
248
|
+
end
|
|
249
|
+
it "#Prueba con collect" do
|
|
250
|
+
array = [12,8,14,16,10]
|
|
251
|
+
expect(@lista2.collect{|preg| preg.difficulty*2}).to eq (array)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
end
|
|
256
|
+
#Pruebas para Examen práctica 9
|
|
257
|
+
describe "#Acceso al examen" do
|
|
258
|
+
|
|
259
|
+
it "#Añadir una pregunta al examen" do
|
|
260
|
+
expect(@examen.insertQuestion(@sS1)).to eq(@sS1)
|
|
261
|
+
end
|
|
262
|
+
it "#Mostrar preguntas examen" do
|
|
263
|
+
cadena = @pregunta1.to_s + @pregunta2.to_s + @pregunta3.to_s + @pregunta4.to_s + @vf1.to_s
|
|
264
|
+
expect(@examen.to_s).to eq(cadena)
|
|
265
|
+
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
end
|
|
270
|
+
#Pruebas para Interfaz práctica 9
|
|
271
|
+
describe "#Interfaz" do
|
|
272
|
+
it "#Se muestran las preguntas ordenadas" do
|
|
273
|
+
|
|
274
|
+
cadena = @pregunta2.to_s + @vf1.to_s + @pregunta1.to_s + @pregunta3.to_s + @pregunta4.to_s
|
|
275
|
+
expect(@interfaz.to_s).to eq(cadena)
|
|
276
|
+
end
|
|
277
|
+
it "#Se evalua si todas las respuestas correctas" do
|
|
278
|
+
arrayRespuestas = ["b","a","c","c","a"]
|
|
279
|
+
expect(@interfaz.compararRespuestas(arrayRespuestas)).to eq("Su nota es: Sobresaliente 10")
|
|
280
|
+
|
|
281
|
+
end
|
|
282
|
+
it "#Se evalua si el examen está suspenso" do
|
|
283
|
+
arrayRespuestas = ["a","c","b","c","a"]
|
|
284
|
+
expect(@interfaz.compararRespuestas(arrayRespuestas)).to eq("Ha suspendido el examen: 2/5")
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
# Pruebas para el desarrollo funcional de la práctica 10
|
|
288
|
+
describe "#Invertir preguntas del examen" do
|
|
289
|
+
it "#Método funcional" do
|
|
290
|
+
cadena = @vf1.to_s + @pregunta4.to_s + @pregunta3.to_s + @pregunta2.to_s + @pregunta1.to_s
|
|
291
|
+
cadenaObtenida = @examen.invertirPreguntas
|
|
292
|
+
expect(cadenaObtenida).to eq(cadena)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
end
|
data/spec/quiz_spec.rb
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#encoding: UTF-8
|
|
2
|
+
require_relative "../lib/quiz.rb"
|
|
3
|
+
|
|
4
|
+
describe Quiz do
|
|
5
|
+
|
|
6
|
+
before :each do
|
|
7
|
+
@quiz1 = Quiz.new("Cuestionario de LPP 05/12/2014") {
|
|
8
|
+
question '¿Cuántos argumentos de tipo bloque puede recibir un método?',
|
|
9
|
+
right =>'1',
|
|
10
|
+
wrong =>'2',
|
|
11
|
+
wrong =>'muchos',
|
|
12
|
+
wrong =>'los que defina el usuario'
|
|
13
|
+
question 'En Ruby los bloque son objetos que continen código',
|
|
14
|
+
wrong =>'Cierto',
|
|
15
|
+
right =>'Falso'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "#Creación de un examen" do
|
|
21
|
+
it "#Crear un nuevo cuestionario" do
|
|
22
|
+
newQuiz = Quiz.new("Cuestionario 1"){
|
|
23
|
+
question '¿Cuánto son 2+2?',
|
|
24
|
+
wrong => '10',
|
|
25
|
+
wrong => '3',
|
|
26
|
+
wrong => '5',
|
|
27
|
+
right => '4'
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
expect(newQuiz.questions.count).to eq(1)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe "#Mostrar examen" do
|
|
37
|
+
it "#Mostrar preguntas y respuestas" do
|
|
38
|
+
cadena = "¿Cuántos argumentos de tipo bloque puede recibir un método?\n 1. 1\n 2. 2\n 3. muchos\n 4. los que defina el usuario\n"
|
|
39
|
+
cadena += "En Ruby los bloque son objetos que continen código\n 1. Cierto\n 2. Falso\n"
|
|
40
|
+
expect(@quiz1.to_s).to eq(cadena)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe "#Responder preguntas" do
|
|
45
|
+
it "#Todas correctas" do
|
|
46
|
+
answersUser = [1,2]
|
|
47
|
+
expect(@quiz1.checkAnswers(answersUser)).to eq("Resultado: 2/2")
|
|
48
|
+
end
|
|
49
|
+
it "#Suspenso" do
|
|
50
|
+
answersUser = [2,1]
|
|
51
|
+
expect(@quiz1.checkAnswers(answersUser)).to eq("Resultado: 0/2")
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|