U E D R , A S I H C RSS

데블스캠프2011/다섯째날/How To Write Code Well/박정근,김수경

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

	}

}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:12
Processing time 0.0147 sec