| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: false | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-30 19:29:18 +02:00
										 |  |  | require "lazy_object" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe LazyObject do | 
					
						
							|  |  |  |   describe "#initialize" do | 
					
						
							|  |  |  |     it "does not evaluate the block" do | 
					
						
							|  |  |  |       expect { |block| | 
					
						
							|  |  |  |         described_class.new(&block) | 
					
						
							|  |  |  |       }.not_to yield_control | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "when receiving a message" do | 
					
						
							|  |  |  |     it "evaluates the block" do | 
					
						
							|  |  |  |       expect(described_class.new { 42 }.to_s).to eq "42" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#!" do | 
					
						
							|  |  |  |     it "delegates to the underlying object" do | 
					
						
							|  |  |  |       expect(!(described_class.new { false })).to be true | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#!=" do | 
					
						
							|  |  |  |     it "delegates to the underlying object" do | 
					
						
							|  |  |  |       expect(described_class.new { 42 }).not_to eq 13
 | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#==" do | 
					
						
							|  |  |  |     it "delegates to the underlying object" do | 
					
						
							|  |  |  |       expect(described_class.new { 42 }).to eq 42
 | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |