lppexam 0.0.1

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.
data/lib/exam.rb ADDED
@@ -0,0 +1,126 @@
1
+ require "exam/version"
2
+
3
+ # = exam.rb
4
+ #
5
+ # Autor:: Dailos Sabina Rodriguez
6
+ # Autor:: Raul Perez Hernandez
7
+ #
8
+ #
9
+
10
+ #Implementamos modulo Exam
11
+ module Exam
12
+
13
+ # === Clase Pregunta
14
+ # Definición de la clase Pregunta que permite almacenar y representar una pregunta por pantalla, proporciona una interfaz de usuario y permite saber el nivel de la pregunta mediante una variable. Sus metodos son:
15
+ # * metodo <=>
16
+ # * metodo ==
17
+ # * metodo obtener_pregunta
18
+ # * metodo obtener_level
19
+ # * metodo obtener_respuestas
20
+ # * metodo obtener_correcta
21
+ # * metodo obtener_respuesta
22
+ # * metodo initiliaze
23
+ # * metodo to_s
24
+ class Pregunta
25
+ # Se incluye el modulo comparable para comparar diferentes niveles de preguntas
26
+ include Comparable
27
+
28
+ # Atributo answers, para almacenar las respuestas de la pregunta
29
+ # Atributo title, para almacenar la respuesta en si
30
+ # Atributo num_c, numero de la respuesta correcta
31
+ # Atributo level, nivel de la pregunta
32
+ attr_accessor :answers, :title, :num_c, :level
33
+
34
+ # Metodo para hacer uso del modulo Comparable comparando el nivel de dos preguntas
35
+ def <=> (anOther)
36
+ @level <=> anOther.level
37
+ end
38
+
39
+ # Metodo para comparar que una pregunta es igual a otra
40
+ def == (other)
41
+ @level == other.level && @title == other.title
42
+ end
43
+
44
+ # Metodo para obtener el titulo de la pregunta mediante una introducción por pantalla
45
+ def self.obtener_pregunta
46
+ puts 'Introduzca la pregunta'
47
+ title = gets.chomp
48
+ return title
49
+ end
50
+
51
+ # Metodo para obtener el nivel de la pregunta
52
+ def self.obtener_level
53
+ print "Introduzca nivel de dificultad de la pregunta, 0 minimo y 10 maximo"
54
+ @level = gets.chomp.to_i
55
+ end
56
+
57
+ # Metodo para obtener las diferentes respuestas a la pregunta, manteniendo la suposición de que el numero de respuestas será el que nos proporcionen
58
+ def self.obtener_respuestas
59
+ puts "Introduzca numero de respuestas a la pregunta"
60
+ num = gets.chomp.to_i
61
+ c = []
62
+ while num != 0
63
+ c = c + obtener_respuesta(c.length + 1)
64
+ num -= 1
65
+ end
66
+ @answers = c
67
+ end
68
+
69
+ # Metodo para saber dentro de la clase Pregunta cual de las respuestas es la correcta, mediante un indice que apunta a un array
70
+ def self.obtener_correcta
71
+ puts "Introduzca el numero de la respuesta correcta"
72
+ @num_c = gets.chomp.to_i
73
+ end
74
+
75
+ # Metodo para obtener una respuesta simple a una pregunta
76
+ def self.obtener_respuesta(num)
77
+ puts "Introduzca la respuesta #{num}"
78
+ ans = [gets.chomp]
79
+ return ans
80
+ end
81
+
82
+ # Metodo para inicializar la clase
83
+ def initialize(title = obtener_pregunta, answers = obtener_respuestas, num_c = obtener_correcta, level = obtener_level)
84
+ raise ArgumentError,
85
+ "Title has to be a String, got #{title.class}" unless title.is_a? String
86
+ @title = title
87
+ @answers = answers
88
+ @num_c = num_c
89
+ @level = level
90
+ end
91
+
92
+ # Metodo para mostrar por pantalla la pregunta y las posibles respuestas
93
+ def to_s
94
+ out = "# #{@title}" + "\n"
95
+ i = 1
96
+ answers.each do |a|
97
+ out << " #{i}.- #{a}\n"
98
+ i += 1
99
+ end
100
+ out
101
+ end
102
+ end
103
+
104
+ # === Clase Pregunta_VF
105
+ # Definición de la clase Pregunta_VF que es hija de Pregunta y que constituye un caso particular de la clase Pregunta para preguntas de Verdadero y Falso. Hace uso de los metodos de Pregunta ademas de:
106
+ # * metodo initialize. Con overriding sobre el de Pregunta
107
+ # * metodo obtener_correcta. Con overriding sobre el de Pregunta
108
+ # Clase para representar la clase de preguntas de Verdadero y Falso
109
+ class Pregunta_VF < Pregunta
110
+
111
+ # Metodo para inicializar haciendo overriding
112
+ def initialize(title = obtener_pregunta, num_c = obtener_correcta, level = obtener_level)
113
+ raise ArgumenError, "Title has to be a String, got #{title.class}" unless title.is_a? String
114
+ @title = title
115
+ @answers = ["Cierto", "Falso"]
116
+ @num_c = num_c
117
+ @level = level
118
+ end
119
+
120
+ # Metodo para obtener la respuesta correcta haciendo overriding
121
+ def self.obtener_correcta
122
+ puts "Si la respuesta es correcta teclee 0, en caso contrario teclee 1"
123
+ @num_c = gets.chomp.to_i
124
+ end
125
+ end
126
+ end
data/lib/quiz_dsl.rb ADDED
@@ -0,0 +1,84 @@
1
+ require_relative 'List'
2
+ require_relative 'exam'
3
+ require_relative 'Quiz'
4
+
5
+ # = quiz_dsl.rb
6
+ #
7
+ # Autor:: Dailos Sabina Rodriguez
8
+ # Autor:: Raul Perez Hernandez
9
+ #
10
+ #
11
+ # === Clase QuizDSL
12
+ # Definicion de la clase Quiz que permite representar un examen por pantalla mediante los siguientes metodos y tambien comprobar el resultado del examen, para ello hemos definido la clase como DSL
13
+ # * metodo initialize
14
+ # * metodo question
15
+ # * metodo right
16
+ # * metodo wrong
17
+ #
18
+
19
+ class QuizDSL < InterfazQuiz
20
+
21
+ # Metodo para inicializar la clase
22
+ def initialize(name = "", &block)
23
+ @aciertos = 0
24
+ @name = name
25
+ @questions = List.new
26
+ @wr = 0
27
+
28
+ if block_given?
29
+ if block.arity == 1
30
+ yield
31
+ else
32
+ instance_eval &block
33
+ end
34
+ end
35
+ end
36
+
37
+ # Metodo para cargar una pregunta haciendo uso de DSL
38
+ def question(title, answers = {})
39
+ resp = []
40
+ a = 0
41
+ num_c = 0
42
+ correcta = answers[:right] if answers[:right]
43
+ answers.map do |key,r|
44
+ resp << r
45
+ num_c = a if r == correcta
46
+ a += 1
47
+ end
48
+ @questions.ins_final(Exam::Pregunta.new(title, resp, num_c, 0))
49
+ end
50
+
51
+ # Metodo para cargar la respuesta correcta
52
+ def right
53
+ :right
54
+ end
55
+
56
+ # Metodo para cargar la/s respuesta/s errónea/s
57
+ def wrong
58
+ @wr += 1
59
+ ("wr"+@wr.to_s).intern
60
+ end
61
+ end
62
+
63
+ if __FILE__ == $0
64
+ quiz = QuizDSL.new("Cuestionario de LPP 05/12/2014") do
65
+ question '¿Cuantos argumentos de tipo bloque puede recibir un metodo?',
66
+ right => '1',
67
+ wrong => '2',
68
+ wrong => 'muchos',
69
+ wrong => 'los que defina el usuario'
70
+
71
+ question "En Ruby los bloque son objetos que contienen codigo",
72
+ wrong =>'Cierto',
73
+ right =>'Falso'
74
+
75
+ question "Cual es el tipo del objeto en el siguiente codigo Ruby? class Objeto end",
76
+ wrong => 'Una constante',
77
+ wrong => 'Un objeto',
78
+ right => 'Una instancia de la clase Class',
79
+ wrong => 'Ninguna de las anteriores'
80
+ end
81
+
82
+ #quiz.invertir
83
+ quiz.run
84
+ end
data/spec/exam_spec.rb ADDED
@@ -0,0 +1,139 @@
1
+ require 'spec_helper'
2
+ require 'exam'
3
+ require 'List'
4
+
5
+ describe Exam do
6
+ before :each do
7
+ @p1 = Exam::Pregunta.new("Cuanto es 2 mas 2?", ["4", "3", "1"],0,2)
8
+ @p2 = Exam::Pregunta_VF.new("Es apropiado que una clase Tablero herede de una clase Juego",0,3)
9
+ @p3 = Exam::Pregunta.new("Cuanto es 3 mas 2?", ["5", "3", "1"],0,2)
10
+ @p4 = Exam::Pregunta_VF.new("Edison invento la bombilla?",0,5)
11
+ @p5 = Exam::Pregunta.new("Cuanto es 2 mas 2?", ["4", "3", "1"], 0, 2)
12
+ end
13
+
14
+ it "Comprobar clase Pregunta" do
15
+ expect(@p1.is_a? Exam::Pregunta).to eq(true)
16
+ end
17
+
18
+ it "Comprueba que una pregunta es de menor nivel que otra" do
19
+ expect(@p1 < @p2).to eq(true)
20
+ expect(@p2 < @p1).to eq(false)
21
+ end
22
+
23
+ it "Comprueba que una pregunta es de mismo nivel que otra" do
24
+ expect(@p1 == @p3).to eq(false)
25
+ expect(@p1 == @p5).to eq(true)
26
+ end
27
+
28
+ it "Comprueba que una pregunta es de mayor nivel que otra" do
29
+ expect(@p4 > @p1).to eq(true)
30
+ end
31
+
32
+ it "Debe existir un nivel de pregunta y debe estar entre 0 y 10" do
33
+ expect (@p1.level >= 0 && @p1.level <= 10)
34
+ end
35
+
36
+ it "Comprobar herencia de la clase Pregunta_VF" do
37
+ expect(@p2.is_a? Exam::Pregunta).to eq(true)
38
+ end
39
+
40
+
41
+ it "Comprobar instancia de Pregunta_VF" do
42
+ expect(@p2).to be_an_instance_of (Exam::Pregunta_VF)
43
+ end
44
+
45
+ it "Debe existir una pregunta" do
46
+ expect(@p1.title).not_to be_empty
47
+ expect(@p2.title).not_to be_empty
48
+ end
49
+
50
+ it "Deben existir opciones de respuestas" do
51
+ expect(@p1.answers).not_to be_empty
52
+ expect(@p2.answers).not_to be_empty
53
+ end
54
+
55
+ it "Se debe invocar a un metodo para obtener la pregunta" do
56
+ expect(@p1.respond_to? :obtener_pregunta)
57
+ expect(@p2.respond_to? :obtener_pregunta)
58
+ end
59
+
60
+ it "Se debe invocar a un metodo para obtener las opciones de respuesta" do
61
+ expect(@p1.respond_to? :obtener_respuestas)
62
+ expect(@p2.respond_to? :obtener_respuestas)
63
+ end
64
+
65
+ it "Debe existir al menos una respuesta correcta" do
66
+ expect(@p1.num_c != nil)
67
+ expect(@p2.num_c != nil)
68
+ end
69
+
70
+ it "Se debe mostrar por la consola la pregunta y las opciones de respuesta" do
71
+ expect(@p1.respond_to? :to_s)
72
+ expect(@p2.respond_to? :to_s)
73
+ end
74
+
75
+ it "Solo existen 2 respuestas: Verdadero o Falso" do
76
+ expect(@p2.answers.size == 2 && @p2.answers == ["Cierto", "Falso"])
77
+ end
78
+ end
79
+
80
+ describe Node do
81
+ before :each do
82
+ @t1 = List.new
83
+ @t1.ins_inicio(1)
84
+ @t1.ins_inicio(2)
85
+ end
86
+
87
+ it 'Debe existir un Nodo de la lista con sus datos y su siguiente' do
88
+ expect(@t1.head.dev_value != nil && @t1.head.dev_sig != nil)
89
+ end
90
+ end
91
+
92
+ describe List do
93
+ before :each do
94
+ @t1 = List.new
95
+ @t1.ins_inicio(1)
96
+ @t1.ins_final(2)
97
+ @t1.ins_inicio(4)
98
+ end
99
+
100
+ it 'Se extrae el primer elemento de la lista' do
101
+ l = @t1.length
102
+ @t1.sup_inicio
103
+ expect(@t1.length + 1 == l)
104
+ end
105
+
106
+ it "El maximo debe ser 4" do
107
+ expect(@t1.max == 4).to eq(true)
108
+ end
109
+
110
+ it "El minimo debe ser 1" do
111
+ expect(@t1.min == 1).to eq(true)
112
+ end
113
+
114
+ it "Comprueba el numero de elementos de la lista" do
115
+ expect(@t1.count).to eq(3)
116
+ end
117
+
118
+ it "Comprueba que hay un elemento en la lista" do
119
+ expect(@t1.include?(4)).to eq(true)
120
+ end
121
+
122
+ it 'Se puede insertar un elemento' do
123
+ l = @t1.length
124
+ @t1.ins_inicio(2)
125
+ expect(@t1.length - 1 == l)
126
+ end
127
+
128
+ it 'Se pueden insertar varios elementos' do
129
+ l = @t1.length
130
+ @t1.ins_inicio(3)
131
+ @t1.ins_inicio(4)
132
+ @t1.ins_final(5)
133
+ expect(@t1.length - 3 == l)
134
+ end
135
+
136
+ it 'Debe existir una lista con su cabeza' do
137
+ expect(@t1.count >= 1).to eq(true)
138
+ end
139
+ end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+ require 'exam'
3
+ require 'List'
4
+
5
+ describe Exam do
6
+ before :each do
7
+ @l1 = List.new
8
+ @l1.ins_inicio(Exam::Pregunta.new('¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots', ['#<Xyz:0xa000208>', 'nil', '0', 'Ninguna de las anteriores'], 1, 0))
9
+ @l1.ins_final(Exam::Pregunta.new('La siguiente definicion de un hash en Ruby es validad: hash_raro = { [1, 2, 3] => Object.new(), Hash.new => :toto }', ['Cierto', 'Falso'], 0, 1))
10
+ @l1.ins_final(Exam::Pregunta.new('Cual es la salida del siguiente codigo Ruby? class Array def say_hi "HEY!" end end p [1, "bob"].say_hi', ['1', 'bob', 'HEY!', 'Ninguna de las anteriores'], 2, 2))
11
+ @l1.ins_final(Exam::Pregunta.new('Cual es el tipo del objeto en el siguiente codigo Ruby? class Objeto end', ['Una instancia de la clase Class', 'Una constante', 'Un objeto', 'Ninguna de las anteriores'], 0, 3))
12
+ @l1.ins_final(Exam::Pregunta_VF.new('Es apropiado que una clase Tablero herede de una clase Juego', 0, 4))
13
+ @l1.ins_final(Exam::Pregunta.new('¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots', ['#<Xyz:0xa000208>', 'nil', '0', 'Ninguna de las anteriores'], 1, 0))
14
+ end
15
+
16
+ it "Debe existir una pregunta" do
17
+ p = @l1.head
18
+ while p.dev_sig != nil
19
+ expect(p.dev_value.title).not_to be_empty
20
+ p = p.dev_sig
21
+ end
22
+ end
23
+
24
+ it "Deben existir opciones de respuestas" do
25
+ p = @l1.head
26
+ while p.dev_sig != nil
27
+ expect(p.dev_value.answers).not_to be_empty
28
+ p = p.dev_sig
29
+ end
30
+ end
31
+
32
+ it "Se debe invocar a un metodo para obtener la pregunta" do
33
+ p = @l1.head
34
+ while p.dev_sig != nil
35
+ expect(p.dev_value.respond_to? :obtener_pregunta)
36
+ p = p.dev_sig
37
+ end
38
+ end
39
+
40
+ it "Se debe invocar a un metodo para obtener las opciones de respuesta" do
41
+ p = @l1.head
42
+ while p.dev_sig != nil
43
+ expect(p.dev_value.respond_to? :obtener_respuestas)
44
+ p = p.dev_sig
45
+ end
46
+ end
47
+
48
+ it "Debe existir al menos una respuesta correcta" do
49
+ p = @l1.head
50
+ while p.dev_sig != nil
51
+ expect(p.dev_value.num_c != nil)
52
+ p = p.dev_sig
53
+ end
54
+ end
55
+
56
+ it "Se debe mostrar por la consola la pregunta y las opciones de respuesta" do
57
+ p = @l1.head
58
+ while p.dev_sig != nil
59
+ expect(p.dev_value.respond_to? :to_s)
60
+ p = p.dev_sig
61
+ end
62
+ end
63
+
64
+ it "Comprueba el numero de elementos de la lista" do
65
+ expect(@l1.count).to eq(6)
66
+ end
67
+
68
+ it "Comprobar que una pregunta es igual a otra" do
69
+ expect(@l1.head.dev_value == @l1.tail.dev_value).to eq(true)
70
+ end
71
+
72
+ it "Comprobar clase Pregunta" do
73
+ expect((@l1.head.dev_value).is_a? Exam::Pregunta).to eq(true)
74
+ end
75
+
76
+ it "Comprueba que una pregunta es de menor nivel que otra" do
77
+ expect(@l1.head.dev_value < @l1.head.dev_sig.dev_value).to eq(true)
78
+ expect(@l1.head.dev_sig.dev_value < @l1.head.dev_value).to eq(false)
79
+ end
80
+ end
@@ -0,0 +1,131 @@
1
+ require 'spec_helper'
2
+ require 'exam'
3
+ require 'List'
4
+ require 'Quiz'
5
+ require 'quiz_dsl'
6
+
7
+ describe QuizDSL do
8
+ before :each do
9
+ @q1 = QuizDSL.new("Cuestionario de LPP 05/12/2014") {
10
+ question '¿Cuantos argumentos de tipo bloque puede recibir un metodo?',
11
+ right => '1',
12
+ wrong => '2',
13
+ wrong => 'muchos',
14
+ wrong => 'los que defina el usuario'
15
+
16
+ question "En Ruby los bloque son objetos que contienen codigo",
17
+ wrong =>'Cierto',
18
+ right =>'Falso'
19
+
20
+ question "Cual es el tipo del objeto en el siguiente codigo Ruby? class Objeto end",
21
+ wrong => 'Una constante',
22
+ wrong => 'Un objeto',
23
+ right => 'Una instancia de la clase Class',
24
+ wrong => 'Ninguna de las anteriores'
25
+ }
26
+ end
27
+
28
+ it "Se debe poder leer las preguntas" do
29
+ expect(@q1.respond_to? :question)
30
+ end
31
+
32
+ it "Se debe poder leer la respuesta correcta" do
33
+ expect(@q1.respond_to? :right)
34
+ end
35
+
36
+ it "Se debe poder leer las respuestas erroneas" do
37
+ expect(@q1.respond_to? :wrong)
38
+ end
39
+
40
+ it "Se crea bien el examen" do
41
+ expect(@q1.name) == "Cuestionario de LPP 05/12/2014"
42
+ end
43
+
44
+ it "Se debe poder invertir el orden de las preguntas" do
45
+ expect(@q1.respond_to? :invertir)
46
+ end
47
+
48
+ it "Se debe poder realizar por pantalla un examen" do
49
+ expect(@q1.respond_to? :run)
50
+ end
51
+
52
+ it "Se debe poder mostrar por pantalla un examen" do
53
+ expect(@q1.respond_to? :to_s)
54
+ end
55
+
56
+ it "Se debe poder corregir un examen" do
57
+ expect(@q1.respond_to? :check)
58
+ end
59
+
60
+ it "Debe existir alguna pregunta en el examen" do
61
+ expect(@q1.questions.count >= 1).to eq(true)
62
+ end
63
+
64
+ it "Comprobar que no hay preguntas iguales" do
65
+ p1 = @q1.questions.head
66
+ while p1.dev_sig != nil
67
+ p2 = p1.dev_sig
68
+ while p2 != nil
69
+ expect(p1.dev_value == p2.dev_value).to eq(false)
70
+ p2 = p2.dev_sig
71
+ end
72
+ p1 = p1.dev_sig
73
+ end
74
+ end
75
+
76
+ it "Examen perfecto" do
77
+ expect(@q1.check([0, 1, 2])).to eq(3)
78
+ end
79
+
80
+ it "Examen aprobado" do
81
+ expect(@q1.check([1, 1, 2])).to be >= 2
82
+ end
83
+
84
+ it "Examen suspenso" do
85
+ expect(@q1.check([0, 0, 1])).to be < 2
86
+ end
87
+
88
+ it "Deben existir opciones de respuestas" do
89
+ p = @q1.questions.head
90
+ while p.dev_sig != nil
91
+ expect(p.dev_value.answers).not_to be_empty
92
+ p = p.dev_sig
93
+ end
94
+ end
95
+
96
+ it "Se debe invocar a un metodo para obtener la pregunta" do
97
+ p = @q1.questions.head
98
+ while p.dev_sig != nil
99
+ expect(p.dev_value.respond_to? :obtener_pregunta)
100
+ p = p.dev_sig
101
+ end
102
+ end
103
+
104
+ it "Se debe invocar a un metodo para obtener las opciones de respuesta" do
105
+ p = @q1.questions.head
106
+ while p.dev_sig != nil
107
+ expect(p.dev_value.respond_to? :obtener_respuestas)
108
+ p = p.dev_sig
109
+ end
110
+ end
111
+
112
+ it "Debe existir al menos una respuesta correcta" do
113
+ p = @q1.questions.head
114
+ while p.dev_sig != nil
115
+ expect(p.dev_value.num_c != nil)
116
+ p = p.dev_sig
117
+ end
118
+ end
119
+
120
+ it "Se debe mostrar por la consola la pregunta y las opciones de respuesta" do
121
+ p = @q1.questions.head
122
+ while p.dev_sig != nil
123
+ expect(p.dev_value.respond_to? :to_s)
124
+ p = p.dev_sig
125
+ end
126
+ end
127
+
128
+ it "Comprueba el numero de preguntas en el examen" do
129
+ expect(@q1.questions.count).to eq(3)
130
+ end
131
+ end
data/spec/quiz_spec.rb ADDED
@@ -0,0 +1,117 @@
1
+ require 'spec_helper'
2
+ require 'exam'
3
+ require 'List'
4
+ require 'Quiz'
5
+
6
+ describe Quiz do
7
+ before :each do
8
+ @l1 = List.new
9
+ @l1.ins_inicio(Exam::Pregunta.new('¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots', ['#<Xyz:0xa000208>', 'nil', '0', 'Ninguna de las anteriores'], 1, 0))
10
+ @l1.ins_final(Exam::Pregunta.new('La siguiente definicion de un hash en Ruby es validad: hash_raro = { [1, 2, 3] => Object.new(), Hash.new => :toto }', ['Cierto', 'Falso'], 0, 1))
11
+ @l1.ins_final(Exam::Pregunta.new('Cual es la salida del siguiente codigo Ruby? class Array def say_hi "HEY!" end end p [1, "bob"].say_hi', ['1', 'bob', 'HEY!', 'Ninguna de las anteriores'], 2, 2))
12
+ @l1.ins_final(Exam::Pregunta.new('Cual es el tipo del objeto en el siguiente codigo Ruby? class Objeto end', ['Una instancia de la clase Class', 'Una constante', 'Un objeto', 'Ninguna de las anteriores'], 0, 3))
13
+ @l1.ins_final(Exam::Pregunta_VF.new('Es apropiado que una clase Tablero herede de una clase Juego', 0, 4))
14
+ #@l1.ins_final(Exam::Pregunta.new('¿Cual es la salida del siguiente codigo Ruby? class Xyz def pots @nice end end xyz = Xyz.new p xyz.pots', ['#<Xyz:0xa000208>', 'nil', '0', 'Ninguna de las anteriores'], 1, 1))
15
+ @q1 = InterfazQuiz.new("Examen LPP", @l1)
16
+ @q2 = InterfazQuiz.new("Examen LPP invertido", @l1)
17
+ @q2.invertir
18
+ end
19
+
20
+ it "Se debe poder invertir el orden de las preguntas" do
21
+ expect(@q1.respond_to? :invertir)
22
+ end
23
+
24
+ it "Orden de preguntas invertido" do
25
+ expect(@q1.questions.head == @q2.questions.tail).to eq(true)
26
+ expect(@q2.questions.head == @q1.questions.tail).to eq(true)
27
+ end
28
+
29
+ it "Se debe poder realizar por pantalla un examen" do
30
+ expect(@q1.respond_to? :run)
31
+ end
32
+
33
+ it "Se debe poder mostrar por pantalla un examen" do
34
+ expect(@q1.respond_to? :to_s)
35
+ end
36
+
37
+ it "Se debe poder corregir un examen" do
38
+ expect(@q1.respond_to? :check)
39
+ end
40
+
41
+ it "Debe existir alguna pregunta en el examen" do
42
+ expect(@q1.questions.count >= 1).to eq(true)
43
+ end
44
+
45
+ it "Comprobar que no hay preguntas iguales" do
46
+ p1 = @q1.questions.head
47
+ while p1.dev_sig != nil
48
+ p2 = p1.dev_sig
49
+ while p2 != nil
50
+ expect(p1.dev_value == p2.dev_value).to eq(false)
51
+ p2 = p2.dev_sig
52
+ end
53
+ p1 = p1.dev_sig
54
+ end
55
+ end
56
+
57
+ it "Examen perfecto" do
58
+ expect(@q1.check([1, 0, 2, 0, 0])).to eq(5)
59
+ end
60
+
61
+ it "Examen aprobado" do
62
+ expect(@q1.check([1, 0, 2, 1, 1])).to be >= 3
63
+ end
64
+
65
+ it "Examen suspenso" do
66
+ expect(@q1.check([1, 1, 2, 1, 1])).to be < 3
67
+ end
68
+
69
+ it "Deben existir opciones de respuestas" do
70
+ p = @q1.questions.head
71
+ while p.dev_sig != nil
72
+ expect(p.dev_value.answers).not_to be_empty
73
+ p = p.dev_sig
74
+ end
75
+ end
76
+
77
+ it "Se debe invocar a un metodo para obtener la pregunta" do
78
+ p = @q1.questions.head
79
+ while p.dev_sig != nil
80
+ expect(p.dev_value.respond_to? :obtener_pregunta)
81
+ p = p.dev_sig
82
+ end
83
+ end
84
+
85
+ it "Se debe invocar a un metodo para obtener las opciones de respuesta" do
86
+ p = @q1.questions.head
87
+ while p.dev_sig != nil
88
+ expect(p.dev_value.respond_to? :obtener_respuestas)
89
+ p = p.dev_sig
90
+ end
91
+ end
92
+
93
+ it "Debe existir al menos una respuesta correcta" do
94
+ p = @q1.questions.head
95
+ while p.dev_sig != nil
96
+ expect(p.dev_value.num_c != nil)
97
+ p = p.dev_sig
98
+ end
99
+ end
100
+
101
+ it "Se debe mostrar por la consola la pregunta y las opciones de respuesta" do
102
+ p = @q1.questions.head
103
+ while p.dev_sig != nil
104
+ expect(p.dev_value.respond_to? :to_s)
105
+ p = p.dev_sig
106
+ end
107
+ end
108
+
109
+ it "Comprueba el numero de preguntas en el examen" do
110
+ expect(@q1.questions.count).to eq(5)
111
+ end
112
+
113
+ it "Comprueba que una pregunta es de menor nivel que otra" do
114
+ expect(@q1.questions.head.dev_value < @q1.questions.head.dev_sig.dev_value).to eq(true)
115
+ expect(@q1.questions.head.dev_sig.dev_value < @q1.questions.head.dev_value).to eq(false)
116
+ end
117
+ end
@@ -0,0 +1,10 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ RSpec.configure do |config|
5
+ # config.treat_symbols_as_metadata_keys_with_true_values = true
6
+ config.run_all_when_everything_filtered = true
7
+ # config.filter_run :focus
8
+
9
+ # config.order = 'random'
10
+ end