27 lines
		
	
	
		
			829 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			27 lines
		
	
	
		
			829 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require "requirements" | ||
|  | 
 | ||
|  | describe Requirements do | ||
|  |   describe "#<<" do | ||
|  |     it "returns itself" do | ||
|  |       expect(subject << Object.new).to be(subject) | ||
|  |     end | ||
|  | 
 | ||
|  |     it "merges duplicate requirements" do | ||
|  |       subject << X11Requirement.new << X11Requirement.new | ||
|  |       expect(subject.count).to eq(1) | ||
|  |       subject << Requirement.new | ||
|  |       expect(subject.count).to eq(2) | ||
|  |     end | ||
|  | 
 | ||
|  |     it "prefers the larger requirement when merging duplicates" do | ||
|  |       subject << X11Requirement.new << X11Requirement.new("x11", %w[2.6]) | ||
|  |       expect(subject.to_a).to eq([X11Requirement.new("x11", %w[2.6])]) | ||
|  |     end | ||
|  | 
 | ||
|  |     it "does not use the smaller requirement when merging duplicates" do | ||
|  |       subject << X11Requirement.new("x11", %w[2.6]) << X11Requirement.new | ||
|  |       expect(subject.to_a).to eq([X11Requirement.new("x11", %w[2.6])]) | ||
|  |     end | ||
|  |   end | ||
|  | end |