package eu.dnetlib.grid.process.utils;

import static org.junit.Assert.assertEquals;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.commons.codec.binary.Hex;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

import eu.dnetlib.grid.process.model.GridOrganization;
import eu.dnetlib.miscutils.functional.hash.Hashing;

@Ignore
public class GridUtilsTest {

	@Before
	public void setUp() throws Exception {}

	@Test
	@Ignore
	public void test() throws FileNotFoundException {
		// final InputStream is = getClass().getResourceAsStream("grid_example.json");
		final InputStream is = new FileInputStream("/Users/michele/Desktop/grid.json");
		int i = 0;
		final Set<String> s = new HashSet<>();
		for (final GridOrganization o : GridUtils.getOrganizations(is)) {
			System.out.println(++i + " " + o.getId());
			o.getAddresses().forEach(a -> s.add(a.getCountry_code()));
		}
		System.out.println(s.stream().collect(Collectors.joining(", ")));

	}

	@Test
	@Ignore
	public void testMd5() throws UnsupportedEncodingException, NoSuchAlgorithmException {
		final String md5_1 = Hashing.md5("grid");

		final MessageDigest md = MessageDigest.getInstance("MD5");
		md.update("grid".getBytes("UTF-8"));
		final String md5_2 = new String(Hex.encodeHex(md.digest()));

		assertEquals(md5_1, md5_2);
	}

}
