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

ruby-changes:40446

From: naruse <ko1@a...>
Date: Wed, 11 Nov 2015 02:51:02 +0900 (JST)
Subject: [ruby-changes:40446] naruse:r52527 (trunk): Add tests for rb_time_timespec_new

naruse	2015-11-11 02:50:38 +0900 (Wed, 11 Nov 2015)

  New Revision: 52527

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

  Log:
    Add tests for rb_time_timespec_new

  Added directories:
    trunk/ext/-test-/time/
    trunk/test/-ext-/time/
  Added files:
    trunk/ext/-test-/time/extconf.rb
    trunk/ext/-test-/time/init.c
    trunk/ext/-test-/time/new.c
    trunk/test/-ext-/time/test_new.rb
Index: ext/-test-/time/init.c
===================================================================
--- ext/-test-/time/init.c	(revision 0)
+++ ext/-test-/time/init.c	(revision 52527)
@@ -0,0 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ext/-test-/time/init.c#L1
+#include "ruby.h"
+
+#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);}
+
+void
+Init_time(void)
+{
+    VALUE mBug = rb_define_module("Bug");
+    VALUE klass = rb_define_class_under(mBug, "Time", rb_cTime);
+    TEST_INIT_FUNCS(init);
+}
Index: ext/-test-/time/extconf.rb
===================================================================
--- ext/-test-/time/extconf.rb	(revision 0)
+++ ext/-test-/time/extconf.rb	(revision 52527)
@@ -0,0 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ext/-test-/time/extconf.rb#L1
+$INCFLAGS << " -I$(topdir) -I$(top_srcdir)"
+$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
+inits = $srcs.map {|s| File.basename(s, ".*")}
+inits.delete("init")
+inits.map! {|s|"X(#{s})"}
+$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
+create_makefile("-test-/time")
Index: ext/-test-/time/new.c
===================================================================
--- ext/-test-/time/new.c	(revision 0)
+++ ext/-test-/time/new.c	(revision 52527)
@@ -0,0 +1,34 @@ https://github.com/ruby/ruby/blob/trunk/ext/-test-/time/new.c#L1
+#include "ruby.h"
+
+static VALUE
+bug_time_s_nano_new(VALUE klass, VALUE sec, VALUE nsec)
+{
+    return rb_time_nano_new(NUM2TIMET(sec), NUM2LONG(nsec));
+}
+
+static VALUE
+bug_time_s_timespec_new(VALUE klass, VALUE sec, VALUE nsec, VALUE gmtoff)
+{
+    struct timespec ts;
+    ts.tv_sec = NUM2TIMET(sec);
+    ts.tv_nsec = NUM2LONG(nsec);
+    return rb_time_timespec_new(&ts, NUM2INT(gmtoff));
+}
+
+static VALUE
+bug_time_s_timespec_now(VALUE klass)
+{
+    struct timespec ts;
+    VALUE v;
+    rb_timespec_now(&ts);
+    v = rb_Rational(LONG2NUM(ts.tv_nsec), LONG2NUM(1000000000L));
+    return rb_num_coerce_bin(TIMET2NUM(ts.tv_sec), v, '+');
+}
+
+void
+Init_new(VALUE klass)
+{
+    rb_define_singleton_method(klass, "nano_new", bug_time_s_nano_new, 2);
+    rb_define_singleton_method(klass, "timespec_new", bug_time_s_timespec_new, 3);
+    rb_define_singleton_method(klass, "timespec_now", bug_time_s_timespec_now, 0);
+}
Index: test/-ext-/time/test_new.rb
===================================================================
--- test/-ext-/time/test_new.rb	(revision 0)
+++ test/-ext-/time/test_new.rb	(revision 52527)
@@ -0,0 +1,39 @@ https://github.com/ruby/ruby/blob/trunk/test/-ext-/time/test_new.rb#L1
+require 'test/unit'
+require "-test-/time"
+
+class  Bug::Time::Test_New < Test::Unit::TestCase
+  def test_nano_new
+    assert_equal(Time.at(1447087832, 476451.125), Bug::Time.nano_new(1447087832, 476451125))
+    assert_not_equal(Time.at(1447087832, 476451.325), Bug::Time.nano_new(1447087832, 476451125))
+    assert_equal(false, Bug::Time.nano_new(1447087832, 476451125).utc?)
+  end
+
+  def assert_time_equal(a, b, msg=nil)
+    assert_equal(a, b, msg)
+    assert_equal(a.gmtoff, b.gmtoff, msg)
+    assert_equal(a.utc?, b.utc?, msg)
+  end
+
+  def test_timespec_new
+    assert_time_equal(Time.at(1447087832, 476451.125).localtime(32400),
+                 Bug::Time.timespec_new(1447087832, 476451125, 32400))
+    assert_not_equal(Time.at(1447087832, 476451.128).localtime(32400),
+                 Bug::Time.timespec_new(1447087832, 476451125, 32400))
+    assert_equal(false, Bug::Time.timespec_new(1447087832, 476451125, 0).utc?)
+    assert_equal(true, Bug::Time.timespec_new(1447087832, 476451125, 0x7fffffff).utc?)
+    assert_equal(false, Bug::Time.timespec_new(1447087832, 476451125, 0x7ffffffe).utc?)
+    assert_equal(Time.now.gmtoff, Bug::Time.timespec_new(1447087832, 476451125, 0x7ffffffe).gmtoff)
+    assert_time_equal(Time.at(1447087832, 476451.125).localtime(86399),
+                 Bug::Time.timespec_new(1447087832, 476451125, 86399))
+    assert_time_equal(Time.at(1447087832, 476451.125).localtime(-86399),
+                 Bug::Time.timespec_new(1447087832, 476451125, -86399))
+    assert_raise(ArgumentError){Bug::Time.timespec_new(1447087832, 476451125, 86400)}
+    assert_raise(ArgumentError){Bug::Time.timespec_new(1447087832, 476451125,-86400)}
+  end
+
+  def test_timespec_new
+    t0 = Time.now.to_r
+    t = Bug::Time.timespec_now
+    assert_in_delta 3, t0, t
+  end
+end

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

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