Created
December 29, 2013 23:06
-
-
Save koduki/8175811 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this license header, choose License Headers in Project Properties. | |
* To change this template file, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package pascal.orz.cn.sandbox.problem02; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.Locale; | |
/** | |
* | |
* @author koduki | |
*/ | |
public class Greeter { | |
public Greeter() { | |
} | |
public String greet(int hour, int minute, Locale locale) { | |
Time time = getTime(hour, minute); | |
String message = getMessage(time, locale); | |
return message; | |
} | |
public String greet(Date time, Locale locale) { | |
Calendar cal = Calendar.getInstance(); | |
cal.setTime(time); | |
return this.greet(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), locale); | |
} | |
String getMessage(Time time, Locale locale) { | |
String message; | |
if (Locale.JAPAN == locale) { | |
message = getMessageJP(time); | |
} else if (Locale.ENGLISH == locale) { | |
message = getMessageEN(time); | |
} else { | |
message = null; | |
} | |
return message; | |
} | |
String getMessageJP(Time time) { | |
String message; | |
switch (time) { | |
case MORNING: | |
message = "おはようございます"; | |
break; | |
case AFTERNOON: | |
message = "こんにちは"; | |
break; | |
case EVENING: | |
message = "こんばんは"; | |
break; | |
default: | |
message = null; | |
} | |
return message; | |
} | |
String getMessageEN(Time time) { | |
String message; | |
switch (time) { | |
case MORNING: | |
message = "Good Morning"; | |
break; | |
case AFTERNOON: | |
message = "Good Afternoon"; | |
break; | |
case EVENING: | |
message = "Good Evening"; | |
break; | |
default: | |
message = null; | |
} | |
return message; | |
} | |
Time getTime(int hour, int minute) throws IllegalArgumentException { | |
if (!(0 <= minute && minute <= 59)) { | |
throw new IllegalArgumentException("argument is from 00:00, to 23:59."); | |
} | |
if (5 <= hour && hour < 12) { | |
return Time.MORNING; | |
} else if (12 <= hour && hour < 18) { | |
return Time.AFTERNOON; | |
} else if (((18 <= hour && hour <= 23)) || (hour < 5)) { | |
return Time.EVENING; | |
} else { | |
throw new IllegalArgumentException("argument is from 00:00, to 23:59."); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this license header, choose License Headers in Project Properties. | |
* To change this template file, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package pascal.orz.cn.sandbox.problem02; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.Locale; | |
import org.junit.Test; | |
import static org.junit.Assert.*; | |
import static org.hamcrest.core.Is.*; | |
/** | |
* | |
* @author koduki | |
*/ | |
public class GreeterTest { | |
public GreeterTest() { | |
} | |
public Date time(int h, int m) { | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.HOUR_OF_DAY, h); | |
cal.set(Calendar.MINUTE, m); | |
cal.setLenient(false); | |
return cal.getTime(); | |
} | |
@Test | |
public void getTimeWithMorning() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getTime(5, 0), is(Time.MORNING)); | |
assertThat(greeter.getTime(11, 59), is(Time.MORNING)); | |
} | |
@Test | |
public void getTimeWithAfternoon() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getTime(12, 0), is(Time.AFTERNOON)); | |
assertThat(greeter.getTime(17, 59), is(Time.AFTERNOON)); | |
} | |
@Test | |
public void ggetTimeWithEvening() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getTime(18, 0), is(Time.EVENING)); | |
assertThat(greeter.getTime(23, 0), is(Time.EVENING)); | |
assertThat(greeter.getTime(4, 59), is(Time.EVENING)); | |
} | |
@Test(expected = IllegalArgumentException.class) | |
public void getTimeWithIvalidHour() { | |
Greeter greeter = new Greeter(); | |
greeter.getTime(24, 0); | |
} | |
@Test(expected = IllegalArgumentException.class) | |
public void getTimeWithIvalidMinute() { | |
Greeter greeter = new Greeter(); | |
greeter.getTime(23, 60); | |
} | |
@Test | |
public void getMessageWithMorningAndJA() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.MORNING, Locale.JAPAN), is("おはようございます")); | |
} | |
@Test | |
public void getMessageWithAfternoonAndJA() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.AFTERNOON, Locale.JAPAN), is("こんにちは")); | |
} | |
@Test | |
public void getMessageWithEveningAndJA() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.EVENING, Locale.JAPAN), is("こんばんは")); | |
} | |
@Test | |
public void getMessageWithMorningAndEN() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.MORNING, Locale.ENGLISH), is("Good Morning")); | |
} | |
@Test | |
public void getMessageWithAfternoonAndEN() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.AFTERNOON, Locale.ENGLISH), is("Good Afternoon")); | |
} | |
@Test | |
public void getMessageWithEveningAndEN() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.EVENING, Locale.ENGLISH), is("Good Evening")); | |
} | |
@Test | |
public void greeterWithAndJa() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(6, 0), Locale.JAPAN), is("おはようございます")); | |
assertThat(greeter.greet(time(12, 0), Locale.JAPAN), is("こんにちは")); | |
assertThat(greeter.greet(time(23, 0), Locale.JAPAN), is("こんばんは")); | |
} | |
@Test | |
public void greeterWithAndEn() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(6, 0), Locale.ENGLISH), is("Good Morning")); | |
assertThat(greeter.greet(time(12, 0), Locale.ENGLISH), is("Good Afternoon")); | |
assertThat(greeter.greet(time(23, 0), Locale.ENGLISH), is("Good Evening")); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this license header, choose License Headers in Project Properties. | |
* To change this template file, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package pascal.orz.cn.sandbox.problem02; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.Locale; | |
import lombok.AllArgsConstructor; | |
import lombok.ToString; | |
import org.junit.Test; | |
import static org.junit.Assert.*; | |
import static org.hamcrest.core.Is.*; | |
import org.junit.experimental.theories.DataPoints; | |
import org.junit.experimental.theories.Theories; | |
import org.junit.experimental.theories.Theory; | |
import org.junit.runner.RunWith; | |
/** | |
* | |
* @author koduki | |
*/ | |
@RunWith(Theories.class) | |
public class GreeterTest2 { | |
public GreeterTest2() { | |
} | |
public Date time(int h, int m) { | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.HOUR_OF_DAY, h); | |
cal.set(Calendar.MINUTE, m); | |
cal.setLenient(false); | |
return cal.getTime(); | |
} | |
@ToString | |
@AllArgsConstructor | |
public static class GetTimeParameter { | |
int hour; | |
int minute; | |
Time expected; | |
} | |
@DataPoints | |
public static GetTimeParameter[] moning() { | |
GetTimeParameter[] dataset = { | |
new GetTimeParameter(5, 0, Time.MORNING), | |
new GetTimeParameter(11, 59, Time.MORNING) | |
}; | |
return dataset; | |
} | |
@DataPoints | |
public static GetTimeParameter[] afternoon() { | |
GetTimeParameter[] dataset = { | |
new GetTimeParameter(12, 0, Time.AFTERNOON), | |
new GetTimeParameter(17, 59, Time.AFTERNOON) | |
}; | |
return dataset; | |
} | |
@DataPoints | |
public static GetTimeParameter[] evening() { | |
GetTimeParameter[] dataset = { | |
new GetTimeParameter(18, 0, Time.EVENING), | |
new GetTimeParameter(23, 59, Time.EVENING), | |
new GetTimeParameter(4, 59, Time.EVENING) | |
}; | |
return dataset; | |
} | |
@Theory | |
public void getTimeWith(GetTimeParameter parameter) { | |
Greeter greeter = new Greeter(); | |
assertThat(parameter.toString(), greeter.getTime(parameter.hour, parameter.minute), is(parameter.expected)); | |
} | |
@Test(expected = IllegalArgumentException.class) | |
public void getTimeWithIvalidHour() { | |
Greeter greeter = new Greeter(); | |
greeter.getTime(24, 0); | |
} | |
@Test(expected = IllegalArgumentException.class) | |
public void getTimeWithIvalidMinute() { | |
Greeter greeter = new Greeter(); | |
greeter.getTime(23, 60); | |
} | |
@Test | |
public void getMessageWithMorningAndJA() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.MORNING, Locale.JAPAN), is("おはようございます")); | |
} | |
@Test | |
public void getMessageWithAfternoonAndJA() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.AFTERNOON, Locale.JAPAN), is("こんにちは")); | |
} | |
@Test | |
public void getMessageWithEveningAndJA() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.EVENING, Locale.JAPAN), is("こんばんは")); | |
} | |
@Test | |
public void getMessageWithMorningAndEN() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.MORNING, Locale.ENGLISH), is("Good Morning")); | |
} | |
@Test | |
public void getMessageWithAfternoonAndEN() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.AFTERNOON, Locale.ENGLISH), is("Good Afternoon")); | |
} | |
@Test | |
public void getMessageWithEveningAndEN() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.getMessage(Time.EVENING, Locale.ENGLISH), is("Good Evening")); | |
} | |
@Test | |
public void greeterWithMorningAndJa() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(6, 0), Locale.JAPAN), is("おはようございます")); | |
} | |
@Test | |
public void greeterWithAfternoonAndJa() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(12, 0), Locale.JAPAN), is("こんにちは")); | |
} | |
@Test | |
public void greeterWithEveningAndJa() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(18, 0), Locale.JAPAN), is("こんばんは")); | |
} | |
@Test | |
public void greeterWithMorningAndEn() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(6, 0), Locale.ENGLISH), is("Good Morning")); | |
} | |
@Test | |
public void greeterWithAfternoonAndEn() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(12, 0), Locale.ENGLISH), is("Good Afternoon")); | |
} | |
@Test | |
public void greeterWithEveningAndEn() { | |
Greeter greeter = new Greeter(); | |
assertThat(greeter.greet(time(18, 0), Locale.ENGLISH), is("Good Evening")); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pascal.orz.cn.sandbox.problem02; | |
/** | |
* | |
* @author koduki | |
*/ | |
public enum Time { | |
MORNING, | |
AFTERNOON, | |
EVENING | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment