1. 작업 리스트 관리(CRUD)
1.1. 새로운 작업 추가 - 완료
@Test public void addNewWork(){
WorkList workList = new WorkList();
String workName = "새로운 작업 추가하기";
workList.add(new Work(workName));
assertEquals(1, workList.size());
assertEquals(workName, workList.get(1).name);
}
1.2. 선택한 작업 삭제 하려다 보니 Work 마다 번호가 매겨져 있어야 할 것 같아졌습니다. 새로운 작업을 추가 했을 때 그 작업의 번호를 리턴 받도록 합니다. 작업 번호는 1번 부터 시작합니다. 새로 추가되는 작업의 번호는 리스트 요소중에 제일 큰 번호를 갖게 됩니다.
1.2 작업 번호 받기 - 완료
@Test public void addNewWork(){
WorkList workList = new WorkList();
String workName = "새로운 작업 추가하기";
int workNumber = workList.add(new Work(workName));
assertEquals(1, workNumber);
assertEquals(1, workList.size());
assertEquals(workName, workList.get(workNumber).name);
}
1.3. 선택한 작업 삭제 - 완료
@Test public void deleteWork(){
WorkList workList = new WorkList();
int workNumber1 = workList.add(new Work("work1"));
int workNumber2 = workList.add(new Work("work2"));
assertEquals(2, workList.size());
workList.delete(workNumber1);
assertEquals(1, workList.size());
assertEquals("work2", workList.get(workNumber2 - 1).name);
}
리스트에서 작업이 삭제 되면 작업의 번호도 그에 따라 변경 됩니다. 예를 들어 2개의 작업에서 첫번째(1번) 작업이 삭제 되면 두번째(2번) 작업의 번호가 첫번째 작업의 번호로 바뀌게 됩니다.
두 개의 메소드에 중복이 발생했습니다. workList 객체를 @Before 가 붙은 메소드로 올리겠습니다.
WorkList workList;
@Before public void setUp(){
workList = new WorkList();
}
1.4. 파일로 저장하기 - 완료
@Test public void saveList() throws IOException{
workList.add(new Work("work1"));
String fileName = "ToDoList.txt";
workList.save(fileName);
StringBuffer buffer = new StringBuffer();
String line;
BufferedReader reader = new BufferedReader(new FileReader(fileName));
while ((line = reader.readLine()) != null) {
buffer.append(String.format(line + "\n"));
}
reader.close();
assertEquals("work1\n", buffer.toString());
}
1.5. 파일에서 읽어오기 - 완료
@Test public void loadList(){
int workNumber = workList.add(new Work("work1"));
String fileName = "ToDoList.txt";
workList.save(fileName);
workList = new WorkList();
workList.load(fileName);
assertEquals(1, workList.size());
assertEquals("work1", workList.get(workNumber).name);
}
1.6. 전체 리스트 보여주기 - 완료
@Test public void printList(){
workList.add(new Work("work1"));
workList.add(new Work("work2"));
workList.add(new Work("work3"));
assertEquals("work1\nwork2\nwork3\n", workList.toString());
}
그리고 여태까지 Work class에 name 변수가 public으로 되어 있었는데 private으로 바꿔주고 에러나는 부분은 getter와 setter로 포장해 줍니다.