1require_relative 'base' 2 3class TestMkmf 4 class TestLibs < TestMkmf 5 def test_split_libs 6 assert_equal(%w[-lfoo -lbar], split_libs("-lfoo -lbar")) 7 assert_equal(%w[-ObjC -framework\ Ruby], split_libs("-ObjC -framework Ruby"), 'Bug #6987') 8 end 9 10 def assert_in_order(array, x, y, mesg = nil) 11 mesg = "#{x} must proceed to #{y}#{': ' if mesg}#{mesg}" 12 assert_operator(array.index(x), :<, array.rindex(y), mesg) 13 end 14 15 def test_merge_simple 16 bug = '[ruby-dev:21765]' 17 assert_equal([], merge_libs(%w[])) 18 assert_equal(%w[a b], merge_libs(%w[a], %w[b])) 19 array = merge_libs(%w[a c], %w[b]) 20 assert_in_order(array, "a", "c", bug) 21 end 22 23 def test_merge_seq 24 bug = '[ruby-dev:21765]' 25 array = merge_libs(%w[a c d], %w[c b e]) 26 assert_in_order(array, "a", "c", bug) 27 assert_in_order(array, "c", "d", bug) 28 assert_in_order(array, "c", "b", bug) 29 assert_in_order(array, "b", "e", bug) 30 end 31 32 def test_merge_seq_pre 33 bug = '[ruby-dev:21765]' 34 array = merge_libs(%w[a c d], %w[b c d e]) 35 assert_in_order(array, "a", "c", bug) 36 assert_in_order(array, "c", "d", bug) 37 assert_in_order(array, "b", "c", bug) 38 assert_in_order(array, "d", "e", bug) 39 end 40 41 def test_merge_cyclic 42 bug = '[ruby-dev:21765]' 43 array = merge_libs(%w[a c d], %w[b c b]) 44 assert_in_order(array, "a", "c", bug) 45 assert_in_order(array, "c", "d", bug) 46 assert_in_order(array, "b", "c", bug) 47 assert_in_order(array, "c", "b", bug) 48 end 49 50 def test_merge_cyclic_2 51 bug = '[ruby-dev:21765]' 52 array = merge_libs(%w[a c a d], %w[b c b]) 53 assert_in_order(array, "a", "c", bug) 54 assert_in_order(array, "c", "a", bug) 55 assert_in_order(array, "c", "d", bug) 56 assert_in_order(array, "a", "d", bug) 57 assert_in_order(array, "b", "c", bug) 58 assert_in_order(array, "c", "b", bug) 59 end 60 61 def test_merge_reversal 62 bug = '[ruby-dev:22440]' 63 array = merge_libs(%w[a b c], %w[c d a]) 64 assert_in_order(array, "a", "b" , bug) 65 assert_in_order(array, "c", "d" , bug) 66 ## assume that a and c have no dependency 67 end 68 69 def test_merge_reversal_followed 70 bug7467 = '[ruby-core:50314] [Bug #7467]' 71 array = nil 72 assert_nothing_raised(bug7467) { 73 array = merge_libs(%w[a b c d e f g h], %w[d c d e], []) 74 } 75 assert_in_order(array, "a", "b", bug7467) 76 assert_in_order(array, "b", "c", bug7467) 77 assert_in_order(array, "c", "d", bug7467) 78 assert_in_order(array, "d", "e", bug7467) 79 assert_in_order(array, "e", "f", bug7467) 80 assert_in_order(array, "f", "g", bug7467) 81 assert_in_order(array, "g", "h", bug7467) 82 assert_in_order(array, "d", "c", bug7467) 83 assert_in_order(array, "c", "e", bug7467) 84 end 85 end 86end if RUBY_ENGINE == "ruby" 87