데블스캠프2011/다섯째날/HowToWriteCodeWell/권순의,김호동 (rev. 1.2)
Elevator.java ¶
public class Elevator {
private int max;
private int min;
private int floor;
private boolean inElevator;
private boolean button;
public Elevator(int i, int j) {
max = i;
min = j;
floor = 1;
inElevator = false;
button = false;
}
public int floor() {
return floor;
}
public void goTo(int i) {
if(i <= max && i >= min && inElevator ){
floor = i;
} else if (i < min){
floor = min;
} else if (i > max){
floor = max;
}
}
public void press() {
button = true;
}
public void in() {
if(button) {
inElevator = true;
button = false;
}
}
public void out() {
inElevator = false;
}
}
App.java (Test) ¶
import static org.junit.Assert.*;
import org.junit.Test;
public class App {
@Test
public void testElevator() {
Elevator elevator = new Elevator(65, -10); // default 현재층 : 1
// 객체 생성 여부
assertNotNull(elevator);
assertEquals(1, elevator.floor());
// 엘레베이터에 안탔으므로 이동이 안됨
elevator.goTo(30);
assertEquals(1, elevator.floor());
// 버튼을 누르지 않으면 탈 수 없음.
elevator.in();
elevator.goTo(20);
assertEquals(1, elevator.floor());
// 버튼 눌러서 타서 이동한 케이스
elevator.press();
elevator.in();
elevator.goTo(30);
assertEquals(30, elevator.floor());
// 내려서 이동 안되는 케이스
elevator.out();
elevator.goTo(20);
assertEquals(30, elevator.floor());
// 안에서 엘레베이터를 타지만 최저층을 초과하는 경우
elevator.press();
elevator.in();
elevator.goTo(-11);
assertEquals(-10, elevator.floor());
// 안에서 엘레베이터를 타지만 최고층을 초과하는 경우
elevator.press();
elevator.in();
elevator.goTo(66);
assertEquals(65, elevator.floor());
}
}