* 2022-01-18 [ci skip]
[ruby-80x24.org.git] / test / mkmf / test_convertible.rb
blob1baf8928424901d2fdf12abc1c5422e6cc38f493
1 # frozen_string_literal: false
2 require_relative 'base'
4 class TestMkmf
5   class TestConvertible < TestMkmf
6     def test_typeof_builtin
7       ["", ["signed ", ""], "unsigned "].each do |signed, prefix|
8         %w[short int long].each do |type|
9           assert_equal((prefix || signed)+type,
10                        mkmf {convertible_int(signed+type)}, MKMFLOG)
11         end
12       end
13     end
15     def test_typeof_typedef
16       ["", ["signed ", ""], "unsigned "].each do |signed, prefix|
17         %w[short int long].each do |type|
18           open("confdefs.h", "w") {|f|
19             f.puts "typedef #{signed}#{type} test1_t;"
20           }
21           $defs.clear
22           assert_equal((prefix || signed)+type,
23                        mkmf {convertible_int("test1_t", "confdefs.h")}, MKMFLOG)
24           (u = signed[/^u/]) and u.upcase!
25           assert_include($defs, "-DTYPEOF_TEST1_T="+"#{prefix||signed}#{type}".quote)
26           assert_include($defs, "-DPRI_TEST1T_PREFIX=PRI_#{type.upcase}_PREFIX")
27           assert_include($defs, "-DTEST1T2NUM=#{u}#{type.upcase}2NUM")
28           assert_include($defs, "-DNUM2TEST1T=NUM2#{u}#{type.upcase}")
29         end
30       end
31     ensure
32       File.unlink("confdefs.h")
33     end
34   end
35 end