package com.googlecode.mgwt.linker.linker.test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.googlecode.mgwt.linker.linker.XMLPermutationProvider;
import com.googlecode.mgwt.linker.linker.XMLPermutationProviderException;
import com.googlecode.mgwt.linker.server.BindingProperty;
public class XMLPermutationProviderTest {
@Before
public void setUp() throws Exception {
}
@Test
public void testReadFile() throws XMLPermutationProviderException {
XMLPermutationProvider xmlPermutationProvider = new XMLPermutationProvider();
InputStream stream = getClass().getResourceAsStream("resources/example.manifestmap.xml");
Map<String, List<BindingProperty>> map = xmlPermutationProvider.getBindingProperties(stream);
Assert.assertEquals(15, map.size());
Assert.assertNotNull(map.get("C83A451EFE8ADF0BDB46AEAAC44B0063"));
Assert.assertNotNull(map.get("C5038CC6700BE1E13984B0C9B1C1CF39"));
Assert.assertNotNull(map.get("BC0FBD6E19A643C849F55798FBDC6B7C"));
Assert.assertNotNull(map.get("CE6093653BC656C5325AD9A3AD53190F"));
Assert.assertNotNull(map.get("AFE43E4243D6D9E467B4EF9AC1B9A556"));
Assert.assertNotNull(map.get("214B4087FF08669D2E69F4A54A473857"));
Assert.assertNotNull(map.get("04898CDE872132FE196264EA78903568"));
Assert.assertNotNull(map.get("1DE681F76CF42D7DAB43FBA413692180"));
Assert.assertNotNull(map.get("24CDDA719C9F0168D42F39A56432B111"));
Assert.assertNotNull(map.get("3375A4CB10F21AB527E717409E342385"));
Assert.assertNotNull(map.get("337DF9DBA826DEEAAB23EC650DD4A527"));
Assert.assertNotNull(map.get("7C2CC23ECDA1A4E8BC60B81F5AEAA04C"));
Assert.assertNotNull(map.get("65593A1B9B5E003CE88C406E73A3F475"));
Assert.assertNotNull(map.get("9EFCF8D411F0BC1926A3031A56459663"));
Assert.assertNotNull(map.get("7064A1A163CFC3C63ADF5DF50E91C5BB"));
List<BindingProperty> list = map.get("C83A451EFE8ADF0BDB46AEAAC44B0063");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "blackberry")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("C5038CC6700BE1E13984B0C9B1C1CF39");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "android")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "mobilesafari")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("BC0FBD6E19A643C849F55798FBDC6B7C");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "retina")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("CE6093653BC656C5325AD9A3AD53190F");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "ipad")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "mobilesafari")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("AFE43E4243D6D9E467B4EF9AC1B9A556");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "desktop")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("214B4087FF08669D2E69F4A54A473857");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "iphone")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "mobilesafari")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("04898CDE872132FE196264EA78903568");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "android")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("1DE681F76CF42D7DAB43FBA413692180");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "desktop")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "gecko1_8")));
list = map.get("24CDDA719C9F0168D42F39A56432B111");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "blackberry")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "mobilesafari")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("3375A4CB10F21AB527E717409E342385");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "android_tablet")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "mobilesafari")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("337DF9DBA826DEEAAB23EC650DD4A527");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "ipad")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("7C2CC23ECDA1A4E8BC60B81F5AEAA04C");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "retina")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "mobilesafari")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("65593A1B9B5E003CE88C406E73A3F475");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "iphone")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("9EFCF8D411F0BC1926A3031A56459663");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "desktop")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "mobilesafari")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
list = map.get("7064A1A163CFC3C63ADF5DF50E91C5BB");
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.contains(new BindingProperty("mgwt.os", "android_tablet")));
Assert.assertTrue(list.contains(new BindingProperty("mobile.user.agent", "not_mobile")));
Assert.assertTrue(list.contains(new BindingProperty("user.agent", "safari")));
}
@Test
public void testReadPermutationFilesFromXml() throws XMLPermutationProviderException {
XMLPermutationProvider xmlPermutationProvider = new XMLPermutationProvider();
InputStream stream = getClass().getResourceAsStream("resources/example_permutation.perm.xml");
Set<String> files = xmlPermutationProvider.getPermutationFiles(stream);
Assert.assertEquals(7, files.size());
Assert.assertTrue(files.contains("showcase/01366743E08C511EF8DB208174B33C6F.cache.html"));
Assert.assertTrue(files.contains("index.html"));
Assert.assertTrue(files.contains("logo.png"));
Assert.assertTrue(files.contains("showcase/hosted.html"));
Assert.assertTrue(files.contains("showcase/showcase.nocache.js"));
Assert.assertTrue(files.contains("showcase/clear.cache.gif"));
Assert.assertTrue(files.contains("/"));
}
@Test
public void testReadWritePermInformation() throws XMLPermutationProviderException, UnsupportedEncodingException {
XMLPermutationProvider xmlPermutationProvider = new XMLPermutationProvider();
HashSet<String> set = new HashSet<String>();
set.add("1");
set.add("2");
set.add("3");
set.add("4");
set.add("5");
HashSet<BindingProperty> bpSet = new HashSet<BindingProperty>();
bpSet.add(new BindingProperty("mgwt.os", "iphone"));
bpSet.add(new BindingProperty("user.agent", "safari"));
String permutationInformation = xmlPermutationProvider.writePermutationInformation("permTest", bpSet, set);
ByteArrayInputStream inputStream = new ByteArrayInputStream(permutationInformation.getBytes("UTf-8"));
Set<String> files = xmlPermutationProvider.getPermutationFiles(inputStream);
Assert.assertEquals(set, files);
}
}