matrix_disp 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.
@@ -0,0 +1,297 @@
1
+ #require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ require_relative 'spec_helper'
3
+
4
+
5
+ module Math
6
+ describe Fraccion do
7
+ before :each do
8
+ @c = Fraccion.new(10, 20)
9
+ end
10
+ #Primera prueba, quinto push al bitbucket.
11
+ # => Debe existir un numerador
12
+ context "1. Cuando se pida el numerador" do
13
+ it "este debe existir y debe ser del tipo Fixnum" do
14
+ expect(@c.num).to be_a_kind_of(Fixnum) #comprueba que lo que devuelve es un número
15
+ end
16
+ end
17
+ #Segunda prueba, 6º push al bitbucket.
18
+ # => Debe existir un denominador
19
+ context "2. Cuando se pida el denominador" do
20
+ it "este debe existir y debe ser del tipo Fixnum" do
21
+ expect(@c.denom).to be_a_kind_of(Fixnum) #comprueba que lo que devuelve es un número
22
+ end
23
+ end
24
+ #Tercera prueba, 7º push al bitbucket.
25
+ # => Debe de estar en su forma reducida
26
+ context "3. Cuando se cree un numero fraccionario" do
27
+ it "El constructor debe construirlo a la forma reducida" do
28
+ expect(@c.denom).to eq(2) #comprueba que al construir con denominador 20, lo reduce a 2
29
+ expect(@c.num).to eq(1) #comprueba que al construir con numerador 10, lo reduce a 1
30
+ end
31
+ end
32
+ #Cuarta prueba, 8º push
33
+ # => Se debe invocar al metodo num() para obtener el numerador
34
+ context "4. Si se quiere acceder al atributo del numerador" do
35
+ it "se debe invocar al metodo num()" do
36
+ expect(@c.num).to be_a_kind_of(Fixnum)
37
+ expect(@c.num).to eq(1)
38
+ end
39
+ end
40
+ #Quinta prueba, 9º push
41
+ # => Se debe invocar al metodo denom() para obtener el denominador
42
+ context "5. Si se quiere acceder al atributo del denominador" do
43
+ it "se debe invocar al metodo denom()" do
44
+ expect(@c.denom).to be_a_kind_of(Fixnum)
45
+ expect(@c.denom).to eq(2)
46
+ end
47
+ end
48
+
49
+ #Sexta prueba, 10º push
50
+ # => Se debe mostar por la consola la fraccion de la forma: a/b, donde a es el numerador y b el denominador
51
+ context "6. cuando se pida mostrar la fraccion" do
52
+ it "Se debe mostrar en la forma a/b, donde a es el numerador y b el denominador" do
53
+ expect(@c.to_s).to eql("#{@c.num}/#{@c.denom}") #comprueba que lo que devuelve la función es de la forma a/b
54
+ end
55
+ end
56
+ #Séptima prueba, 11º push
57
+ # => Se debe mostar por la consola la fraccion en formato flotante
58
+ context "7. cuando se pida mostrar la fraccion" do
59
+ it "Se debe mostrar en formato flotante" do
60
+ expect(@c.to_sf).to eq("#{@c.num.to_f}/#{@c.denom.to_f}") #comprueba que lo que devuelve la función es de la forma a.0/b.0
61
+ end
62
+ end
63
+
64
+ #Octava prueba, 12º push
65
+ # => Se debe comparar si dos fracciones son iguales con ==
66
+ context "8. Si se quieren comparar dos fracciones" do
67
+ it "Se debe hacer usando ==" do
68
+ d = Fraccion.new(20, 40)
69
+ expect(@c == d).to eq(true | false) #comprueba que la función de comparación devuelve true o false
70
+ expect(@c == d).to eq(true) #comprueba que en este caso, la función debe dar true
71
+ end
72
+ end
73
+ #Novena prueba, 13º push
74
+ # => Se debe calcular el valor absoluto de una fraccion con el metodo abs
75
+ context "9. Si se quiere calcular el valor absoluto de la fraccion" do
76
+ it "Se debe hacer usando abs" do
77
+ d = Fraccion.new(-10,-20)
78
+ d.abs
79
+ expect(d.num).to eq(1) #Comprueba que el valor obtenido es el valor absoluto y reducido del numerador
80
+ expect(d.denom).to eq(2) #Comprueba que el valor obtenido es el valor absoluto y reducido del denominador
81
+ end
82
+ end
83
+ #Décima prueba, 14º push
84
+ # => Se debe calcular el reciproco de una fraccion con el metodo reciprocal
85
+ context "10. Si se quiere calcular el reciproco de la fraccion" do
86
+ it "Se debe hacer usando abs" do
87
+ @c.reciprocal
88
+ expect(@c.num).to eq(2)
89
+ expect(@c.denom).to eq(1)
90
+ end
91
+ end
92
+ #11ª Prueba, 15º push
93
+ # => Se debe calcular el opuesto de una fraccion con -
94
+ context "11. Si se quiere calcular el opuesto de una fraccion" do
95
+ it "Se debe hacer usando -" do
96
+ -@c
97
+ expect(@c.num).to eq(-1)
98
+ expect(@c.denom).to eq(2)
99
+ end
100
+ end
101
+
102
+ #12ª prueba, 15º push
103
+ # => Se debe sumar dos fracciones con + y dar el resultado de forma reducida
104
+ context "12. Si se quieren sumar dos fracciones" do
105
+ it "se debe hacer usando + y el resultado debe estar en forma reducida" do
106
+ d = Fraccion.new(35,21)
107
+ resultado = @c + d
108
+ expect(resultado.num).to eq(13)
109
+ expect(resultado.denom).to eq(6)
110
+ end
111
+ end
112
+ #13ª prueba, 16º push
113
+ # => Se debe restar dos fracciones con - y dar el resultado de forma reducida
114
+ context "13. Si se quieren restar dos fracciones" do
115
+ it "se debe hacer usando - y el resultado debe estar en forma reducida" do
116
+ d = Fraccion.new(7,28)
117
+ resultado = @c - d
118
+ expect(resultado.num).to eq(1)
119
+ expect(resultado.denom).to eq(4)
120
+ end
121
+ end
122
+ #14ª prueba, 17º push
123
+ # => Se debe multiplicar dos fracciones con * y dar el resultado de forma reducida
124
+ context "14. Si se quieren multiplicar dos fracciones" do
125
+ it "se debe hacer usando * y el resultado debe estar en forma reducida" do
126
+ d = Fraccion.new(3,14)
127
+ resultado = @c * d
128
+ expect(resultado.num).to eq(3)
129
+ expect(resultado.denom).to eq(28)
130
+ end
131
+ end
132
+ #15ª prueba, 18º push
133
+ # => Se debe dividir dos fracciones con / y dar el resultado de forma reducida
134
+ context "15. Si se quieren dividir dos fracciones" do
135
+ it "se debe hacer usando / y el resultado debe estar en forma reducida" do
136
+ d = Fraccion.new(21,8)
137
+ resultado = @c / d
138
+ expect(resultado.num).to eq(4)
139
+ expect(resultado.denom).to eq(21)
140
+ end
141
+ end
142
+
143
+ #16ª prueba, 19º push
144
+ # => Se debe calcular el resto dos fracciones con % y dar el resultado de forma reducida
145
+ context "16. Si se quiere calcular el resto de dos fracciones" do
146
+ it "se debe hacer usando % y el resultado debe estar en forma reducida" do
147
+ d = Fraccion.new(21,8)
148
+ resultado = @c % d
149
+ expect(resultado).to eq(4)
150
+ end
151
+ end
152
+
153
+ context "PRUEBA DE CLASE: Si se quiere calcular el reciproco de una funcion partida por otra" do
154
+ it "se debe usar divReciprocal" do
155
+ d = Fraccion.new(1,34)
156
+ resultado = @c.divReciprocal(d)
157
+ expect(resultado.num).to eq(1)
158
+ expect(resultado.denom).to eq(17)
159
+ end
160
+ end
161
+ ######################################################
162
+ ######################################################
163
+ context "PRUEBA PRACTICA 7: Se debe poder usar el modulo comparable" do
164
+ d = Fraccion.new(1,34)
165
+ it "Con el operador <" do
166
+ expect(d < @c).to eq(true)
167
+ end
168
+ it "Con el operador >" do
169
+ expect(@c > d).to eq(true)
170
+ end
171
+ it "Con el operador <=" do
172
+ e = Fraccion.new(1,2)
173
+ expect(@c <= e).to eq(true)
174
+ end
175
+ it "Con el operador >=" do
176
+ expect(@c >= d).to eq(true)
177
+ end
178
+ it "Con el operador between?" do
179
+ e = Fraccion.new(5,16)
180
+ expect(e.between?(d, @c)).to eq(true)
181
+ end
182
+ end
183
+ ######################################################
184
+ ######################################################
185
+ end
186
+
187
+ describe SparseVector do
188
+ before :each do
189
+ @p = SparseVector.new ({ 1 => 10, 2 => 22, 3 => 33 })
190
+ @q = SparseVector.new ({ 1 => 10, 2 => 20, 3 => 30 })
191
+ end
192
+ #Se debe poder indexar
193
+ context "1. Si se quiere indexar cualquier elemento de la matriz" do
194
+ it "Debe hacerse mediante el operador []" do
195
+ expect(@p[2]).to be_a_kind_of(Fixnum)
196
+ expect(@p[2]).to eq(22)
197
+ end
198
+ end
199
+ #Debe poder sumar y restar
200
+ context "2. Deben poderse hacer las siguientes operaciones basicas:" do
201
+ it "2.3 Suma" do
202
+ a = @p + @q
203
+ expect(a[1]).to eq(20)
204
+ expect(a[2]).to eq(42)
205
+ expect(a[3]).to eq(63)
206
+ end
207
+ it "2.4 Resta" do
208
+ a = @p - @q
209
+ expect(a[1]).to eq(0)
210
+ expect(a[2]).to eq(2)
211
+ expect(a[3]).to eq(3)
212
+ end
213
+ end
214
+ end
215
+ describe SparseMatrix do
216
+ before :each do
217
+ @a = Fraccion.new(4,5)
218
+ @p = SparseMatrix.new 1000 => { 100 => @a, 500 => 200}, 20000 => { 1000 => 3, 9000 => 200}
219
+ @q = SparseMatrix.new 1500 => { 100 => @a, 500 => 20}, 20000 => { 1000 => 3, 9000 => 200}
220
+ end
221
+ #Se debe poder indexar
222
+ context "1. Si se quiere indexar cualquier elemento de la matriz" do
223
+ it "Debe hacerse mediante el operador []" do
224
+ expect(@p.matrix[1000][100]).to be_a_kind_of(Fraccion)
225
+ expect(@p.matrix[1000][500]).to eq(200)
226
+ end
227
+ end
228
+ #Debe poder sumar y restar
229
+ context "2. Deben poderse hacer las siguientes operaciones basicas:" do
230
+ it "2.3 Suma" do
231
+ a = @p + @q
232
+ expect(a.matrix[1000][100]).to eq(@a)
233
+ expect(a.matrix[20000][1000]).to eq(6)
234
+ end
235
+ it "2.4 Resta" do
236
+ a = @p - @q
237
+ expect(a.matrix[1000][100]).to eq(@a)
238
+ expect(a.matrix[20000][1000]).to eq(0)
239
+ end
240
+ end
241
+ end
242
+ describe Matriz do
243
+ before :each do
244
+
245
+ end
246
+ #Se debe poder indexar
247
+ context "1. Segun el numero de ceros," do
248
+ it "Una matriz debe ser dispersa o Densa" do
249
+ a = Matriz.new(3,3,[1,2,3,4,5,6,7,8,9])
250
+ b = a.def_tipo
251
+ expect(b.class).to eq(Math::DenseMatrix)
252
+ c = Matriz.new(3,3,[1,0,0,0,0,6,0,0,9])
253
+ d = c.def_tipo
254
+ expect(d.class).to eq(Math::SparseMatrix)
255
+ end
256
+ end
257
+ end
258
+ describe DenseMatrix do
259
+ before :each do
260
+ @p = DenseMatrix.new(3, 3,[1,2,3,4,5,6,7,8,9])
261
+ end
262
+ #Debe existir el operador []
263
+ context "1. Si se quiere indexar cualquier elemento de la matriz" do
264
+ it "Debe hacerse mediante el operador []" do
265
+ expect(@p[2,1]).to be_a_kind_of(Fixnum)
266
+ expect(@p[2,1]).to eq(6)
267
+ end
268
+ end
269
+ #Debe poder realizar las siguientes operaciones básicas:
270
+ context "2. Deben poderse hacer las siguientes operaciones basicas:" do
271
+ it "2.1 Multiplicacion" do
272
+ a = DenseMatrix.new(3, 3,[1,2,3,4,5,6,7,8,9])
273
+ b = a * @p
274
+ expect(b[1,1]).to be_a_kind_of(Fixnum)
275
+ expect(b[1,1]).to eq(81)
276
+ end
277
+ it "2.2 Division" do
278
+ a = DenseMatrix.new(3, 3,[1,2,3,4,5,6,7,8,9])
279
+ a[1,2] = 15
280
+ b = @p/a
281
+ expect(b[1,1]).to eq(52.5)
282
+ end
283
+ it "2.3 Suma" do
284
+ a = DenseMatrix.new(3, 3,[1,2,3,4,5,6,7,8,9])
285
+ b = []
286
+ b = a + @p
287
+ expect(b[4]).to eq(10)
288
+ end
289
+ it "2.4 Resta" do
290
+ a = DenseMatrix.new(3, 3,[1,2,3,4,5,6,7,8,9])
291
+ b = []
292
+ b = a - @p
293
+ expect(b[4]).to eq(0)
294
+ end
295
+ end
296
+ end
297
+ end
@@ -0,0 +1,257 @@
1
+ #require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ require_relative 'spec_helper'
3
+
4
+
5
+ module Math
6
+ describe Fraccion do
7
+ before :each do
8
+ @c = Fraccion.new(10, 20)
9
+ end
10
+ #Primera prueba, quinto push al bitbucket.
11
+ # => Debe existir un numerador
12
+ context "1. Cuando se pida el numerador" do
13
+ it "este debe existir y debe ser del tipo Fixnum" do
14
+ expect(@c.num).to be_a_kind_of(Fixnum) #comprueba que lo que devuelve es un número
15
+ end
16
+ end
17
+ #Segunda prueba, 6º push al bitbucket.
18
+ # => Debe existir un denominador
19
+ context "2. Cuando se pida el denominador" do
20
+ it "este debe existir y debe ser del tipo Fixnum" do
21
+ expect(@c.denom).to be_a_kind_of(Fixnum) #comprueba que lo que devuelve es un número
22
+ end
23
+ end
24
+ #Tercera prueba, 7º push al bitbucket.
25
+ # => Debe de estar en su forma reducida
26
+ context "3. Cuando se cree un numero fraccionario" do
27
+ it "El constructor debe construirlo a la forma reducida" do
28
+ expect(@c.denom).to eq(2) #comprueba que al construir con denominador 20, lo reduce a 2
29
+ expect(@c.num).to eq(1) #comprueba que al construir con numerador 10, lo reduce a 1
30
+ end
31
+ end
32
+ #Cuarta prueba, 8º push
33
+ # => Se debe invocar al metodo num() para obtener el numerador
34
+ context "4. Si se quiere acceder al atributo del numerador" do
35
+ it "se debe invocar al metodo num()" do
36
+ expect(@c.num).to be_a_kind_of(Fixnum)
37
+ expect(@c.num).to eq(1)
38
+ end
39
+ end
40
+ #Quinta prueba, 9º push
41
+ # => Se debe invocar al metodo denom() para obtener el denominador
42
+ context "5. Si se quiere acceder al atributo del denominador" do
43
+ it "se debe invocar al metodo denom()" do
44
+ expect(@c.denom).to be_a_kind_of(Fixnum)
45
+ expect(@c.denom).to eq(2)
46
+ end
47
+ end
48
+
49
+ #Sexta prueba, 10º push
50
+ # => Se debe mostar por la consola la fraccion de la forma: a/b, donde a es el numerador y b el denominador
51
+ context "6. cuando se pida mostrar la fraccion" do
52
+ it "Se debe mostrar en la forma a/b, donde a es el numerador y b el denominador" do
53
+ expect(@c.to_s).to eql("#{@c.num}/#{@c.denom}") #comprueba que lo que devuelve la función es de la forma a/b
54
+ end
55
+ end
56
+ #Séptima prueba, 11º push
57
+ # => Se debe mostar por la consola la fraccion en formato flotante
58
+ context "7. cuando se pida mostrar la fraccion" do
59
+ it "Se debe mostrar en formato flotante" do
60
+ expect(@c.to_sf).to eq("#{@c.num.to_f}/#{@c.denom.to_f}") #comprueba que lo que devuelve la función es de la forma a.0/b.0
61
+ end
62
+ end
63
+
64
+ #Octava prueba, 12º push
65
+ # => Se debe comparar si dos fracciones son iguales con ==
66
+ context "8. Si se quieren comparar dos fracciones" do
67
+ it "Se debe hacer usando ==" do
68
+ d = Fraccion.new(20, 40)
69
+ expect(@c == d).to eq(true | false) #comprueba que la función de comparación devuelve true o false
70
+ expect(@c == d).to eq(true) #comprueba que en este caso, la función debe dar true
71
+ end
72
+ end
73
+ #Novena prueba, 13º push
74
+ # => Se debe calcular el valor absoluto de una fraccion con el metodo abs
75
+ context "9. Si se quiere calcular el valor absoluto de la fraccion" do
76
+ it "Se debe hacer usando abs" do
77
+ d = Fraccion.new(-10,-20)
78
+ d.abs
79
+ expect(d.num).to eq(1) #Comprueba que el valor obtenido es el valor absoluto y reducido del numerador
80
+ expect(d.denom).to eq(2) #Comprueba que el valor obtenido es el valor absoluto y reducido del denominador
81
+ end
82
+ end
83
+ #Décima prueba, 14º push
84
+ # => Se debe calcular el reciproco de una fraccion con el metodo reciprocal
85
+ context "10. Si se quiere calcular el reciproco de la fraccion" do
86
+ it "Se debe hacer usando abs" do
87
+ @c.reciprocal
88
+ expect(@c.num).to eq(2)
89
+ expect(@c.denom).to eq(1)
90
+ end
91
+ end
92
+ #11ª Prueba, 15º push
93
+ # => Se debe calcular el opuesto de una fraccion con -
94
+ context "11. Si se quiere calcular el opuesto de una fraccion" do
95
+ it "Se debe hacer usando -" do
96
+ -@c
97
+ expect(@c.num).to eq(-1)
98
+ expect(@c.denom).to eq(2)
99
+ end
100
+ end
101
+
102
+ #12ª prueba, 15º push
103
+ # => Se debe sumar dos fracciones con + y dar el resultado de forma reducida
104
+ context "12. Si se quieren sumar dos fracciones" do
105
+ it "se debe hacer usando + y el resultado debe estar en forma reducida" do
106
+ d = Fraccion.new(35,21)
107
+ resultado = @c + d
108
+ expect(resultado.num).to eq(13)
109
+ expect(resultado.denom).to eq(6)
110
+ end
111
+ end
112
+ #13ª prueba, 16º push
113
+ # => Se debe restar dos fracciones con - y dar el resultado de forma reducida
114
+ context "13. Si se quieren restar dos fracciones" do
115
+ it "se debe hacer usando - y el resultado debe estar en forma reducida" do
116
+ d = Fraccion.new(7,28)
117
+ resultado = @c - d
118
+ expect(resultado.num).to eq(1)
119
+ expect(resultado.denom).to eq(4)
120
+ end
121
+ end
122
+ #14ª prueba, 17º push
123
+ # => Se debe multiplicar dos fracciones con * y dar el resultado de forma reducida
124
+ context "14. Si se quieren multiplicar dos fracciones" do
125
+ it "se debe hacer usando * y el resultado debe estar en forma reducida" do
126
+ d = Fraccion.new(3,14)
127
+ resultado = @c * d
128
+ expect(resultado.num).to eq(3)
129
+ expect(resultado.denom).to eq(28)
130
+ end
131
+ end
132
+ #15ª prueba, 18º push
133
+ # => Se debe dividir dos fracciones con / y dar el resultado de forma reducida
134
+ context "15. Si se quieren dividir dos fracciones" do
135
+ it "se debe hacer usando / y el resultado debe estar en forma reducida" do
136
+ d = Fraccion.new(21,8)
137
+ resultado = @c / d
138
+ expect(resultado.num).to eq(4)
139
+ expect(resultado.denom).to eq(21)
140
+ end
141
+ end
142
+
143
+ #16ª prueba, 19º push
144
+ # => Se debe calcular el resto dos fracciones con % y dar el resultado de forma reducida
145
+ context "16. Si se quiere calcular el resto de dos fracciones" do
146
+ it "se debe hacer usando % y el resultado debe estar en forma reducida" do
147
+ d = Fraccion.new(21,8)
148
+ resultado = @c % d
149
+ expect(resultado).to eq(4)
150
+ end
151
+ end
152
+
153
+ context "PRUEBA DE CLASE: Si se quiere calcular el reciproco de una funcion partida por otra" do
154
+ it "se debe usar divReciprocal" do
155
+ d = Fraccion.new(1,34)
156
+ resultado = @c.divReciprocal(d)
157
+ expect(resultado.num).to eq(1)
158
+ expect(resultado.denom).to eq(17)
159
+ end
160
+ end
161
+ ######################################################
162
+ ######################################################
163
+ context "PRUEBA PRACTICA 7: Se debe poder usar el modulo comparable" do
164
+ d = Fraccion.new(1,34)
165
+ it "Con el operador <" do
166
+ expect(d < @c).to eq(true)
167
+ end
168
+ it "Con el operador >" do
169
+ expect(@c > d).to eq(true)
170
+ end
171
+ it "Con el operador <=" do
172
+ e = Fraccion.new(1,2)
173
+ expect(@c <= e).to eq(true)
174
+ end
175
+ it "Con el operador >=" do
176
+ expect(@c >= d).to eq(true)
177
+ end
178
+ it "Con el operador between?" do
179
+ e = Fraccion.new(5,16)
180
+ expect(e.between?(d, @c)).to eq(true)
181
+ end
182
+ end
183
+ ######################################################
184
+ ######################################################
185
+ end
186
+
187
+ describe SparseVector do
188
+ before :each do
189
+ @p = SparseVector.new ({ 1 => 10, 2 => 22, 3 => 33 })
190
+ @q = SparseVector.new ({ 1 => 10, 2 => 20, 3 => 30 })
191
+ end
192
+ #Se debe poder indexar
193
+ context "1. Si se quiere indexar cualquier elemento de la matriz" do
194
+ it "Debe hacerse mediante el operador []" do
195
+ expect(@p[2]).to be_a_kind_of(Fixnum)
196
+ expect(@p[2]).to eq(22)
197
+ end
198
+ end
199
+ #Debe poder sumar y restar
200
+ context "2. Deben poderse hacer las siguientes operaciones basicas:" do
201
+ it "2.3 Suma" do
202
+ a = @p + @q
203
+ expect(a[1]).to eq(20)
204
+ expect(a[2]).to eq(42)
205
+ expect(a[3]).to eq(63)
206
+ end
207
+ it "2.4 Resta" do
208
+ a = @p - @q
209
+ expect(a[1]).to eq(0)
210
+ expect(a[2]).to eq(2)
211
+ expect(a[3]).to eq(3)
212
+ end
213
+ end
214
+ end
215
+ describe SparseMatrix do
216
+ before :each do
217
+ @a = Fraccion.new(4,5)
218
+ @p = SparseMatrix.new 1000 => { 100 => @a, 500 => 200}, 20000 => { 1000 => 3, 9000 => 200}
219
+ @q = SparseMatrix.new 1500 => { 100 => @a, 500 => 20}, 20000 => { 1000 => 3, 9000 => 200}
220
+ end
221
+ #Se debe poder indexar
222
+ context "1. Si se quiere indexar cualquier elemento de la matriz" do
223
+ it "Debe hacerse mediante el operador []" do
224
+ expect(@p.matrix[1000][100]).to be_a_kind_of(Fraccion)
225
+ expect(@p.matrix[1000][500]).to eq(200)
226
+ end
227
+ end
228
+ #Debe poder sumar y restar
229
+ context "2. Deben poderse hacer las siguientes operaciones basicas:" do
230
+ it "2.3 Suma" do
231
+ a = @p + @q
232
+ expect(a.matrix[1000][100]).to eq(@a)
233
+ expect(a.matrix[20000][1000]).to eq(6)
234
+ end
235
+ it "2.4 Resta" do
236
+ a = @p - @q
237
+ expect(a.matrix[1000][100]).to eq(@a)
238
+ expect(a.matrix[20000][1000]).to eq(0)
239
+ end
240
+ end
241
+ end
242
+ describe Matriz do
243
+ before :each do
244
+
245
+ end
246
+ #Se debe poder indexar
247
+ context "1. Segun el numero de ceros," do
248
+ it "Una matriz debe ser dispersa o Densa" do
249
+ a = Matriz.new(3,3,[1,2,3,4,5,6,7,8,9])
250
+ b = a.def_tipo
251
+ expect(b.class).to eq(Math::DenseMatrix)
252
+ c = Matriz.new(3,3,[1,0,0,0,0,6,0,0,9])
253
+ d = c.def_tipo
254
+ expect(d.class).to eq(Math::SparseMatrix)
255
+ end
256
+ end
257
+ end
@@ -0,0 +1,3 @@
1
+ #$: << File.join(File.dirname(__FILE__), "../lib")
2
+ require 'rspec'
3
+ require 'matrix_disp'
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: matrix_disp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jonás
8
+ - Sergio
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-11-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '1.3'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ description: Gema para realizar operaciones básicas con matrices (Tanto densas como
43
+ dispersas)
44
+ email:
45
+ - alu0100608359@ull.edu.es
46
+ executables:
47
+ - Practica9
48
+ extensions: []
49
+ extra_rdoc_files: []
50
+ files:
51
+ - .gitignore
52
+ - .travis.yml
53
+ - Gemfile
54
+ - Guardfile
55
+ - LICENSE.txt
56
+ - README.md
57
+ - Rakefile
58
+ - bin/Practica9
59
+ - lib/matrix_disp.rb
60
+ - lib/matrix_disp.rb~
61
+ - lib/matrix_disp/version.rb
62
+ - lib/matrix_disp/version.rb~
63
+ - matrix_disp.gemspec
64
+ - matrix_disp.gemspec~
65
+ - spec/matrix_disp_spec.rb
66
+ - spec/matrix_disp_spec.rb~
67
+ - spec/spec_helper.rb
68
+ homepage: ''
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 2.0.3
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: Gema para realizar operaciones básicas con matrices (Tanto densas como dispersas)
92
+ test_files:
93
+ - spec/matrix_disp_spec.rb
94
+ - spec/matrix_disp_spec.rb~
95
+ - spec/spec_helper.rb
96
+ has_rdoc: