/******************************************************************************* * Copyright (c) 2012 Original authors and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Original authors and others - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.layer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Properties; import org.junit.Before; import org.junit.Test; public class SizeConfigPersistenceTest { private static final int DEFAULT_SIZE = 100; private SizeConfig sizeConfig; @Before public void setup() { this.sizeConfig = new SizeConfig(DEFAULT_SIZE); } @Test public void testSaveState() { this.sizeConfig.setDefaultSize(5, 50); this.sizeConfig.setDefaultSize(6, 60); this.sizeConfig.setSize(5, 25); this.sizeConfig.setSize(2, 88); this.sizeConfig.setSize(4, 57); this.sizeConfig.setResizableByDefault(false); this.sizeConfig.setPositionResizable(3, true); this.sizeConfig.setPositionResizable(9, true); Properties properties = new Properties(); this.sizeConfig.saveState("prefix", properties); assertEquals(6, properties.size()); assertEquals("100", properties.getProperty("prefix.defaultSize")); assertEquals("5:50,6:60,", properties.getProperty("prefix.defaultSizes")); assertEquals("2:88,4:57,5:25,", properties.getProperty("prefix.sizes")); assertFalse(Boolean.valueOf(properties .getProperty("prefix.resizableByDefault"))); assertEquals("3:true,9:true,", properties.getProperty("prefix.resizableIndexes")); assertFalse(Boolean.valueOf(properties .getProperty("prefix.percentageSizing"))); } @Test public void testLoadState() { Properties properties = new Properties(); properties.setProperty("prefix.defaultSize", "40"); properties.setProperty("prefix.defaultSizes", "1:10,2:20,3:30,"); properties.setProperty("prefix.sizes", "1:100,4:400,5:500,"); properties.setProperty("prefix.resizableByDefault", "true"); properties.setProperty("prefix.resizableIndexes", "1:false,6:false,"); this.sizeConfig.loadState("prefix", properties); assertEquals(40, this.sizeConfig.getSize(0)); assertEquals(100, this.sizeConfig.getSize(1)); assertEquals(20, this.sizeConfig.getSize(2)); assertEquals(30, this.sizeConfig.getSize(3)); assertEquals(400, this.sizeConfig.getSize(4)); assertEquals(500, this.sizeConfig.getSize(5)); assertEquals(40, this.sizeConfig.getSize(6)); assertTrue(this.sizeConfig.isPositionResizable(0)); assertFalse(this.sizeConfig.isPositionResizable(1)); assertTrue(this.sizeConfig.isPositionResizable(2)); assertTrue(this.sizeConfig.isPositionResizable(3)); assertTrue(this.sizeConfig.isPositionResizable(4)); assertTrue(this.sizeConfig.isPositionResizable(5)); assertFalse(this.sizeConfig.isPositionResizable(6)); } @Test public void testLoadStatePercentageSizing() { Properties properties = new Properties(); properties.setProperty("prefix.defaultSize", "40"); properties.setProperty("prefix.defaultSizes", "1:10,2:20,3:30,"); properties.setProperty("prefix.sizes", "1:100,4:400,5:500,"); properties.setProperty("prefix.resizableByDefault", "true"); properties.setProperty("prefix.resizableIndexes", "1:false,6:false,"); properties.setProperty("prefix.percentageSizing", "true"); this.sizeConfig.loadState("prefix", properties); assertTrue(this.sizeConfig.isResizableByDefault()); assertTrue(this.sizeConfig.isPercentageSizing()); } @Test public void loadStateFromEmptyPropertiesObject() throws Exception { Properties properties = new Properties(); this.sizeConfig.loadState("prefix", properties); assertTrue(this.sizeConfig.isResizableByDefault()); assertEquals(DEFAULT_SIZE, this.sizeConfig.getSize(0)); assertEquals(DEFAULT_SIZE, this.sizeConfig.getSize(1)); assertEquals(DEFAULT_SIZE, this.sizeConfig.getSize(2)); assertEquals(DEFAULT_SIZE, this.sizeConfig.getSize(3)); assertEquals(DEFAULT_SIZE, this.sizeConfig.getSize(4)); assertEquals(DEFAULT_SIZE, this.sizeConfig.getSize(5)); assertEquals(DEFAULT_SIZE, this.sizeConfig.getSize(6)); } @Test public void testSaveEnhancedPercentageSizingState() { this.sizeConfig.setDefaultSize(5, 50); this.sizeConfig.setDefaultSize(6, 60); this.sizeConfig.setSize(5, 25); this.sizeConfig.setSize(2, 88); this.sizeConfig.setSize(4, 57); this.sizeConfig.setResizableByDefault(false); this.sizeConfig.setPositionResizable(3, true); this.sizeConfig.setPositionResizable(9, true); this.sizeConfig.setPercentageSizing(3, false); this.sizeConfig.setPercentageSizing(9, false); this.sizeConfig.setPercentageSizing(7, true); this.sizeConfig.setPercentageSizing(8, true); Properties properties = new Properties(); this.sizeConfig.saveState("prefix", properties); assertEquals(7, properties.size()); assertEquals("100", properties.getProperty("prefix.defaultSize")); assertEquals("5:50,6:60,", properties.getProperty("prefix.defaultSizes")); assertEquals("2:88,4:57,5:25,", properties.getProperty("prefix.sizes")); assertFalse(Boolean.valueOf(properties .getProperty("prefix.resizableByDefault"))); assertEquals("3:true,9:true,", properties.getProperty("prefix.resizableIndexes")); assertFalse(Boolean.valueOf(properties .getProperty("prefix.percentageSizing"))); assertEquals("3:false,7:true,8:true,9:false,", properties.getProperty("prefix.percentageSizingIndexes")); } @Test public void testLoadEnhancedPercentageSizingState() { Properties properties = new Properties(); properties.setProperty("prefix.defaultSize", "40"); properties.setProperty("prefix.defaultSizes", "1:10,2:20,3:30,"); properties.setProperty("prefix.sizes", "1:100,4:400,5:500,"); properties.setProperty("prefix.resizableByDefault", "true"); properties.setProperty("prefix.resizableIndexes", "1:false,6:false,"); properties.setProperty("prefix.percentageSizing", "true"); properties.setProperty("prefix.percentageSizingIndexes", "3:false,7:true,8:true,9:false,"); this.sizeConfig.loadState("prefix", properties); assertTrue(this.sizeConfig.isResizableByDefault()); assertTrue(this.sizeConfig.isPercentageSizing()); assertFalse(this.sizeConfig.isPercentageSizing(3)); assertTrue(this.sizeConfig.isPercentageSizing(7)); assertTrue(this.sizeConfig.isPercentageSizing(8)); assertFalse(this.sizeConfig.isPercentageSizing(9)); assertTrue(this.sizeConfig.isPercentageSizing(2)); assertTrue(this.sizeConfig.isPercentageSizing(6)); } }