데블스캠프2011/다섯째날/HowToWriteCodeWell/박정근,김수경 (rev. 1.2)
App.java ¶
package org.zeropage.devilscamp;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
/*
* up이나 down은 외부에서 버튼을 누른것이다.()안의 인자는 버튼을 누른 층
* up과 down을 누른 후에는 goTo를 할 수가 있는데
* 잘못된 선택을 할 경우에는 다시 goTo할 수 없다.
*/
public class App {
@Test
public void testElevator(){
Elevator e = new Elevator(63, -3);
//Elevator가 생성되었는지 test한다.
assertNotNull(e);
//Elevator가 생성될때에는 항상 1층으로 setting된다.
assertEquals(1, e.floor());
//System.out.println(e.floor());
//goTo 전에는 항상 up 혹은 down이 있어야한다.
e.up(1);
assertEquals(1, e.floor());
e.goTo(5);
assertEquals(5, e.floor());
//System.out.println(e.floor());
e.up(10);
assertEquals(10, e.floor());
//Can not go
e.goTo(-5);
assertEquals(10, e.floor());
//System.out.println(e.floor());
e.down(10);
assertEquals(10, e.floor());
//Can not go
e.goTo(65);
assertEquals(10, e.floor());
//System.out.println(e.floor());
//6층에서 up누를경우
e.up(6);
assertEquals(6, e.floor());
//System.out.println(e.floor());
//6층에서 up을 눌렀는데 3층으로 갈 수는 없다.
//한번 goTo에 실패하면(잘못된 범위 선택:up 누르고 더 아래층으로 goTo) 다시 goTo 할 수 없다.
e.goTo(3);
assertEquals(6, e.floor());
e.up(5);
assertEquals(5, e.floor());
e.goTo(60);
assertEquals(60, e.floor());
//8층에서 down누를경우
e.down(8);
assertEquals(8, e.floor());
//System.out.println(e.floor());
//한번 goTo에 실패하면(잘못된 범위 선택:down 누르고 더 위층으로 goTo) 다시 goTo 할 수 없다. 갇혔음 ㅡ_ㅡ;;
e.goTo(3);
assertEquals(3, e.floor());
}
}
Elevator.java ¶
package org.zeropage.devilscamp;
public class Elevator {
public int floor;
private int max_floor;
private int min_floor;
private int floor_dir;
public Elevator(int i, int j) {
max_floor = i;
min_floor = j;
floor = 1;
}
public int floor() {
return floor;
}
public void up(int i) {
floor_dir = 1;
floor = i;
}
public void goTo(int i) {
if (floor_dir == 1) {
if (floor < i)
floor = i;
} else if (floor_dir == 2) {
if (floor > i)
floor = i;
}
}
public void down(int i) {
floor_dir = 2;
floor = i;// TODO Auto-generated method stub
}
}