U E D R , A S I H C RSS

데블스캠프2011/다섯째날/How To Write Code Well/권순의,김호동

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());
		
	}
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:12
Processing time 0.0166 sec