/* * Carrot2 project. * * Copyright (C) 2002-2016, Dawid Weiss, Stanisław Osiński. * All rights reserved. * * Refer to the full license file "carrot2.LICENSE" * in the root folder of the repository checkout or at: * http://www.carrot2.org/carrot2.LICENSE */ package org.carrot2.util.attribute; import static org.fest.assertions.MapAssert.entry; import java.util.Map; import org.carrot2.util.tests.CarrotTestCase; import org.junit.Test; import org.carrot2.shaded.guava.common.collect.Maps; import static org.junit.Assert.*; public class AttributeValueSetTest extends CarrotTestCase { @Test public void testNullBaseAttributeValueSet() { final AttributeValueSet set = new AttributeValueSet(null, null, null); set.setAttributeValue("testKey", "testValue"); assertEquals("testValue", set.getAttributeValue("testKey")); } @Test public void testOneLevelBaseAttributeValueSet() { final AttributeValueSet base = new AttributeValueSet(null, null, null); base.setAttributeValue("baseKey", "baseValue"); base.setAttributeValue("overridenKey", "overrideMe"); final AttributeValueSet set = new AttributeValueSet(null, null, base); set.setAttributeValue("testKey", "testValue"); set.setAttributeValue("overridenKey", "overridenValue"); assertEquals("testValue", set.getAttributeValue("testKey")); assertEquals("baseValue", set.getAttributeValue("baseKey")); assertEquals("overridenValue", set.getAttributeValue("overridenKey")); assertEquals(null, set.getAttributeValue("nonexistingKey")); assertThat(set.getAttributeValues()).includes(entry("testKey", "testValue"), entry("baseKey", "baseValue"), entry("overridenKey", "overridenValue")) .hasSize(3); } @Test public void testMultiLevelBaseAttributeValueSet() { final AttributeValueSet base1 = new AttributeValueSet(null, null, null); base1.setAttributeValue("base1Key", "base1Value"); base1.setAttributeValue("overriden1Key", "override1Me"); final AttributeValueSet base2 = new AttributeValueSet(null, null, base1); final Map<String, Object> base2Values = Maps.newHashMap(); base2Values.put("base2Key", "base2Value"); base2Values.put("overriden2Key", "overrideMe"); base2.setAttributeValues(base2Values); final AttributeValueSet set = new AttributeValueSet(null, null, base2); set.setAttributeValue("testKey", "testValue"); set.setAttributeValue("overriden1Key", "overriden1Value"); assertEquals("testValue", set.getAttributeValue("testKey")); assertEquals("base1Value", set.getAttributeValue("base1Key")); assertEquals("overriden1Value", set.getAttributeValue("overriden1Key")); assertEquals("overrideMe", set.getAttributeValue("overriden2Key")); assertThat(set.getAttributeValues()).includes(entry("testKey", "testValue"), entry("base1Key", "base1Value"), entry("base2Key", "base2Value"), entry("overriden1Key", "overriden1Value"), entry("overriden2Key", "overrideMe")).hasSize(5); } }