package org.piwik.sdk; import org.junit.Test; import java.util.HashMap; import java.util.Map; import java.util.UUID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class TrackMeTest { @Test public void testSourcingFromOtherTrackMe() throws Exception { TrackMe base = new TrackMe(); for (QueryParams param : QueryParams.values()) { String testValue = UUID.randomUUID().toString(); base.set(param, testValue); } TrackMe offSpring = new TrackMe(base); for (QueryParams param : QueryParams.values()) { assertEquals(base.get(param), offSpring.get(param)); } } @Test public void testAdd_overwrite() { TrackMe a = new TrackMe(); a.set(QueryParams.URL_PATH, "pathA"); a.set(QueryParams.EVENT_NAME, "name"); TrackMe b = new TrackMe(); b.set(QueryParams.URL_PATH, "pathB"); a.putAll(b); assertEquals("pathB", a.get(QueryParams.URL_PATH)); assertEquals("pathB", b.get(QueryParams.URL_PATH)); assertEquals("name", a.get(QueryParams.EVENT_NAME)); b.putAll(a); assertEquals("pathB", a.get(QueryParams.URL_PATH)); assertEquals("pathB", b.get(QueryParams.URL_PATH)); assertEquals("name", a.get(QueryParams.EVENT_NAME)); assertEquals("name", b.get(QueryParams.EVENT_NAME)); } @Test public void testSet() throws Exception { TrackMe trackMe = new TrackMe(); trackMe.set(QueryParams.HOURS, "String"); assertEquals("String", trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.set(QueryParams.HOURS, 1f); assertEquals(String.valueOf(1f), trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.set(QueryParams.HOURS, 1L); assertEquals(String.valueOf(1L), trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.set(QueryParams.HOURS, 1); assertEquals(String.valueOf(1), trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.set(QueryParams.HOURS, null); assertNull(trackMe.get(QueryParams.HOURS)); } @Test public void testTrySet() throws Exception { TrackMe trackMe = new TrackMe(); trackMe.trySet(QueryParams.HOURS, "A"); trackMe.trySet(QueryParams.HOURS, "B"); assertEquals("A", trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.trySet(QueryParams.HOURS, 1f); trackMe.trySet(QueryParams.HOURS, 2f); assertEquals(String.valueOf(1f), trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.trySet(QueryParams.HOURS, 1L); trackMe.trySet(QueryParams.HOURS, 2L); assertEquals(String.valueOf(1L), trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.trySet(QueryParams.HOURS, 1); trackMe.trySet(QueryParams.HOURS, 2); assertEquals(String.valueOf(1), trackMe.get(QueryParams.HOURS)); trackMe = new TrackMe(); trackMe.trySet(QueryParams.HOURS, "A"); trackMe.trySet(QueryParams.HOURS, null); assertNotNull(trackMe.get(QueryParams.HOURS)); } @Test public void testSetAll() throws Exception { TrackMe trackMe = new TrackMe(); Map<QueryParams, String> testValues = new HashMap<>(); for (QueryParams param : QueryParams.values()) { String testValue = UUID.randomUUID().toString(); trackMe.set(param, testValue); testValues.put(param, testValue); } assertEquals(QueryParams.values().length, testValues.size()); for (QueryParams param : QueryParams.values()) { assertTrue(trackMe.has(param)); assertEquals(testValues.get(param), trackMe.get(param)); } for (QueryParams param : QueryParams.values()) { trackMe.set(param, null); assertFalse(trackMe.has(param)); assertNull(trackMe.get(param)); } } }