From: daigo Date: Sat, 26 Jun 2010 06:14:14 +0000 (+0900) Subject: Added some module functions related to DateTime or Time. X-Git-Tag: 20170902~118 X-Git-Url: http://git.sourceforge.jp/view?p=shogi-server%2Fshogi-server.git;a=commitdiff_plain;h=79a2333cd6a75b0b0bfebb04be8c86ba2f5a6418;hp=202e6b27a892a055d62138947635712e477c00de;ds=sidebyside Added some module functions related to DateTime or Time. --- diff --git a/shogi_server/util.rb b/shogi_server/util.rb index ebf8c9d..cd477af 100644 --- a/shogi_server/util.rb +++ b/shogi_server/util.rb @@ -17,6 +17,7 @@ ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +require 'date' require 'fileutils' require 'pathname' @@ -67,4 +68,28 @@ module ShogiServer end module_function :is_writable_file? + # Convert a DateTime insntace to a Time instance. + # + def datetime2time(dt) + return Time.mktime dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec + end + module_function :datetime2time + + # Convert a Time instance to a DateTime instance + # + def time2datetime(time) + return DateTime.new(time.year, time.mon, time.mday, + time.hour, time.min, time.sec) + end + module_function :time2datetime + + # Parse string representing a day-of-week and return a coresponding + # integer value: 1 (Monday) - 7 (Sunday) + # + def parse_dow(str) + index = Date::DAYNAMES.index(str) || Date::ABBR_DAYNAMES.index(str) + return nil if index.nil? + return index == 0 ? 7 : index + end + module_function :parse_dow end diff --git a/test/TC_ALL.rb b/test/TC_ALL.rb index c8463be..9c2f290 100644 --- a/test/TC_ALL.rb +++ b/test/TC_ALL.rb @@ -22,3 +22,4 @@ require 'TC_player' require 'TC_rating' require 'TC_uchifuzume' require 'TC_usi' +require 'TC_util' diff --git a/test/TC_util.rb b/test/TC_util.rb new file mode 100644 index 0000000..d3d4931 --- /dev/null +++ b/test/TC_util.rb @@ -0,0 +1,37 @@ +$:.unshift File.join(File.dirname(__FILE__), "..") +require 'test/unit' +require 'shogi_server/util' + +class TestShogiServer < Test::Unit::TestCase + + def test_datetime2time + now = DateTime.new(2010, 6, 10, 21, 20, 15) # Thu + + assert_instance_of Time, ShogiServer::datetime2time(now) + assert_equal Time.mktime(2010, 6, 10, 21, 20, 15), ShogiServer::datetime2time(now) + end + + def test_time2datetime + now = Time.mktime(2010, 6, 10, 21, 20, 15) + assert_instance_of DateTime, ShogiServer::time2datetime(now) + assert_equal DateTime.new(2010, 6, 10, 21, 20, 15), ShogiServer::time2datetime(now) + end + + def test_parse_dow + assert_equal 7, ShogiServer.parse_dow("Sun") + assert_equal 1, ShogiServer.parse_dow("Mon") + assert_equal 2, ShogiServer.parse_dow("Tue") + assert_equal 3, ShogiServer.parse_dow("Wed") + assert_equal 4, ShogiServer.parse_dow("Thu") + assert_equal 5, ShogiServer.parse_dow("Fri") + assert_equal 6, ShogiServer.parse_dow("Sat") + assert_equal 7, ShogiServer.parse_dow("Sunday") + assert_equal 1, ShogiServer.parse_dow("Monday") + assert_equal 2, ShogiServer.parse_dow("Tuesday") + assert_equal 3, ShogiServer.parse_dow("Wednesday") + assert_equal 4, ShogiServer.parse_dow("Thursday") + assert_equal 5, ShogiServer.parse_dow("Friday") + assert_equal 6, ShogiServer.parse_dow("Saturday") + end + +end