TDDBootCamp名古屋の1日目の課題にリトライ!

移転しました。

set(),get(),dump()の実装。うーん、上手くかけない><..

FileStoreTest.java

package file;

import static org.junit.Assert.*;

import org.junit.Test;


public class FileStoreTest {
	@Test
	public void testdump() throws Exception {
		FileStore fs = new FileStore();
		fs.set("hoge","piyo");
		assertEquals("hoge:piyo", fs.dump());
		fs.set("foo", "bar");
		assertEquals("hoge:piyo,foo:bar", fs.dump());
		fs.set("bar", "baz");
		assertEquals("hoge:piyo,foo:bar,bar:baz", fs.dump());
	}
	
	@Test
	public void testget() throws Exception {
		FileStore fs = new FileStore();
		fs.set("hoge", "piyo");
		assertEquals("piyo", fs.get("hoge"));
		fs.set("foo", "bar");
		assertEquals("keyが空文字です。", fs.get(""));
	}
	
	@Test
	public void 空文字をkeyにしてsetする() throws Exception {
		FileStore fs = new FileStore();
		fs.set("hoge","piyo");
		fs.set("", "piyo");
		assertEquals("hoge:piyo", fs.dump());
	}
	
	@Test
	public void 空文字をsetする() throws Exception {
		FileStore fs = new FileStore();
		fs.set("hoge","");
		fs.set("hoge","piyo");
		assertEquals("hoge:piyo", fs.dump());
	}
	
	@Test
	public void すでに登録されているkeyがある場合上書きされて最後にdumpされる() throws Exception {
		FileStore fs = new FileStore();
		fs.set("hoge","piyo1");
		fs.set("hoge","piyo2");
		assertEquals("hoge:piyo2", fs.dump());
	}
}

FileStore.java

package file;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;


public class FileStore {
	List<Map<String,String>> lists = new LinkedList<Map<String,String>>();
	
	public FileStore() {
	}

	public String dump() {
		StringBuilder sb = new StringBuilder();
		for(Iterator<Map<String,String>> i = lists.iterator(); i.hasNext();){
			makeString(sb, i);
		}
		return sb.toString();
	}

	private void makeString(StringBuilder sb, Iterator<Map<String, String>> i) {
		Map<String,String> set =  i.next();
		String key ="";
		for(Iterator<String> j= set.keySet().iterator(); j.hasNext();){
			key = j.next();
		}
		sb.append(key);
		sb.append(":");
		sb.append(set.get(key));
		if(i.hasNext())
			sb.append(",");
	}

	public void set(String key, String value) {
		if(key.equals("")) return;
		if(value.equals("")) return;
		for(Iterator<Map<String,String>> i=lists.iterator();i.hasNext();){
			Map<String,String> set = i.next();
			if(set.containsKey(key)){
				i.remove();
			}
		}
		Map<String,String> map = new HashMap<String, String>();
		map.put(key, value);
		lists.add(map);
	}

	public String get(String key) {
		if(key.equals("")) return "keyが空文字です。";
		for(Iterator<Map<String,String>> i=lists.iterator();i.hasNext();){
			Map<String,String> set = i.next();
			if(set.containsKey(key)){
				return set.get(key);
			}
		}
		return null;
	}

}