prct5 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/.coveralls.yml +1 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/.travis.yml +8 -0
- data/Gemfile +7 -0
- data/Guardfile +39 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +21 -0
- data/lib/int_list_resp.rb +15 -0
- data/lib/lista_respuesta.rb +39 -0
- data/lib/multirespuesta.rb +30 -0
- data/lib/prct5/version.rb +3 -0
- data/lib/prct5.rb +5 -0
- data/prct5.gemspec +28 -0
- data/prct6.pdf +0 -0
- data/report.html +352 -0
- data/spec/exam_spec.rb +29 -0
- data/spec/examen.rb +63 -0
- data/spec/interfaz.rb +48 -0
- data/spec/lista_enlazada.rb +136 -0
- data/spec/lista_respuesta.rb +36 -0
- data/spec/multirespuesta.rb +36 -0
- data/spec/node_spec.rb +91 -0
- data/spec/prct5_spec.rb +82 -0
- data/spec/preg2.rb +31 -0
- data/spec/preg2_spec.rb +53 -0
- data/spec/quiz1.rb +114 -0
- data/spec/spec_helper.rb +18 -0
- data/spec/verdadero_falso.rb +13 -0
- data/spec/verdadero_falso_spec.rb +35 -0
- metadata +203 -0
data/spec/examen.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'multirespuesta'
|
2
|
+
require 'verdadero_falso'
|
3
|
+
require 'lista_enlazada'
|
4
|
+
|
5
|
+
class Examen < ListaEnlazada
|
6
|
+
def initialize(vector_preguntas)
|
7
|
+
super(vector_preguntas)
|
8
|
+
@respondido = false
|
9
|
+
if vector_preguntas.kind_of? Array
|
10
|
+
@n_preguntas = vector_preguntas.length
|
11
|
+
else
|
12
|
+
@n_preguntas = 1
|
13
|
+
end
|
14
|
+
@respuestas = []
|
15
|
+
end
|
16
|
+
def print
|
17
|
+
while @actual != nil
|
18
|
+
@actual.val.to_s
|
19
|
+
@actual = @actual.siguiente
|
20
|
+
end
|
21
|
+
@actual = @head
|
22
|
+
end
|
23
|
+
def print_node(val)
|
24
|
+
for i in 0..val do
|
25
|
+
@actual = @actual.siguiente
|
26
|
+
end
|
27
|
+
@actual.val.to_s
|
28
|
+
@actual = @head
|
29
|
+
end
|
30
|
+
def getCorrecta(node)
|
31
|
+
return node.val.correcta
|
32
|
+
end
|
33
|
+
def getPreg(node)
|
34
|
+
return node.val.preg
|
35
|
+
end
|
36
|
+
def getNum(node)
|
37
|
+
return node.val.num
|
38
|
+
end
|
39
|
+
def responder(value)
|
40
|
+
print_node(value)
|
41
|
+
print "Introduzca su respuesta -> "
|
42
|
+
STDOUT.flush
|
43
|
+
resp = gets.chomp
|
44
|
+
if resp == @actual.val.correcta
|
45
|
+
return true
|
46
|
+
else
|
47
|
+
return false
|
48
|
+
end
|
49
|
+
end
|
50
|
+
def my_while(condicion, &bloque)
|
51
|
+
while condicion.call
|
52
|
+
bloque.call
|
53
|
+
end
|
54
|
+
end
|
55
|
+
def inverse
|
56
|
+
aux = @tail
|
57
|
+
my_while -> {aux != nil} do
|
58
|
+
aux.val.to_s
|
59
|
+
aux = aux.prev
|
60
|
+
end
|
61
|
+
return true
|
62
|
+
end
|
63
|
+
end
|
data/spec/interfaz.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'examen'
|
2
|
+
|
3
|
+
class Interfaz
|
4
|
+
def initialize(vector_preguntas)
|
5
|
+
@respondido = false
|
6
|
+
@n_preguntas = vector_preguntas.length
|
7
|
+
@exam = Examen.new(vector_preguntas)
|
8
|
+
@respuestas = []
|
9
|
+
end
|
10
|
+
def muestra_menu
|
11
|
+
while true do
|
12
|
+
puts "Prueba Examen"
|
13
|
+
puts "Seleccione una opcion del menu:"
|
14
|
+
puts "1) Mostrar examen"
|
15
|
+
puts "2) Responder examen"
|
16
|
+
if @respondido == true
|
17
|
+
puts "3) Mostrar calificacion"
|
18
|
+
end
|
19
|
+
puts "0) Salir"
|
20
|
+
print "-> "
|
21
|
+
STDOUT.flush
|
22
|
+
a = gets.chomp
|
23
|
+
case a
|
24
|
+
when "1"
|
25
|
+
@exam.print
|
26
|
+
when "2"
|
27
|
+
for i in 0..@n_preguntas do
|
28
|
+
@respuestas[i] = @exam.responder(i)
|
29
|
+
end
|
30
|
+
@respondido = true
|
31
|
+
when "3"
|
32
|
+
a = 0
|
33
|
+
puts "Calificacion"
|
34
|
+
for i in 0..@n_preguntas do
|
35
|
+
if @respuestas[i] == true
|
36
|
+
puts "#{i}) Correcta"
|
37
|
+
a = a+1
|
38
|
+
else
|
39
|
+
puts "#{i}) Incorrecta"
|
40
|
+
end
|
41
|
+
puts "Tu puntuacion total es de #{(a/n_preguntas)*10}"
|
42
|
+
end
|
43
|
+
when 0
|
44
|
+
exit
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
class Nodo
|
2
|
+
attr_reader :val, :siguiente, :prev
|
3
|
+
attr_writer :val, :siguiente, :prev
|
4
|
+
def initialize (val,sig,prev)
|
5
|
+
@val = val
|
6
|
+
@siguiente = sig
|
7
|
+
@prev = prev
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class ListaEnlazada
|
12
|
+
include Enumerable
|
13
|
+
attr_reader :head, :tail
|
14
|
+
attr_writer :head, :tail
|
15
|
+
|
16
|
+
def <=> (anOther)
|
17
|
+
@actual.val <=> anOther.actual.val
|
18
|
+
end
|
19
|
+
def each
|
20
|
+
while @actual != nil do
|
21
|
+
yield @actual.val
|
22
|
+
@actual = @actual.siguiente
|
23
|
+
end
|
24
|
+
@actual = @head
|
25
|
+
end
|
26
|
+
def initialize (entrada)
|
27
|
+
@size = 0
|
28
|
+
|
29
|
+
@actual = Nodo.new(nil,nil,nil)
|
30
|
+
|
31
|
+
@head = Nodo.new(nil,nil,nil)
|
32
|
+
@tail = Nodo.new(nil,nil,nil)
|
33
|
+
@head = @tail
|
34
|
+
@tail = @head
|
35
|
+
push(entrada)
|
36
|
+
|
37
|
+
@actual = @head
|
38
|
+
end
|
39
|
+
def pop
|
40
|
+
aux = @head.val
|
41
|
+
@head = @head.siguiente
|
42
|
+
@size = @size-1
|
43
|
+
return aux
|
44
|
+
end
|
45
|
+
def pop_f
|
46
|
+
aux = @tail.val
|
47
|
+
@tail = @tail.siguiente
|
48
|
+
@size = @size-1
|
49
|
+
return aux
|
50
|
+
end
|
51
|
+
def push (val)
|
52
|
+
if val.instance_of? Array
|
53
|
+
for i in 0..val.length do
|
54
|
+
# (0..(val.length)).each do |i|
|
55
|
+
aux = Nodo.new(val[i],nil,nil)
|
56
|
+
if((@head == nil) and (@tail == nil))
|
57
|
+
@head = aux
|
58
|
+
@tail = @head
|
59
|
+
@size = @size + 1
|
60
|
+
else
|
61
|
+
@tail.siguiente = aux
|
62
|
+
aux.prev = @tail
|
63
|
+
@tail = aux
|
64
|
+
@size = @size + 1
|
65
|
+
end
|
66
|
+
end
|
67
|
+
else
|
68
|
+
aux = Nodo.new(val,nil,nil)
|
69
|
+
if((@head == nil) and (@tail == nil))
|
70
|
+
@head = aux
|
71
|
+
@tail = @head
|
72
|
+
@size = @size + 1
|
73
|
+
else
|
74
|
+
@tail.siguiente = aux
|
75
|
+
aux.prev = @tail
|
76
|
+
@tail = aux
|
77
|
+
@size = @size + 1
|
78
|
+
end
|
79
|
+
end
|
80
|
+
return true
|
81
|
+
end
|
82
|
+
def push_i (val)
|
83
|
+
if val.instance_of? Array
|
84
|
+
for i in 0..val.length do
|
85
|
+
# (0..(val.length)).each do |i|
|
86
|
+
aux = Nodo.new(val[i],nil,nil)
|
87
|
+
if((@head == nil) and (@tail == nil))
|
88
|
+
@head = aux
|
89
|
+
@tail = @head
|
90
|
+
@size = @size + 1
|
91
|
+
else
|
92
|
+
@head.prev = aux
|
93
|
+
aux.siguiente = @head
|
94
|
+
@head = aux
|
95
|
+
@size = @size + 1
|
96
|
+
end
|
97
|
+
end
|
98
|
+
else
|
99
|
+
aux = Nodo.new(val,nil,nil)
|
100
|
+
if((@head == nil) and (@tail == nil))
|
101
|
+
@head = aux
|
102
|
+
@tail = @head
|
103
|
+
@size = @size + 1
|
104
|
+
else
|
105
|
+
@head.prev = aux
|
106
|
+
aux.siguiente = @head
|
107
|
+
@head = aux
|
108
|
+
@size = @size + 1
|
109
|
+
end
|
110
|
+
end
|
111
|
+
return true
|
112
|
+
end
|
113
|
+
def imprime(nodo)
|
114
|
+
if (nodo != nil)
|
115
|
+
print "#{nodo.val} "
|
116
|
+
imprime(nodo.siguiente)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
def forPrint
|
120
|
+
imprime(@head)
|
121
|
+
puts ""
|
122
|
+
end
|
123
|
+
def my_while(condicion, &bloque)
|
124
|
+
while condicion.call
|
125
|
+
bloque.call
|
126
|
+
end
|
127
|
+
end
|
128
|
+
def inverse
|
129
|
+
aux = @tail
|
130
|
+
my_while -> {aux != nil} do
|
131
|
+
print "#{aux.val} "
|
132
|
+
aux = aux.prev
|
133
|
+
end
|
134
|
+
puts ""
|
135
|
+
end
|
136
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'multirespuesta'
|
2
|
+
require 'lista_enlazada'
|
3
|
+
|
4
|
+
describe MultiRespuesta do
|
5
|
+
before :each do
|
6
|
+
@resp = [5]
|
7
|
+
pregunta1 = "Cual es la salida del siguiente codigo en ruby?\n\tclass Xyz\n\t\tdef pots\n\t\t\t@nice\n\t\tend?\n\tend?\n\txyz = Xyz.new?\n\tp xyz.pots"
|
8
|
+
pregunta2 = "La siguiente definicion de un hash en Ruby es valida:\n\thash_raro = {\n\t\t[1,2,3] => Object.new(),\n\t\tHash.new => :toto\n\t}"
|
9
|
+
pregunta3 = "Cual es la salida del siguiente codigo Ruby?\n\tclass Array\n\t\tdef say_hi\n\t\t\t\"Hey!\"\n\t\tend\n\tend\n\tp [1, \"bob\"].say_hi"
|
10
|
+
pregunta4 = "Cual es el tipo de objeto en el siguiente codigo Ruby?\n\tclass Objeto\n\tend"
|
11
|
+
pregunta5 = "Es apropiado que una clase Tablero herede de una clase Juego"
|
12
|
+
preguntas = [pregunta1,pregunta2,pregunta3,pregunta4,pregunta5]
|
13
|
+
numeros = [4,2,4,4,2]
|
14
|
+
respuestas1 = ["#<Xyz:0xa000208>","nil","0","Ninguna de las anteriores"]
|
15
|
+
respuestas2 = ["Cierto","Falso"]
|
16
|
+
respuestas3 = ["1","Bob","HEY!","Ninguna de las anteriores"]
|
17
|
+
respuestas4 = ["Una instancia de la clase Class","Una constante","Un objeto","Ninguna de las anteriores"]
|
18
|
+
respuestas5 = ["Cierto","Falso"]
|
19
|
+
for i in 0..@resp.length
|
20
|
+
@resp[i] = MultiRespuesta.new("#{i}.-)#{preguntas[i]}",numeros[i],nil)
|
21
|
+
case i
|
22
|
+
when 1
|
23
|
+
@resp[i].introducir_resp(respuestas1)
|
24
|
+
when 2
|
25
|
+
@resp[i].introducir_resp(respuestas2)
|
26
|
+
when 3
|
27
|
+
@resp[i].introducir_resp(respuestas3)
|
28
|
+
when 4
|
29
|
+
@resp[i].introducir_resp(respuestas4)
|
30
|
+
when 5
|
31
|
+
@resp[i].introducir_resp(respuestas5)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
@lista = ListaEnlazada.new(@resp)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class MultiRespuesta
|
2
|
+
include Comparable
|
3
|
+
attr_reader :preg, :num, :resp, :correcta
|
4
|
+
attr_writer :preg, :num, :resp, :correcta
|
5
|
+
def <=> (anOther)
|
6
|
+
@num <=> anOther.num
|
7
|
+
end
|
8
|
+
def == (anOther)
|
9
|
+
@num == anOther.num && @preg == anOther.preg
|
10
|
+
end
|
11
|
+
def initialize(preg,num,correcta)
|
12
|
+
@resp = []
|
13
|
+
@num = num
|
14
|
+
@preg = preg
|
15
|
+
@correcta = correcta
|
16
|
+
end
|
17
|
+
def introducir_resp(resp)
|
18
|
+
for i in 0..(@num.to_i - 1)
|
19
|
+
@resp[i] = resp[i]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
def to_s
|
23
|
+
puts "#{@preg}?"
|
24
|
+
for i in 0..(@num-1) do
|
25
|
+
puts"#{i+1})#{@resp[i]}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
def correccion(respuesta_usuario)
|
29
|
+
if(respuesta_usuario == @correcta)
|
30
|
+
return true
|
31
|
+
else
|
32
|
+
return false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/spec/node_spec.rb
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'lista_enlazada'
|
3
|
+
|
4
|
+
describe ListaEnlazada do
|
5
|
+
before :each do
|
6
|
+
a = [3,5,6,7]
|
7
|
+
@nodo2 = Nodo.new(5,nil,nil)
|
8
|
+
@nodo1 = Nodo.new(3,@nodo2,nil)
|
9
|
+
@lista = ListaEnlazada.new(3)
|
10
|
+
end
|
11
|
+
describe "Valor de nodo1 = 3" do
|
12
|
+
it "Valor de nodo1 correcto" do
|
13
|
+
@nodo1.val.should eq(3)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
describe "Nodo siguiente a nodo1 = nodo2" do
|
17
|
+
it "Nodo siguiente correcto" do
|
18
|
+
@nodo1.siguiente.should eq(@nodo2)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
describe "Insercion de varios elementos" do
|
22
|
+
it "Insercion multiple correcta" do
|
23
|
+
a = [1,2,3]
|
24
|
+
@lista.push(a).should eq(true)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
describe "Insercion de un elemento" do
|
28
|
+
it "Insercion simple correcta" do
|
29
|
+
@lista.push(1).should eq(true)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
describe "Extraccion de un elemento" do
|
33
|
+
it "Extraccion simple correcta" do
|
34
|
+
@lista.pop.should eq(nil)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
describe "Consulta de cabeza" do
|
38
|
+
it "Consulta de cabeza correcta" do
|
39
|
+
@lista.head.val.should eq(nil)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
#module Enumerable
|
45
|
+
# describe "Enumerable" do
|
46
|
+
# it "Funciona collect" do
|
47
|
+
# @lista.collect{ |i| i.to_s + "x"}.should eq('3x')
|
48
|
+
# end
|
49
|
+
# it "Funciona sort" do
|
50
|
+
# @lista.sort.should eq(3)
|
51
|
+
# end
|
52
|
+
# it "Funciona max" do
|
53
|
+
# @lista.max.should eq(3)
|
54
|
+
# end
|
55
|
+
# it "Funciona min" do
|
56
|
+
# @lista.min.should eq (3)
|
57
|
+
# end
|
58
|
+
# end
|
59
|
+
#end
|
60
|
+
|
61
|
+
#describe "prueba" do
|
62
|
+
#module Enumerable
|
63
|
+
#By default is included in Array class
|
64
|
+
#r = [1,2,3,4,5,6].each{ |i| puts i}
|
65
|
+
#
|
66
|
+
#puts r
|
67
|
+
#
|
68
|
+
#r = [1,2,3,4,5,6].collect{ |i| i.to_s + "x"}
|
69
|
+
#
|
70
|
+
#puts r
|
71
|
+
#
|
72
|
+
#r = [1,2,3,4,5,6].detect{ |i| i.between?(2,3)}
|
73
|
+
#
|
74
|
+
#puts r
|
75
|
+
#
|
76
|
+
#r = [1,2,3,4,5,6].select{ |i| i.between?(3,5)}
|
77
|
+
#
|
78
|
+
#puts r
|
79
|
+
#
|
80
|
+
#r = [2,1,6,5,4,3].sort
|
81
|
+
#
|
82
|
+
#puts r
|
83
|
+
#
|
84
|
+
#r = [2,1,6,5,4,3].max
|
85
|
+
#
|
86
|
+
#puts r
|
87
|
+
#
|
88
|
+
#r = [2,1,6,5,4,3].min
|
89
|
+
#
|
90
|
+
#puts r
|
91
|
+
#end
|
data/spec/prct5_spec.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'prct5'
|
3
|
+
require 'multirespuesta'
|
4
|
+
|
5
|
+
describe MultiRespuesta do
|
6
|
+
before :each do
|
7
|
+
@multi = MultiRespuesta.new("Como me llamo",4,3)
|
8
|
+
@multi2 = MultiRespuesta.new("Eres canario",2,1)
|
9
|
+
end
|
10
|
+
describe "#Introducir pregunta" do
|
11
|
+
it "Introduccion de pregunta correcto" do
|
12
|
+
@multi.preg.should eq("Como me llamo")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
describe "#Introducir numero de respuestas" do
|
16
|
+
it "Numero de respuestas correctas" do
|
17
|
+
@multi.num.should eq(4)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
describe "#respuesta correcta" do
|
21
|
+
it "La respuesta correcta es" do
|
22
|
+
@multi.correcta.should eq(3)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
describe "#Introducir resuestas" do
|
26
|
+
it"Respuestas correctas" do
|
27
|
+
resp = ["Paco", "Pedro", "Carlos", "Adexe"]
|
28
|
+
@multi.introducir_resp(resp)
|
29
|
+
@multi.resp.should eq(["Paco", "Pedro", "Carlos", "Adexe"])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
describe "#Respuesta correcta? si" do
|
33
|
+
it "Respuesta correcta (Programa funciona correctamente)" do
|
34
|
+
@multi.correccion(3).should eq(true)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
describe "#Respuesta correcta? no" do
|
38
|
+
it "Respuesta incorrecta (Programa funciona correctamente)" do
|
39
|
+
@multi.correccion(2).should eq(false)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
describe "#Existen getters?" do
|
43
|
+
it "Responde al getter de preg" do
|
44
|
+
@multi.respond_to?("preg").should eq(true)
|
45
|
+
end
|
46
|
+
it "Responde al getter de resp" do
|
47
|
+
@multi.respond_to?("resp").should eq(true)
|
48
|
+
end
|
49
|
+
it "Responde al getter de num" do
|
50
|
+
@multi.respond_to?("num").should eq(true)
|
51
|
+
end
|
52
|
+
it "Responde al getter de correcta" do
|
53
|
+
@multi.respond_to?("correcta").should eq(true)
|
54
|
+
end
|
55
|
+
it "Responde al getter de introducir_resp" do
|
56
|
+
@multi.respond_to?("introducir_resp").should eq(true)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
describe "Comparable" do
|
60
|
+
it "Mas respuestas" do
|
61
|
+
a = @multi > @multi2
|
62
|
+
a.should eq(true)
|
63
|
+
end
|
64
|
+
it "Mas respuestas falso" do
|
65
|
+
a = @multi2 > @multi
|
66
|
+
a.should eq(false)
|
67
|
+
end
|
68
|
+
it "Menos respuestas" do
|
69
|
+
a = @multi2 < @multi
|
70
|
+
a.should eq(true)
|
71
|
+
end
|
72
|
+
it "Menos respuestas falso" do
|
73
|
+
a = @multi < @multi2
|
74
|
+
a.should eq(false)
|
75
|
+
end
|
76
|
+
it "Pregunta igual" do
|
77
|
+
multi3 = MultiRespuesta.new("Eres canario",2,1)
|
78
|
+
a = multi3 == @multi2
|
79
|
+
a.should eq(true)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/spec/preg2.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#Ejercicio 1
|
2
|
+
class Xyz
|
3
|
+
def pots
|
4
|
+
@nice
|
5
|
+
end
|
6
|
+
end
|
7
|
+
xyz = Xyz.new
|
8
|
+
p xyz.pots
|
9
|
+
|
10
|
+
#Ejercicio 2
|
11
|
+
hash_raro = {
|
12
|
+
[1, 2, 3] => Object.new(),
|
13
|
+
Hash.new => :toto
|
14
|
+
}
|
15
|
+
|
16
|
+
#Ejercicio 3
|
17
|
+
class Array
|
18
|
+
def say_hi
|
19
|
+
"HEY!"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
p [1, "bob"].say_hi
|
23
|
+
|
24
|
+
|
25
|
+
#Ejercicio 4
|
26
|
+
class Objeto
|
27
|
+
end
|
28
|
+
puts Objeto.class #Modificación creada para comprobar la clase del objeto...
|
29
|
+
|
30
|
+
#Ejercicio 5
|
31
|
+
|
data/spec/preg2_spec.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'preg2'
|
3
|
+
|
4
|
+
#Prueba ejercicio 1
|
5
|
+
#describe Xyz do
|
6
|
+
# before :each do
|
7
|
+
# @resp = Xyz.new()
|
8
|
+
# end
|
9
|
+
# describe "Salida apartado 1" do
|
10
|
+
# it "Valor de apartado 1 correcto" do
|
11
|
+
# @resp.should eq(nil)
|
12
|
+
# end
|
13
|
+
# end
|
14
|
+
#end
|
15
|
+
#
|
16
|
+
#Prueba ejercicio 2
|
17
|
+
#describe "Prueba hash raro" do
|
18
|
+
# it "Hash raro es correcto" do
|
19
|
+
# hash_raro = {
|
20
|
+
# [1, 2, 3] => Object.new(),
|
21
|
+
# Hash.new => :toto
|
22
|
+
# }
|
23
|
+
# hash_raro.should eq("{[1, 2, 3]=>#<Object:0x00000000e96678>, {}=>:toto}")
|
24
|
+
# end
|
25
|
+
#end
|
26
|
+
|
27
|
+
|
28
|
+
#Prueba ejercicio 3
|
29
|
+
describe Array do
|
30
|
+
before :each do
|
31
|
+
@Array = Array.new()
|
32
|
+
end
|
33
|
+
describe "Salida apartado 3" do
|
34
|
+
it "Valor de apartado 3 correcto" do
|
35
|
+
@Array.say_hi.should eq("HEY!")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
#Prueba ejercicio 4
|
41
|
+
describe Objeto do
|
42
|
+
before :each do
|
43
|
+
@Objeto = Objeto.new()
|
44
|
+
end
|
45
|
+
describe "Salida apartado 4" do
|
46
|
+
it "Valor de apartado 4 correcto" do
|
47
|
+
@Objeto.class.should eq(Objeto)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
#Prueba ejercicio 5
|
53
|
+
|
data/spec/quiz1.rb
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
#require './preg'
|
3
|
+
class Answer
|
4
|
+
attr_accessor :kind, :order, :answer
|
5
|
+
def initialize(order, kind, answer)
|
6
|
+
@kind = kind
|
7
|
+
@order = order
|
8
|
+
@answer = answer
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_s
|
12
|
+
"#{@order} - #{answer}"
|
13
|
+
end
|
14
|
+
def is_right?
|
15
|
+
@kind == Quiz::RIGHT
|
16
|
+
end
|
17
|
+
def <=>(other)
|
18
|
+
self.order <=> other.order
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Question
|
23
|
+
ORDER = 0
|
24
|
+
KIND = 1
|
25
|
+
attr_accessor :text, :answers
|
26
|
+
def initialize(text, answers)
|
27
|
+
@text = text
|
28
|
+
@answers = answers.map { |k, v| Answer.new(k[ORDER], k[KIND], v) }.sort
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_s
|
32
|
+
output = <<"EOQ"
|
33
|
+
#{@text}
|
34
|
+
#{
|
35
|
+
out = ""
|
36
|
+
@answers.each do |answer|
|
37
|
+
out << " #{answer}\n"
|
38
|
+
end
|
39
|
+
out
|
40
|
+
}
|
41
|
+
EOQ
|
42
|
+
end
|
43
|
+
def ask
|
44
|
+
begin
|
45
|
+
puts self
|
46
|
+
print "Su respuesta: "
|
47
|
+
answerno = gets.to_i - 1
|
48
|
+
end while (answerno < 0 or answerno >= @answers.length)
|
49
|
+
@answers[answerno].is_right?
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class Quiz
|
54
|
+
RIGHT = :right
|
55
|
+
WRONG = :wrong
|
56
|
+
|
57
|
+
attr_accessor :name, :questions
|
58
|
+
|
59
|
+
def initialize(name = "", &block)
|
60
|
+
self.name = name
|
61
|
+
self.questions = []
|
62
|
+
@counter = 0
|
63
|
+
instance_eval &block
|
64
|
+
end
|
65
|
+
|
66
|
+
def question(text, answers)
|
67
|
+
q = Question.new(text, answers)
|
68
|
+
questions << q
|
69
|
+
@counter = 0
|
70
|
+
end
|
71
|
+
|
72
|
+
def to_s
|
73
|
+
out = <<"EOQUIZ"
|
74
|
+
#{self.name}
|
75
|
+
#{self.questions.join("\n")}
|
76
|
+
EOQUIZ
|
77
|
+
end
|
78
|
+
|
79
|
+
def wrong
|
80
|
+
@counter += 1
|
81
|
+
[@counter, WRONG]
|
82
|
+
end
|
83
|
+
|
84
|
+
def right
|
85
|
+
@counter+= 1
|
86
|
+
[@counter, RIGHT]
|
87
|
+
end
|
88
|
+
|
89
|
+
def title(title)
|
90
|
+
@name = title
|
91
|
+
end
|
92
|
+
|
93
|
+
def run
|
94
|
+
counter=0
|
95
|
+
puts self.name+"\n\n"
|
96
|
+
self.questions.each { |q| counter += 1 if q.ask }
|
97
|
+
puts "#{counter} respuestas correctas de un total de #{@questions.size}."
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
quiz = Quiz.new("Cuestionario de LPP 10/12/2014") do
|
102
|
+
question '¿Cuántos argumentos de tipo bloque puede recibir un método?',
|
103
|
+
right =>'Uno',
|
104
|
+
wrong =>'Dos',
|
105
|
+
wrong =>'Muchos',
|
106
|
+
wrong =>'Los que defina el usuario'
|
107
|
+
question 'En Ruby los bloque son objetos que continen código',
|
108
|
+
wrong =>'Cierto',
|
109
|
+
right =>'Falso'
|
110
|
+
end
|
111
|
+
# puts quiz
|
112
|
+
puts "************************"
|
113
|
+
quiz.run
|
114
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#require 'coveralls'
|
2
|
+
#Coveralls.wear!
|
3
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
4
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
5
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
6
|
+
# loaded once.
|
7
|
+
#
|
8
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
11
|
+
config.run_all_when_everything_filtered = true
|
12
|
+
config.filter_run :focus
|
13
|
+
# Run specs in random order to surface order dependencies. If you find an
|
14
|
+
# order dependency and want to debug it, you can fix the order by providing
|
15
|
+
# the seed, which is printed after each run.
|
16
|
+
# --seed 1234
|
17
|
+
config.order = 'random'
|
18
|
+
end
|