| 
									
										
										
										
											2013-03-13 02:07:01 -05:00
										 |  |  | require 'testing_env' | 
					
						
							|  |  |  | require 'compilers' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 20:32:51 -05:00
										 |  |  | class CompilerQueueTests < Homebrew::TestCase | 
					
						
							| 
									
										
										
										
											2013-03-13 02:07:01 -05:00
										 |  |  |   FakeCompiler = Struct.new(:name, :priority) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def setup | 
					
						
							|  |  |  |     @q = CompilerQueue.new | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_shovel_returns_self | 
					
						
							|  |  |  |     assert_same @q, (@q << Object.new) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_empty | 
					
						
							| 
									
										
										
										
											2014-06-11 12:22:29 -05:00
										 |  |  |     assert_empty @q | 
					
						
							| 
									
										
										
										
											2013-03-13 02:07:01 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_queues_items | 
					
						
							|  |  |  |     a = FakeCompiler.new(:foo, 0) | 
					
						
							|  |  |  |     b = FakeCompiler.new(:bar, 0) | 
					
						
							|  |  |  |     @q << a << b | 
					
						
							|  |  |  |     assert_equal a, @q.pop | 
					
						
							|  |  |  |     assert_equal b, @q.pop | 
					
						
							|  |  |  |     assert_nil @q.pop | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_pops_items_by_priority | 
					
						
							|  |  |  |     a = FakeCompiler.new(:foo, 0) | 
					
						
							|  |  |  |     b = FakeCompiler.new(:bar, 0.5) | 
					
						
							|  |  |  |     c = FakeCompiler.new(:baz, 1) | 
					
						
							|  |  |  |     @q << a << b << c | 
					
						
							|  |  |  |     assert_equal c, @q.pop | 
					
						
							|  |  |  |     assert_equal b, @q.pop | 
					
						
							|  |  |  |     assert_equal a, @q.pop | 
					
						
							|  |  |  |     assert_nil @q.pop | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |