[前][次][番号順一覧][スレッド一覧]

ruby-changes:18140

From: nobu <ko1@a...>
Date: Fri, 10 Dec 2010 18:31:37 +0900 (JST)
Subject: [ruby-changes:18140] Ruby:r30161 (trunk): * test/mkmf/base.rb (TestMkmf#config_value): extract macro value from

nobu	2010-12-10 18:12:33 +0900 (Fri, 10 Dec 2010)

  New Revision: 30161

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30161

  Log:
    * test/mkmf/base.rb (TestMkmf#config_value): extract macro value from
      config.h.
    * test/mkmf/test_sizeof.rb (TestMkmf::TestSizeof#test_sizeof_builtin),
     (TestMkmf::TestSizeof#test_sizeof_struct): more tests.

  Modified files:
    trunk/ChangeLog
    trunk/test/mkmf/base.rb
    trunk/test/mkmf/test_sizeof.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30160)
+++ ChangeLog	(revision 30161)
@@ -1,5 +1,11 @@
-Fri Dec 10 18:11:45 2010  Nobuyoshi Nakada  <nobu@r...>
+Fri Dec 10 18:12:31 2010  Nobuyoshi Nakada  <nobu@r...>
 
+	* test/mkmf/base.rb (TestMkmf#config_value): extract macro value from
+	  config.h.
+
+	* test/mkmf/test_sizeof.rb (TestMkmf::TestSizeof#test_sizeof_builtin),
+	 (TestMkmf::TestSizeof#test_sizeof_struct): more tests.
+
 	* lib/mkmf.rb (check_signedness): should use the prelude code.
 	  [ruby-dev:42731]
 
Index: test/mkmf/test_sizeof.rb
===================================================================
--- test/mkmf/test_sizeof.rb	(revision 30160)
+++ test/mkmf/test_sizeof.rb	(revision 30161)
@@ -2,10 +2,23 @@
 
 class TestMkmf
   class TestSizeof < TestMkmf
+    def setup
+      super
+      @sizeof_short = config_value("SIZEOF_SHORT").to_i
+      @sizeof_int = config_value("SIZEOF_INT").to_i
+      @sizeof_long = config_value("SIZEOF_LONG").to_i
+      @sizeof_long_long = config_value("SIZEOF_LONG_LONG").to_i
+      @sizeof___int64 = config_value("SIZEOF___INT64").to_i
+    end
+
     def test_sizeof_builtin
       %w[char short int long float double void*].each do |type|
         assert_kind_of(Integer, mkmf {check_sizeof(type)}, MKMFLOG)
       end
+      assert_operator(@sizeof_short, :<=, @sizeof_int)
+      assert_operator(@sizeof_int, :<=, @sizeof_long)
+      assert_operator(@sizeof_long, :<=, @sizeof_long_long) unless @sizeof_long_long.zero?
+      assert_equal(8, @sizeof___int64) unless @sizeof___int64.zero?
     end
 
     def test_sizeof_struct
@@ -13,6 +26,20 @@
         f.puts "typedef struct {char x;} test1_t;"
       }
       assert_equal(1, mkmf {check_sizeof("test1_t", "confdefs.h")}, MKMFLOG)
+
+      open("confdefs.h", "w") {|f|
+        f.puts "typedef struct {char x, y;} test1_t;"
+      }
+      assert_equal(2, mkmf {check_sizeof("test1_t", "confdefs.h")}, MKMFLOG)
+
+      open("confdefs.h", "w") {|f|
+        f.puts "typedef struct {int x;} test1_t;"
+      }
+      assert_equal(@sizeof_int, mkmf {check_sizeof("test1_t", "confdefs.h")}, MKMFLOG)
+      open("confdefs.h", "w") {|f|
+        f.puts "typedef struct {int x, y;} test1_t;"
+      }
+      assert_equal(2 * @sizeof_int, mkmf {check_sizeof("test1_t", "confdefs.h")}, MKMFLOG)
     end
   end
 end
Index: test/mkmf/base.rb
===================================================================
--- test/mkmf/base.rb	(revision 30160)
+++ test/mkmf/base.rb	(revision 30161)
@@ -39,4 +39,12 @@
   def mkmf(*args, &block)
     @mkmfobj.instance_eval(*args, &block)
   end
+
+  def config_value(name)
+    create_tmpsrc("---config-value=#{name}")
+    xpopen(cpp_command('')) do |f|
+      f.grep(/^---config-value=(.*)/) {return $1}
+    end
+    nil
+  end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]