spec/iq_spec.rb in qlang-0.0.27 vs spec/iq_spec.rb in qlang-0.0.141
- old
+ new
@@ -1,70 +1,20 @@
require 'spec_helper'
describe Qlang do
describe Iq do
- def self.def_test(name, input, output)
- it name + '_def' do
- expect(Iq.execute(input)).to eq(output)
+ describe 'Matrix' do
+ it do
+ expect(Iq.execute('(1 2 3; 4 5 6)')).to eq('(1 2 3; 4 5 6)')
+ expect(Iq.execute('(1 2 3; 4 5 6) + (1 2 3; 4 5 6)')).to eq('(2 4 6; 8 10 12)')
+ expect(Iq.execute('(1 2 3; 4 5 6) - (2 4 1; 8 3 9)')).to eq('(-1 -2 2; -4 2 -3)')
+ expect(Iq.execute('(1 2; 3 4) * (1 2; 3 4)')).to eq('(7 10; 15 22)')
+ expect(Iq.execute('(1 2; 3 4) ** 2')).to eq('(7 10; 15 22)')
+ expect(Iq.execute('(1 2; 3 4) * (1 2)')).to eq('(5 11)')
end
end
- def self.cal_test(name, input, output)
- it name + '_cal' do
- expect(Iq.execute(input)).to eq(output)
- reset
- end
- end
-
- describe 'General' do
- cal_test('ex1', '2x', '2x')
- cal_test('ex2', 'x + x', '2x')
- cal_test('ex3', 'x * y', 'xy')
- end
-
- describe 'Matrix' do
- cal_test('ex1',
- '(1 2 3; 4 5 6)',
- '(1 2 3; 4 5 6)'
- )
-
- cal_test('ex2',
- '(1 2 3; 4 5 6) + (1 2 3; 4 5 6)',
- '(2 4 6; 8 10 12)'
- )
-
- cal_test('ex3',
- '(1 2 3; 4 5 6) - (2 4 1; 8 3 9)',
- '(-1 -2 2; -4 2 -3)'
- )
-
- cal_test('ex4',
- '(1 2; 3 4) * (1 2; 3 4)',
- '(7 10; 15 22)'
- )
-
- cal_test('ex5',
- '(1 2; 3 4) ** 2',
- '(7 10; 15 22)'
- )
-
- cal_test('ex6',
- '(1 2; 3 4) ** 2',
- '(7 10; 15 22)'
- )
-
- cal_test('ex7',
- '(1 2; 3 4) * (1 2)',
- '(5 11)'
- )
-
- cal_test('ex8',
- '(1 2 3; 4 5 6)t',
- '(1 4; 2 5; 3 6)'
- )
- end
-
describe 'Vector' do
it do
expect(Iq.execute('(1 2 3)')).to eq('(1 2 3)')
expect(Iq.execute('(1 2 3) + (1 2 3)')).to eq('(2 4 6)')
expect(Iq.execute('(1 2 3 ) + ( 1 2 3 )')).to eq('(2 4 6)')
@@ -77,65 +27,29 @@
end
end
describe 'Diff' do
it do
- expect(Iq.execute('d/dx(e ** x)')).to eq('e ^ x')
- expect(Iq.execute('d/dx(x ** 2)')).to eq('2x')
- expect(Iq.execute('d/dx(x * 2)')).to eq('2')
- expect(Iq.execute('d/dx( sin(x) )')).to eq('cos( x )')
- expect(Iq.execute('d/dx(log( x ))')).to eq('1 / x')
+ expect(Iq.execute('d/dx(e ** x)')).to eq(e ** x)
+ expect(Iq.execute('d/dx(x ** 2)')).to eq(2 * x)
+ expect(Iq.execute('d/dx(x * 2)')).to eq(2)
+ expect(Iq.execute('d/dx( sin(x) )')).to eq(cos(x))
+ expect(Iq.execute('d/dx(log( x ))')).to eq(1/x)
end
- cal_test('ex1', 'd/dx cos(x)', '- sin( x )')
- cal_test('ex2', 'd/dx xx', '2x')
end
describe 'Integral' do
it do
expect(Iq.execute('S( log(x)dx )[0..1]')).to eq('-oo')
- expect(Iq.execute('S( sin(x)dx )[0..pi]')).to eq('2.0')
- expect(Iq.execute('S( cos(x)dx )[0..pi]')).to eq('0.0')
- expect(Iq.execute('S( cos(x)dx )[0..pi]')).to eq('0.0')
+ expect(Iq.execute('S( sin(x)dx )[0..pi]')).to eq(2.0)
+ expect(Iq.execute('S( cos(x)dx )[0..pi]')).to eq(0.0)
end
- cal_test('ex1', 'S(xx dx)[0..1]', '0.33333333')
- cal_test('ex2', 'S(2pi dx)[0..1]', '6.28318531')
end
describe 'Function' do
- def_test('ex1', 'f(x, y) = x + y', 'x + y')
- cal_test('ex1', 'f( 4, 5 )', '9.0')
-
- def_test('ex2', 'f( x , y) = xy', 'x * y')
- cal_test('ex2', 'f( 3, 9 )', '27.0')
-
- def_test('ex3', 'f(x, y) = xy^2', 'x * ( y ** 2 )')
- cal_test('ex3', 'f( 3, 2 )', '12.0')
-
- def_test('ex4', 'f(x, y) = xy^2', 'x * ( y ** 2 )')
- cal_test('ex4', 'df/dx', 'y ^ 2')
-
- def_test('ex5', 'g(x) = x ^ 2', 'x ** 2')
- cal_test('ex5', 'g(2)', '4.0')
-
- def_test('ex6', 'h(x) = e ^ 2', 'e ** 2')
- cal_test('ex6', 'h(2)', '7.3890560989306495')
-
- def_test('ex7', 'h(x) = pix', 'pi * x')
- cal_test('ex7', 'h(3)', '9.42477796076938')
-
- def_test('ex8', 'h(x) = pie', 'pi * e')
- cal_test('ex8', 'h(2)', '8.539734222673566')
-
- def_test('ex9', 'h(x) = ( 1 / ( 2pi ) ^ ( 1 / 2.0 ) ) * e ^ ( - x ^ 2 / 2 )', '( ( 4503599627370496 / 6369051672525773 ) / ( pi ** 0.5 ) ) * ( e ** ( ( - ( x ** 2 ) ) / 2 ) )')
- cal_test('ex9', 'S( h(x)dx )[-oo..oo]', '1.0')
-
- def_test('ex10', 'f(x) = sin(x)', 'sin( x )')
- cal_test('ex10', 'f(pi)', '0.0')
-
- def_test('ex11', 'f(x) = cos(x)', 'cos( x )')
- cal_test('ex11', 'f(pi)', '-1.0')
-
- def_test('ex11', 'f(x) = log(x)', 'log( x )')
- cal_test('ex11', 'f(e)', '1.0')
+ it do
+ expect(Iq.execute('f(x, y) = x + y')).to eq(f(x, y) <= x + y)
+ expect(Iq.execute('g(x) = x ** 2')).to eq(g(x) <= x ** 2)
+ end
end
end
end