require 'spec_helper' describe Picky::Generators::Partial::Infix do context 'default min' do let(:generator) { described_class.new } describe 'use_exact_for_partial?' do it 'returns false' do described_class.new.use_exact_for_partial?.should == false end end describe 'min' do it 'should return the right value' do generator.min.should == 1 end end # describe 'generate_from' do # it 'should generate the right index' do # generator.generate_from(florian: [1], flavia: [2]).should == { # florian: [1], # floria: [1], # lorian: [1], # flori: [1], # loria: [1], # orian: [1], # flor: [1], # lori: [1], # oria: [1], # rian: [1], # flo: [1], # lor: [1], # ori: [1], # ria: [1], # ian: [1], # fl: [1, 2], # lo: [1], # or: [1], # ri: [1], # ia: [1, 2], # an: [1], # f: [1, 2], # l: [1, 2], # o: [1], # r: [1], # i: [1, 2], # a: [1, 2], # n: [1], # flavia: [2], # flavi: [2], # lavia: [2], # flav: [2], # lavi: [2], # avia: [2], # fla: [2], # lav: [2], # avi: [2], # via: [2], # la: [2], # av: [2], # vi: [2], # v: [2] # } # end # it "should be fast" do # performance_of { generator.generate_from(florian: [1], flavia: [2]) }.should < 0.0001 # end # it "should handle duplicate ids" do # generator.generate_from(flo: [1], fla: [1]).should == { # flo: [1], # fl: [1], # lo: [1], # f: [1], # l: [1], # o: [1], # a: [1], # fla: [1], # la: [1], # } # end # end end context 'from set' do # describe 'negative min' do # before(:each) do # @generator = described_class.new min: -2 # end # it 'should generate the right index' do # @generator.generate_from(florian: [1], flavia: [2]).should == { # :florian => [1], # :floria => [1], # :lorian => [1], # :flavia => [2], # :flavi => [2], # :lavia => [2] # } # end # end context "large min" do before(:each) do @generator = described_class.new min: 10 end # describe 'generate_from' do # it 'should generate the right index' do # @generator.generate_from(florian: [1], :'01234567890' => [2]).should == { # :'01234567890' => [2], # :'0123456789' => [2], # :'1234567890' => [2] # } # end # end end context 'default max' do before(:each) do @generator = described_class.new min: 4 end describe 'max' do it 'should return the right value' do @generator.max.should == -1 end end describe 'min' do it 'should return the right value' do @generator.min.should == 4 end end # describe 'generate_from' do # it 'should generate the right index' do # @generator.generate_from( :florian => [1], :flavia => [2] ).should == { # :florian => [1], # :floria => [1], # :lorian => [1], # :flori => [1], # :loria => [1], # :orian => [1], # :flor => [1], # :lori => [1], # :oria => [1], # :rian => [1], # :flavia => [2], # :flavi => [2], # :lavia => [2], # :flav => [2], # :lavi => [2], # :avia => [2] # } # end # end # describe "a bigger example with disjunct symbols" do # before(:each) do # abc = ('A'..'Z').to_a + ('a'..'z').to_a # @index = {} # 52.times do |i| # @index[abc.join.to_sym] = [i] # character = abc.shift # abc << character # end # end # it "should be fast" do # performance_of { @generator.generate_from(@index) }.should < 0.07 # end # end # describe "a bigger example with almost identical symbols" do # before(:each) do # abc = ('A'..'Z').to_a + ('a'..'z').to_a # @index = {} # 52.times do |i| # @index[(abc.join + abc[i].to_s).to_sym] = [i] # end # end # it "should be fast" do # performance_of { @generator.generate_from(@index) }.should < 0.07 # end # end end context 'to set' do before(:each) do @generator = described_class.new min: 4, max: -2 end describe 'max' do it 'should return the right value' do @generator.max.should == -2 end end describe 'min' do it 'should return the right value' do @generator.min.should == 4 end end # describe 'generate_from' do # it 'should generate the right index' do # @generator.generate_from( :florian => [1], :flavia => [2] ).should == { # :floria => [1], # :lorian => [1], # :flori => [1], # :loria => [1], # :orian => [1], # :flor => [1], # :lori => [1], # :oria => [1], # :rian => [1], # :flavi => [2], # :lavia => [2], # :flav => [2], # :lavi => [2], # :avia => [2] # } # end # end end context 'min/max set' do before(:each) do @generator = described_class.new min: 4, max: 0 end describe 'max' do it 'should return the right value' do @generator.max.should == 0 end end describe 'min' do it 'should return the right value' do @generator.min.should == 4 end end # describe 'generate_from' do # it 'should generate the right index' do # @generator.generate_from( :florian => [1], :flavia => [2] ).should == {} # end # end end end end