danica 2.7.4 → 2.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +28 -0
  3. data/.gitignore +6 -1
  4. data/.rubocop.yml +9 -0
  5. data/.rubocop_todo.yml +100 -0
  6. data/Dockerfile +26 -0
  7. data/Gemfile +2 -1
  8. data/Rakefile +4 -0
  9. data/config/rubycritc.rb +12 -0
  10. data/config/yardstick.rb +13 -0
  11. data/config/yardstick.yml +33 -0
  12. data/danica.gemspec +14 -7
  13. data/docker-compose.yml +14 -9
  14. data/lib/danica.rb +2 -1
  15. data/lib/danica/base_operations.rb +2 -0
  16. data/lib/danica/builder.rb +2 -0
  17. data/lib/danica/common.rb +5 -2
  18. data/lib/danica/dsl.rb +8 -6
  19. data/lib/danica/dsl/builder.rb +3 -1
  20. data/lib/danica/equation.rb +3 -3
  21. data/lib/danica/equation/builder.rb +2 -0
  22. data/lib/danica/exception.rb +3 -2
  23. data/lib/danica/expressable.rb +14 -8
  24. data/lib/danica/expression.rb +4 -2
  25. data/lib/danica/expression/gauss.rb +5 -5
  26. data/lib/danica/formatted.rb +4 -2
  27. data/lib/danica/function.rb +5 -3
  28. data/lib/danica/function/name.rb +2 -0
  29. data/lib/danica/operator.rb +12 -9
  30. data/lib/danica/operator/addition.rb +4 -3
  31. data/lib/danica/operator/chained.rb +4 -3
  32. data/lib/danica/operator/cos.rb +2 -1
  33. data/lib/danica/operator/division.rb +2 -1
  34. data/lib/danica/operator/exponential.rb +2 -1
  35. data/lib/danica/operator/functional.rb +3 -2
  36. data/lib/danica/operator/multiplication.rb +4 -2
  37. data/lib/danica/operator/power.rb +4 -3
  38. data/lib/danica/operator/sin.rb +2 -1
  39. data/lib/danica/operator/squared_root.rb +2 -1
  40. data/lib/danica/variables_holder.rb +7 -4
  41. data/lib/danica/variables_holder/alias_builder.rb +4 -4
  42. data/lib/danica/variables_holder/calculator.rb +2 -0
  43. data/lib/danica/variables_holder/store.rb +3 -2
  44. data/lib/danica/variables_holder/variables_builder.rb +2 -1
  45. data/lib/danica/version.rb +3 -1
  46. data/lib/danica/wrapper.rb +11 -9
  47. data/lib/danica/wrapper/constant.rb +9 -14
  48. data/lib/danica/wrapper/container.rb +2 -3
  49. data/lib/danica/wrapper/group.rb +2 -2
  50. data/lib/danica/wrapper/negative.rb +2 -1
  51. data/lib/danica/wrapper/number.rb +4 -3
  52. data/lib/danica/wrapper/plus_minus.rb +2 -1
  53. data/lib/danica/wrapper/variable.rb +10 -8
  54. data/scripts/check_readme.sh +6 -0
  55. data/scripts/rubycritic.sh +10 -0
  56. data/spec/integration/global/danica/formatted_spec.rb +87 -0
  57. data/spec/integration/global/danica/operator/addition_spec.rb +32 -0
  58. data/spec/integration/{multiplication_spec.rb → global/danica/operator/multiplication_spec.rb} +12 -9
  59. data/spec/integration/{power_spec.rb → global/danica/operator/power_spec.rb} +4 -2
  60. data/spec/integration/{negative_spec.rb → global/danica/wrapper/negative_spec.rb} +9 -8
  61. data/spec/integration/{plus_minus_spec.rb → global/danica/wrapper/plus_minus_spec.rb} +5 -4
  62. data/spec/integration/readme/constant_spec.rb +4 -1
  63. data/spec/integration/readme/danica/formatted_spec.rb +24 -0
  64. data/spec/integration/readme/danica_spec.rb +20 -4
  65. data/spec/integration/readme/equation_spec.rb +4 -2
  66. data/spec/integration/readme/expression_spec.rb +11 -8
  67. data/spec/integration/readme/function_spec.rb +11 -7
  68. data/spec/integration/readme/number_spec.rb +9 -8
  69. data/spec/integration/readme/operator_spec.rb +3 -1
  70. data/spec/integration/readme/variables_spec.rb +8 -6
  71. data/spec/lib/danica/common_spec.rb +23 -9
  72. data/spec/lib/danica/dsl_spec.rb +5 -2
  73. data/spec/lib/danica/equation_spec.rb +10 -8
  74. data/spec/lib/danica/expressable_spec.rb +5 -2
  75. data/spec/lib/danica/expression/gauss_spec.rb +6 -3
  76. data/spec/lib/danica/expression_spec.rb +48 -26
  77. data/spec/lib/danica/formatted_spec.rb +20 -14
  78. data/spec/lib/danica/function/name_spec.rb +3 -1
  79. data/spec/lib/danica/function_spec.rb +14 -10
  80. data/spec/lib/danica/operator/addition_spec.rb +16 -15
  81. data/spec/lib/danica/operator/cos_spec.rb +9 -8
  82. data/spec/lib/danica/operator/division_spec.rb +18 -17
  83. data/spec/lib/danica/operator/exponential_spec.rb +9 -8
  84. data/spec/lib/danica/operator/multiplication_spec.rb +16 -15
  85. data/spec/lib/danica/operator/power_spec.rb +17 -16
  86. data/spec/lib/danica/operator/sin_spec.rb +9 -8
  87. data/spec/lib/danica/operator/squared_root_spec.rb +9 -8
  88. data/spec/lib/danica/operator_spec.rb +13 -4
  89. data/spec/lib/danica/variables_holder/store_spec.rb +19 -13
  90. data/spec/lib/danica/variables_holder_spec.rb +76 -59
  91. data/spec/lib/danica/wrapper/constant_spec.rb +9 -2
  92. data/spec/lib/danica/wrapper/group_spec.rb +4 -1
  93. data/spec/lib/danica/wrapper/negative_spec.rb +4 -1
  94. data/spec/lib/danica/wrapper/number_spec.rb +8 -3
  95. data/spec/lib/danica/wrapper/plus_minus_spec.rb +4 -1
  96. data/spec/lib/danica/wrapper/variable_spec.rb +6 -3
  97. data/spec/lib/danica/wrapper_spec.rb +14 -12
  98. data/spec/lib/danica_spec.rb +6 -5
  99. data/spec/spec_helper.rb +2 -1
  100. data/spec/support/models/expression/baskara.rb +3 -3
  101. data/spec/support/models/expression/parabole.rb +2 -0
  102. data/spec/support/models/expression/quadratic_sum.rb +3 -1
  103. data/spec/support/models/expression/spatial.rb +2 -1
  104. data/spec/support/models/function/my_function.rb +3 -1
  105. data/spec/support/models/function/parabole.rb +1 -1
  106. data/spec/support/models/function/quadratic_sum.rb +2 -0
  107. data/spec/support/models/function/spatial.rb +2 -0
  108. data/spec/support/models/operator/inverse.rb +3 -1
  109. data/spec/support/models/operator/my_operator.rb +3 -1
  110. data/spec/support/models/variables_holder/dummy.rb +3 -1
  111. data/spec/support/shared_contexts/common.rb +4 -2
  112. data/spec/support/shared_examples/base_operations.rb +7 -4
  113. data/spec/support/shared_examples/common.rb +3 -1
  114. data/spec/support/shared_examples/operator/chained.rb +12 -6
  115. data/spec/support/shared_examples/operator/dual_term.rb +9 -8
  116. data/spec/support/shared_examples/operator/single_input.rb +7 -2
  117. data/spec/support/shared_examples/variable.rb +8 -4
  118. metadata +109 -30
  119. data/spec/integration/addition_spec.rb +0 -28
  120. data/spec/integration/formatted_spec.rb +0 -75
  121. data/spec/integration/readme/formatting_spec.rb +0 -34
@@ -1,22 +1,24 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Danica::Equation do
6
+ subject do
7
+ clazz.new
8
+ end
9
+
4
10
  let(:clazz) do
5
11
  described_class.build(:x, :y) do
6
12
  left { y }
7
- right { x ** 2 }
13
+ right { x**2 }
8
14
  end
9
15
  end
10
16
 
11
- subject do
12
- clazz.new
13
- end
14
-
15
17
  it_behaves_like 'an object that respond to basic_methods'
16
18
 
17
19
  describe '.build' do
18
20
  it 'returns a class that is also an equation' do
19
- expect(subject).to be_a(Danica::Equation)
21
+ expect(subject).to be_a(described_class)
20
22
  end
21
23
  end
22
24
 
@@ -24,12 +26,12 @@ describe Danica::Equation do
24
26
  subject do
25
27
  described_class.create(:x, :y) do
26
28
  left { y }
27
- right { x ** 2 }
29
+ right { x**2 }
28
30
  end
29
31
  end
30
32
 
31
33
  it 'returns a class that is also an equation' do
32
- expect(subject).to be_a(Danica::Equation)
34
+ expect(subject).to be_a(described_class)
33
35
  end
34
36
  end
35
37
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  class Danica::Expressable::Dummy
@@ -9,12 +11,13 @@ class Danica::Expressable::Dummy
9
11
  end
10
12
 
11
13
  describe Danica::Expressable do
12
- let(:clazz) { described_class::Dummy }
13
14
  subject do
14
15
  clazz.create(:x) { x }
15
16
  end
16
17
 
17
- it_behaves_like 'an object that respond to basic_methods', ignore: %i(valued? container? is_grouped? priority)
18
+ let(:clazz) { described_class::Dummy }
19
+
20
+ it_behaves_like 'an object that respond to basic_methods', ignore: %i[valued? container? is_grouped? priority]
18
21
 
19
22
  describe '.build' do
20
23
  it 'responds to build' do
@@ -1,6 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Danica::Expression::Gauss do
6
+ subject { described_class::Gauss.new(variables) }
7
+
4
8
  let(:variables) do
5
9
  {
6
10
  x: :x,
@@ -9,12 +13,11 @@ describe Danica::Expression::Gauss do
9
13
  }
10
14
  end
11
15
 
12
- subject { described_class::Gauss.new(variables) }
13
16
  it_behaves_like 'an object that respond to basic_methods'
14
17
 
15
18
  describe '#to_tex' do
16
19
  context 'when creating the spatial operator for constantly accelerated movement' do
17
- let(:expected) { '\frac{1}{\theta \cdot \sqrt{2 \cdot \pi}} \cdot e^{-\frac{\left(x -u\right)^{2}}{2 \cdot \theta^{2}}}' }
20
+ let(:expected) { '\frac{1}{\theta \cdot \sqrt{2 \cdot \pi}} \cdot e^{-\frac{\left(x -u\right)^{2}}{2 \cdot \theta^{2}}}' }
18
21
 
19
22
  it 'return the latex format CAM' do
20
23
  expect(subject.to_tex).to eq(expected)
@@ -36,7 +39,7 @@ describe Danica::Expression::Gauss do
36
39
  subject { described_class::Gauss.new }
37
40
 
38
41
  describe '#to_tex' do
39
- let(:expected) { '\frac{1}{\sigma \cdot \sqrt{2 \cdot \pi}} \cdot e^{-\frac{\left(x -\mu\right)^{2}}{2 \cdot \sigma^{2}}}' }
42
+ let(:expected) { '\frac{1}{\sigma \cdot \sqrt{2 \cdot \pi}} \cdot e^{-\frac{\left(x -\mu\right)^{2}}{2 \cdot \sigma^{2}}}' }
40
43
 
41
44
  it 'rely on default variables definition' do
42
45
  expect(subject.to_tex).to eq(expected)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  shared_examples 'a generically generated expression' do
@@ -25,18 +27,20 @@ shared_examples 'a generically generated expression' do
25
27
  end
26
28
 
27
29
  describe Danica::Expression do
28
- let(:variables) { %i(x y) }
30
+ subject { expression }
31
+
32
+ let(:variables) { %i[x y] }
29
33
  let(:expression_class) do
30
34
  described_class.build(*variables) do
31
35
  Danica::Operator::Power.new(x, y)
32
36
  end
33
37
  end
34
- subject { expression }
35
38
 
36
39
  describe '.build' do
37
40
  let(:expression) do
38
41
  expression_class.new
39
42
  end
43
+
40
44
  it_behaves_like 'an object with basic operation'
41
45
  it_behaves_like 'an object that respond to basic_methods'
42
46
  it_behaves_like 'a generically generated expression'
@@ -84,7 +88,7 @@ describe Danica::Expression do
84
88
  it_behaves_like 'an object that respond to basic_methods'
85
89
 
86
90
  it 'has the defined variables on class definition' do
87
- expect(expression_class.variables_names).to eq([:x, :y])
91
+ expect(expression_class.variables_names).to eq(%i[x y])
88
92
  end
89
93
 
90
94
  it 'has the defined variables' do
@@ -114,12 +118,15 @@ describe Danica::Expression do
114
118
  Danica::Operator::Power.new(x, y)
115
119
  end
116
120
  end
121
+
117
122
  it_behaves_like 'an object with basic operation'
118
123
  it_behaves_like 'an object that respond to basic_methods'
119
124
  it_behaves_like 'a generically generated expression'
120
125
  end
121
126
 
122
127
  describe 'spatial' do
128
+ subject { described_class::Spatial.new(variables) }
129
+
123
130
  let(:variables) do
124
131
  {
125
132
  time: :t,
@@ -129,13 +136,12 @@ describe Danica::Expression do
129
136
  }
130
137
  end
131
138
 
132
- subject { described_class::Spatial.new(variables) }
133
139
  it_behaves_like 'an object with basic operation'
134
140
  it_behaves_like 'an object that respond to basic_methods'
135
141
 
136
142
  describe '#to_tex' do
137
143
  context 'when creating the spatial operator for constantly accelerated movement' do
138
- let(:expected) { 'S_0 + V_0 \cdot t + \frac{a \cdot t^{2}}{2}' }
144
+ let(:expected) { 'S_0 + V_0 \cdot t + \frac{a \cdot t^{2}}{2}' }
139
145
 
140
146
  it 'return the latex format CAM' do
141
147
  expect(subject.to_tex).to eq(expected)
@@ -145,7 +151,7 @@ describe Danica::Expression do
145
151
 
146
152
  describe '#to_gnu' do
147
153
  context 'when creating the spatial operator for constantly accelerated movement' do
148
- let(:expected) { 'S0 + V0 * t + (a * t**(2))/(2)' }
154
+ let(:expected) { 'S0 + V0 * t + (a * t**(2))/(2)' }
149
155
 
150
156
  it 'return the latex format CAM' do
151
157
  expect(subject.to_gnu).to eq(expected)
@@ -158,13 +164,14 @@ describe Danica::Expression do
158
164
  {
159
165
  time: Danica::Wrapper::Variable.new(name: :t),
160
166
  acceleration: Danica::Wrapper::Variable.new(name: 'a'),
161
- initial_space: Danica::Wrapper::Variable.new( name: :S0, latex: 'S_0' ),
162
- initial_velocity: Danica::Wrapper::Variable.new( name: :V0, latex: 'V_0' )
167
+ initial_space: Danica::Wrapper::Variable.new(name: :S0, latex: 'S_0'),
168
+ initial_velocity: Danica::Wrapper::Variable.new(name: :V0, latex: 'V_0')
163
169
  }
164
170
  end
165
171
 
166
172
  context 'when variables are already wrapped with Danica::Wrapper::Variable' do
167
173
  let(:variables) { expected }
174
+
168
175
  it 'returns a hash with the variabels' do
169
176
  expect(subject.variables_hash).to eq(expected)
170
177
  end
@@ -198,10 +205,11 @@ describe Danica::Expression do
198
205
  end
199
206
 
200
207
  context 'when initializing with array' do
201
- context 'as hash' do
202
- let(:variables) { [ :t, 'a', {name: :S0, latex: 'S_0'}, { name: :V0, latex: 'V_0' } ] }
208
+ context 'when variables contain hashes' do
203
209
  subject { described_class::Spatial.new(variables) }
204
210
 
211
+ let(:variables) { [:t, 'a', { name: :S0, latex: 'S_0' }, { name: :V0, latex: 'V_0' }] }
212
+
205
213
  it 'returns a hash with the variabels' do
206
214
  expect(subject.variables_hash).to eq(expected)
207
215
  end
@@ -209,21 +217,23 @@ describe Danica::Expression do
209
217
  end
210
218
 
211
219
  context 'when initializing with sequence' do
212
- context 'as hash' do
213
- let(:variables) { [ :t, 'a', {name: :S0, latex: 'S_0'}, { name: :V0, latex: 'V_0' } ] }
220
+ context 'when variables contain hashes' do
214
221
  subject { described_class::Spatial.new(*variables, {}) }
215
222
 
223
+ let(:variables) { [:t, 'a', { name: :S0, latex: 'S_0' }, { name: :V0, latex: 'V_0' }] }
224
+
216
225
  it 'returns a hash with the variabels' do
217
226
  expect(subject.variables_hash).to eq(expected)
218
227
  end
219
228
  end
220
229
  end
221
230
 
222
- context 'when initializing with variables array' do
223
- context 'as hash' do
224
- let(:variables) { [ :t, 'a', {name: :S0, latex: 'S_0'}, { name: :V0, latex: 'V_0' } ] }
231
+ context 'when initializing with variables hash' do
232
+ context 'when variables contain hashes' do
225
233
  subject { described_class::Spatial.new(variables: variables) }
226
234
 
235
+ let(:variables) { [:t, 'a', { name: :S0, latex: 'S_0' }, { name: :V0, latex: 'V_0' }] }
236
+
227
237
  it 'returns a hash with the variabels' do
228
238
  expect(subject.variables_hash).to eq(expected)
229
239
  end
@@ -234,7 +244,9 @@ describe Danica::Expression do
234
244
  describe '#variables' do
235
245
  context 'when initialized with an array of variables' do
236
246
  subject { described_class::Spatial.new(variables: variables.values) }
247
+
237
248
  let(:expected) { variables.values.map { |v| Danica::Wrapper::Variable.new(v.is_a?(Hash) ? v : { name: v }) } }
249
+
238
250
  it do
239
251
  expect(subject.variables.compact).to eq(expected)
240
252
  end
@@ -242,6 +254,7 @@ describe Danica::Expression do
242
254
 
243
255
  context 'when not initializing all variables' do
244
256
  subject { described_class::Spatial.new }
257
+
245
258
  let(:time) { Danica::Wrapper::Variable.new(name: :t) }
246
259
 
247
260
  context 'when initialized with an empty variable set' do
@@ -255,25 +268,32 @@ describe Danica::Expression do
255
268
  subject.time = time
256
269
  end
257
270
 
258
- it 'returns the list of variables merged default and new variables' do
259
- expect(subject.variables.compact).to eq([
271
+ let(:expected_variables) do
272
+ [
260
273
  time,
261
274
  Danica::Wrapper::Variable.new(name: :acceleration),
262
275
  Danica::Wrapper::Variable.new(name: :initial_space),
263
276
  Danica::Wrapper::Variable.new(name: :initial_velocity)
264
- ])
277
+ ]
278
+ end
279
+
280
+ it 'returns the list of variables merged default and new variables' do
281
+ expect(subject.variables.compact).to eq(expected_variables)
265
282
  end
266
283
  end
267
284
 
268
285
  context 'when initializing with a variable set' do
269
- let(:names) { [ :t, :a, :s0, :v0 ] }
270
- subject { described_class::Spatial.new *names }
286
+ subject { described_class::Spatial.new(*names) }
287
+
288
+ let(:names) { %i[t a s0 v0] }
271
289
 
272
290
  it 'returns the variables given oin initialization' do
273
291
  expect(subject.variables.map(&:name)).to eq(names)
274
292
  end
275
293
 
276
294
  context 'when initializing variables with a hash out of order' do
295
+ subject { described_class::Spatial.new variables }
296
+
277
297
  let(:variables) do
278
298
  {
279
299
  initial_velocity: :v0,
@@ -282,7 +302,6 @@ describe Danica::Expression do
282
302
  time: :t
283
303
  }
284
304
  end
285
- subject { described_class::Spatial.new variables }
286
305
 
287
306
  it 'returns the variables given on initialization' do
288
307
  expect(subject.variables.map(&:name)).to eq(names)
@@ -294,13 +313,15 @@ describe Danica::Expression do
294
313
 
295
314
  describe '#calculate' do
296
315
  context 'when all variables have value' do
316
+ subject { described_class::Spatial.new(time, acceleration, initial_space, initial_velocity) }
317
+
297
318
  let(:time_value) { 2 }
298
319
  let(:time) { time_value }
299
320
  let(:acceleration) { 3 }
300
321
  let(:initial_space) { 1 }
301
322
  let(:initial_velocity) { 1 }
302
- subject { described_class::Spatial.new(time, acceleration, initial_space, initial_velocity) }
303
- let(:expected) { initial_space + initial_velocity * time_value + acceleration * (time_value ** 2) / 2.0 }
323
+
324
+ let(:expected) { initial_space + initial_velocity * time_value + acceleration * (time_value**2) / 2.0 }
304
325
 
305
326
  it 'retuirns the calculated value' do
306
327
  expect(subject.calculate).to eq(expected)
@@ -313,7 +334,7 @@ describe Danica::Expression do
313
334
  expect { subject.calculate }.to raise_error(Danica::Exception::NotDefined)
314
335
  end
315
336
 
316
- context 'but calling calculate with a value for the variables' do
337
+ context 'when calling calculate with a value for the variables' do
317
338
  it 'calculate using the given value' do
318
339
  expect(subject.calculate(time_value)).to eq(expected)
319
340
  end
@@ -344,10 +365,11 @@ describe Danica::Expression do
344
365
  describe 'baskara' do
345
366
  context 'when using the default value for variables' do
346
367
  subject { described_class::Baskara.new }
368
+
347
369
  it_behaves_like 'an object that respond to basic_methods'
348
370
 
349
371
  describe '#to_tex' do
350
- let(:expected) { '\frac{-b \pm \sqrt{b^{2} -4 \cdot a \cdot c}}{2 \cdot a}' }
372
+ let(:expected) { '\frac{-b \pm \sqrt{b^{2} -4 \cdot a \cdot c}}{2 \cdot a}' }
351
373
 
352
374
  it 'return the latex format CAM' do
353
375
  expect(subject.to_tex).to eq(expected)
@@ -355,7 +377,7 @@ describe Danica::Expression do
355
377
  end
356
378
 
357
379
  describe '#to_gnu' do
358
- let(:expected) { '(-b + sqrt(b**(2) -4 * a * c))/(2 * a)' }
380
+ let(:expected) { '(-b + sqrt(b**(2) -4 * a * c))/(2 * a)' }
359
381
 
360
382
  it 'return the gnu format CAM' do
361
383
  expect(subject.to_gnu).to eq(expected)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  shared_examples 'a formatted result' do |output|
@@ -14,28 +16,31 @@ shared_examples('a formatted object that responds to basic operations') do |oper
14
16
  operations_map.each do |operation, (output, reverse_output)|
15
17
  describe(operation.to_s) do
16
18
  let(:result) { subject.public_send(operation, 2) }
19
+
17
20
  it_behaves_like 'a formatted result', output
18
21
 
19
22
  context 'when doing it backwards' do
20
23
  let(:result) { Danica::Wrapper::Number.new(2).public_send(operation, subject) }
24
+
21
25
  it_behaves_like 'a formatted result', reverse_output
22
26
  end
23
27
  end
24
28
  end
25
29
  end
26
30
  describe Danica::Formatted do
27
- let(:content) { Danica::Wrapper::Variable.new(latex: :V, gnuplot: :v) }
28
- let(:format) { :tex }
29
- let(:options) { {} }
30
31
  subject do
31
32
  described_class.new(content, format: format, **options)
32
33
  end
33
34
 
35
+ let(:content) { Danica::Wrapper::Variable.new(latex: :V, gnuplot: :v) }
36
+ let(:format) { :tex }
37
+ let(:options) { {} }
38
+
34
39
  describe '#repack' do
35
40
  let(:expression) { Danica::Wrapper::Number.new(1.0 / 3) }
36
41
 
37
42
  it do
38
- expect(subject.repack(expression)).to be_a(Danica::Formatted)
43
+ expect(subject.repack(expression)).to be_a(described_class)
39
44
  end
40
45
 
41
46
  context 'when there are options' do
@@ -63,7 +68,7 @@ describe Danica::Formatted do
63
68
  end
64
69
 
65
70
  context 'when variable has numeric value' do
66
- let(:content) { Danica::Wrapper::Number.new(1/3.0) }
71
+ let(:content) { Danica::Wrapper::Number.new(1 / 3.0) }
67
72
 
68
73
  it 'returns the formatted number' do
69
74
  expect(subject.to_s).to eq('0.3333333333333333')
@@ -80,13 +85,12 @@ describe Danica::Formatted do
80
85
  end
81
86
 
82
87
  describe 'operators' do
83
- it_behaves_like 'a formatted object that responds to basic operations', {
84
- :+ => ['V + 2', '2 + V'],
85
- :- => ['V -2', '2 -V'],
86
- :* => ['V \cdot 2', '2 \cdot V'],
87
- :/ => ['\frac{V}{2}', '\frac{2}{V}'],
88
- :** => ['V^{2}', '2^{V}']
89
- }
88
+ it_behaves_like 'a formatted object that responds to basic operations',
89
+ :+ => ['V + 2', '2 + V'],
90
+ :- => ['V -2', '2 -V'],
91
+ :* => ['V \cdot 2', '2 \cdot V'],
92
+ :/ => ['\frac{V}{2}', '\frac{2}{V}'],
93
+ :** => ['V^{2}', '2^{V}']
90
94
 
91
95
  describe '-@' do
92
96
  it do
@@ -123,7 +127,7 @@ describe Danica::Formatted do
123
127
 
124
128
  describe '#tex' do
125
129
  it do
126
- expect(subject.tex).to be_a(Danica::Formatted)
130
+ expect(subject.tex).to be_a(described_class)
127
131
  end
128
132
 
129
133
  context 'when original format is tex' do
@@ -138,6 +142,7 @@ describe Danica::Formatted do
138
142
 
139
143
  context 'when original format is gnu' do
140
144
  let(:format) { :gnu }
145
+
141
146
  it 'returns the tex string' do
142
147
  expect(subject.tex.to_s).to eq('V')
143
148
  end
@@ -150,7 +155,7 @@ describe Danica::Formatted do
150
155
 
151
156
  describe '#gnu' do
152
157
  it do
153
- expect(subject.gnu).to be_a(Danica::Formatted)
158
+ expect(subject.gnu).to be_a(described_class)
154
159
  end
155
160
 
156
161
  context 'when original format is tex' do
@@ -161,6 +166,7 @@ describe Danica::Formatted do
161
166
 
162
167
  context 'when original format is gnu' do
163
168
  let(:format) { :gnu }
169
+
164
170
  it 'returns the gnu string' do
165
171
  expect(subject.gnu.to_s).to eq('v')
166
172
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Danica::Function::Name do
4
- let(:x) { Danica::Wrapper::Variable.new(name: :x, latex: '\mu', gnuplot: 'u')}
6
+ let(:x) { Danica::Wrapper::Variable.new(name: :x, latex: '\mu', gnuplot: 'u') }
5
7
  let(:subject) { described_class.new(name: :f, variables: [x]) }
6
8
 
7
9
  it_behaves_like 'an object that respond to basic_methods'