데블스캠프2011/다섯째날/HowToWriteCodeWell/송지원,성화수 (rev. 1.1)
Elevator.java ¶
public class Elevator {
public int floor;
public int min;
public int max;
private boolean ta;
private boolean drill;
public Elevator(int i, int j) {
max = 0;
min = i;
floor = j;
ta = false;
drill = false;
}
public void move(int i) {
if(ta){
floor = -Math.abs(i);
}
}
public void ta() {
ta = true;
}
public void naga() {
ta = false;
}
public void up(int i) {
if(floor + i > max) move(max);
else move(floor + i);
}
public void down(int i) {
if(floor - i < min) move(min);
else move(floor - i);
}
public void drill() {
if(floor == min){
min--;
}
// TODO Auto-generated method stub
// 현재 층이 최저층이어야만 실행할 수 있다.
// 최저 층에서 맨 밑에층으로 더 down실행시 해당 층만큼 최저층이 늘어나고
// 현재 층이 그 층으로 바뀐다.
}
}
mainTest.java ¶
import static org.junit.Assert.*;
import org.junit.Test;
public class mainTest {
@Test
public void test() {
Elevator elevator = new Elevator (-20, -1);
//현재 층 출력 -1
assertEquals(-1, elevator.floor);
// move실행해도 현재 탄 사람이 없으면 층 이동 없음
elevator.move(17);
assertEquals(-1, elevator.floor);
// 사람이 타도 현재 층에는 변형 없음
elevator.ta();
assertEquals(-1, elevator.floor);
elevator.move(3);
assertEquals(-3, elevator.floor);
elevator.naga();
assertEquals(-3, elevator.floor);
elevator.ta();
elevator.up(2);
assertEquals(-1, elevator.floor);
elevator.up(2);
assertEquals(0, elevator.floor);
elevator.down(5);
assertEquals(-5, elevator.floor);
elevator.down(17);
assertEquals(-20, elevator.floor);
elevator.drill(); // 현재 층이 최저층이어야만 실행할 수 있다.
elevator.down(1);
assertEquals(-21, elevator.floor);
elevator.up(5);
assertEquals(-16, elevator.floor);
elevator.drill();
elevator.down(10);
assertEquals(-21, elevator.floor);
}
}