package eu.dnetlib.data;

import static org.junit.Assert.assertEquals;

import java.util.HashSet;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import com.google.common.collect.Maps;
import com.google.common.collect.Sets;

public class ErrorGeneratorTest {
	
	private ErrorGenerator eGen;

	@Before
	public void setUp() {
		eGen = new ErrorGenerator();
	}
	
	@Test
	public void testOneCharMiss() {
		String s = "abcd";		
		String r = eGen.getFunction(ErrorKind.oneCharMiss).apply(s);
		System.out.println(r);
	}
	
	/*
	@Test
	public void testOneCharErr() {
		String s = "aaaa";		
		String r = eGen.getFunction(ErrorKind.oneCharErr).apply(s);
		System.out.println(r);
	}
	*/
	
	@Test
	public void testOneCharErrWeight() {
		String s = "aaaa";		
		String r = eGen.getFunction(ErrorKind.oneCharErrWeight).apply(s);
		System.out.println(r);
	}	
	
	@Test
	public void testTwoCharSwap() {
		String s = "abcde";		
		String r = eGen.getFunction(ErrorKind.twoCharSwap).apply(s);
		System.out.println(r);
	}
	
	@Test
	public void testPickError() {
		System.out.println(eGen.pickError());	
	}
	
	@Test
	public void testPickField() {
		System.out.println(eGen.pickFields());	
	}
	
	@Test
	public void testDate1Gen() {
		assertEquals("01/01/1987", eGen.getFunction(ErrorKind.date1Gen).apply("24/03/1987"));	
	}
	
	@Test
	public void testDateSwitch() {
		assertEquals("05/01/1987", eGen.getFunction(ErrorKind.dateSwitch).apply("01/05/1987"));	
	}
	
	@Test
	public void testHashSet() {
		
		HashSet<Map<String, String>> hs = Sets.newHashSet();
		
		Map<String, String> map1 = Maps.newHashMap();
		map1.put("key1", "value1");
		
		Map<String, String> map2 = Maps.newHashMap();
		map2.put("key1", "value1");
		
		hs.add(map1);
		hs.add(map2);
		
		System.out.println(hs.size());		
	}

}
