質問するログイン新規登録

回答編集履歴

1

テストコードを追加

2020/04/04 05:31

投稿

hoshi-takanori
hoshi-takanori

スコア7903

answer CHANGED
@@ -58,4 +58,81 @@
58
58
  社会人です。
59
59
  ```
60
60
 
61
- また、余計なお世話ですが、年齢通りに進学しない人もいますし、大学に行かない人も、逆に大学を出てすぐに社会人にならない人もいますので、使いみちによってはその辺の配慮も必要かと存じます。
61
+ また、余計なお世話ですが、年齢通りに進学しない人もいますし、大学に行かない人も、逆に大学を出てすぐに社会人にならない人もいますので、使いみちによってはその辺の配慮も必要かと存じます。
62
+
63
+ ---
64
+
65
+ せっかく書いたので、テストコードを載せておきます。
66
+
67
+ ```ruby
68
+ # test_sample.rb
69
+ require 'test/unit'
70
+ require 'date'
71
+
72
+ class Sample
73
+ def self.age(birthday, today)
74
+ (today.strftime('%Y%m%d').to_i - birthday.strftime('%Y%m%d').to_i) / 10000
75
+ end
76
+
77
+ def self.schoolYear(birthday, today = Date.today)
78
+ toDate = Time.mktime(today.year - (today.month < 4 ? 1 : 0), 4, 1)
79
+ (toDate.strftime('%Y%m%d').to_i - birthday.strftime('%Y%m%d').to_i) / 10000
80
+ end
81
+ end
82
+
83
+ class TestSample < Test::Unit::TestCase
84
+ def test_age
85
+ assert_equal 20, Sample.age(Time.mktime(2000, 1, 1), Time.mktime(2020, 1, 1))
86
+
87
+ assert_equal 19, Sample.age(Time.mktime(2000, 1, 2), Time.mktime(2020, 1, 1))
88
+ assert_equal 20, Sample.age(Time.mktime(2000, 1, 2), Time.mktime(2020, 1, 2))
89
+ assert_equal 20, Sample.age(Time.mktime(2000, 1, 2), Time.mktime(2020, 1, 3))
90
+
91
+ assert_equal 19, Sample.age(Time.mktime(2000, 2, 28), Time.mktime(2020, 2, 27))
92
+ assert_equal 20, Sample.age(Time.mktime(2000, 2, 28), Time.mktime(2020, 2, 28))
93
+ assert_equal 20, Sample.age(Time.mktime(2000, 2, 28), Time.mktime(2020, 2, 29))
94
+ assert_equal 20, Sample.age(Time.mktime(2000, 2, 28), Time.mktime(2020, 3, 1))
95
+
96
+ assert_equal 19, Sample.age(Time.mktime(2000, 2, 29), Time.mktime(2020, 2, 28))
97
+ assert_equal 20, Sample.age(Time.mktime(2000, 2, 29), Time.mktime(2020, 2, 29))
98
+ assert_equal 20, Sample.age(Time.mktime(2000, 2, 29), Time.mktime(2020, 3, 1))
99
+
100
+ assert_equal 18, Sample.age(Time.mktime(2001, 2, 28), Time.mktime(2020, 2, 27))
101
+ assert_equal 19, Sample.age(Time.mktime(2001, 2, 28), Time.mktime(2020, 2, 28))
102
+ assert_equal 19, Sample.age(Time.mktime(2001, 2, 28), Time.mktime(2020, 2, 29))
103
+ assert_equal 19, Sample.age(Time.mktime(2001, 2, 28), Time.mktime(2020, 3, 1))
104
+
105
+ assert_equal 20, Sample.age(Time.mktime(2000, 2, 29), Time.mktime(2021, 2, 27))
106
+ assert_equal 20, Sample.age(Time.mktime(2000, 2, 29), Time.mktime(2021, 2, 28))
107
+ assert_equal 21, Sample.age(Time.mktime(2000, 2, 29), Time.mktime(2021, 3, 1))
108
+ end
109
+
110
+ def test_schoolYear
111
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 1, 1))
112
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 2, 29))
113
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 3, 31))
114
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 4, 1))
115
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 4, 2))
116
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 5, 1))
117
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 12, 31))
118
+
119
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 1, 1), Date.new(2020, 1, 1))
120
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 1, 1), Date.new(2020, 3, 31))
121
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 1, 1), Date.new(2020, 4, 1))
122
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 1, 1), Date.new(2020, 4, 2))
123
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 1, 1), Date.new(2020, 12, 31))
124
+
125
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 4, 1), Date.new(2020, 1, 1))
126
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 4, 1), Date.new(2020, 3, 31))
127
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 4, 1), Date.new(2020, 4, 1))
128
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 4, 1), Date.new(2020, 4, 2))
129
+ assert_equal 20, Sample.schoolYear(Time.mktime(2000, 4, 1), Date.new(2020, 12, 31))
130
+
131
+ assert_equal 18, Sample.schoolYear(Time.mktime(2000, 4, 2), Date.new(2020, 1, 1))
132
+ assert_equal 18, Sample.schoolYear(Time.mktime(2000, 4, 2), Date.new(2020, 3, 31))
133
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 4, 2), Date.new(2020, 4, 1))
134
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 4, 2), Date.new(2020, 4, 2))
135
+ assert_equal 19, Sample.schoolYear(Time.mktime(2000, 4, 2), Date.new(2020, 12, 31))
136
+ end
137
+ end
138
+ ```