Just a commit
This commit is contained in:
25
java/robot-name/README.md
Normal file
25
java/robot-name/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Robot Name
|
||||
|
||||
Write a program that manages robot factory settings.
|
||||
|
||||
When robots come off the factory floor, they have no name.
|
||||
|
||||
The first time you boot them up, a random name is generated in the format
|
||||
of two uppercase letters followed by three digits, such as RX837 or BC811.
|
||||
|
||||
Every once in a while we need to reset a robot to its factory settings,
|
||||
which means that their name gets wiped. The next time you ask, it will
|
||||
respond with a new random name.
|
||||
|
||||
The names must be random: they should not follow a predictable sequence.
|
||||
Random names means a risk of collisions. Your solution should not allow
|
||||
the use of the same name twice when avoidable. In some exercism language
|
||||
tracks there are tests to ensure that the same name is never used twice.
|
||||
|
||||
## Source
|
||||
|
||||
A debugging session with Paul Blackwell at gSchool. [http://gschool.it](http://gschool.it)
|
||||
|
||||
## Submitting Incomplete Problems
|
||||
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
||||
|
12
java/robot-name/build.gradle
Normal file
12
java/robot-name/build.gradle
Normal file
@@ -0,0 +1,12 @@
|
||||
apply plugin: "java"
|
||||
apply plugin: "eclipse"
|
||||
apply plugin: "idea"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testCompile "junit:junit:4.10"
|
||||
}
|
||||
|
0
java/robot-name/src/main/java/.keep
Normal file
0
java/robot-name/src/main/java/.keep
Normal file
35
java/robot-name/src/test/java/RobotTest.java
Normal file
35
java/robot-name/src/test/java/RobotTest.java
Normal file
@@ -0,0 +1,35 @@
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.core.Is.is;
|
||||
import static org.hamcrest.core.IsNot.not;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
public class RobotTest {
|
||||
|
||||
private static final String EXPECTED_ROBOT_NAME_PATTERN = "[A-Z]{2}\\d{3}";
|
||||
private final Robot robot = new Robot();
|
||||
|
||||
@Test
|
||||
public void hasName() {
|
||||
assertIsValidName(robot.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void differentRobotsHaveDifferentNames() {
|
||||
assertThat(robot.getName(), not(equalTo(new Robot().getName())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resetName() {
|
||||
final String name = robot.getName();
|
||||
robot.reset();
|
||||
final String name2 = robot.getName();
|
||||
assertThat(name, not(equalTo(name2)));
|
||||
assertIsValidName(name2);
|
||||
}
|
||||
|
||||
private static void assertIsValidName(String name) {
|
||||
assertThat(name.matches(EXPECTED_ROBOT_NAME_PATTERN), is(true));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user