1 # -*- coding: utf-8 -*-
3 require File.dirname(__FILE__) + '/../spec_helper.rb'
7 describe FractionalArithmetic do
9 subject{ FractionalArithmetic.new }
11 before(:all) { @opt_pattern = %r! [+\-*]|div ! }
13 it_should_behave_like 'Arithmetic'
16 subject.should_receive(:fraction)
17 subject.__send__(:operand)
20 context 'create expression' do
21 (1..100).to_a.shuffle[1, 10].each do |n|
26 :numerator_min => 1, :numerator_max => 100,
27 :denominator_min => 2, :denominator_max => 100,
30 @problems = subject.generate(settings)
32 it { @problems.should have(1).problem }
33 it { @problems.first.split(@opt_pattern).should have(n).operands }
34 it { @problems.first.scan(@opt_pattern).should have(n-1).operator }
35 it { @problems.first.split(@opt_pattern).each {|operand| operand.should match(%r!/!) } }
40 context 'need parenthesis' do
41 %w[ * div ].each do |operator|
44 settings = { :operators => [operator], :minus => false }
45 @problems = subject.generate(settings)
47 it { @problems.first.split(operator)[1].should match(/\(.*\)/) }