| /******************************************************************************* |
| * Copyright (c) 2012, 2020 Original authors and others. |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Dirk Fauth <dirk.fauth@googlemail.com> - Initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.nebula.widgets.nattable.layer; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| public class SizeConfigPercentageTest { |
| |
| private static final int DEFAULT_SIZE = 100; |
| private SizeConfig sizeConfigCalculationMode; |
| private SizeConfig sizeConfigFixedMode; |
| private SizeConfig sizeConfigMixedPercentageMode; |
| private SizeConfig sizeConfigMixedMode; |
| |
| @Before |
| public void setup() { |
| this.sizeConfigCalculationMode = new SizeConfig(DEFAULT_SIZE); |
| this.sizeConfigCalculationMode.setPercentageSizing(true); |
| this.sizeConfigCalculationMode.calculatePercentages(1000, 10); |
| |
| this.sizeConfigFixedMode = new SizeConfig(DEFAULT_SIZE); |
| this.sizeConfigFixedMode.setPercentageSizing(true); |
| this.sizeConfigFixedMode.setPercentage(0, 50); |
| this.sizeConfigFixedMode.setPercentage(1, 50); |
| this.sizeConfigFixedMode.calculatePercentages(255, 2); |
| |
| this.sizeConfigMixedPercentageMode = new SizeConfig(DEFAULT_SIZE); |
| this.sizeConfigMixedPercentageMode.setPercentageSizing(true); |
| this.sizeConfigMixedPercentageMode.setPercentage(0, 30); |
| this.sizeConfigMixedPercentageMode.setPercentage(2, 30); |
| this.sizeConfigMixedPercentageMode.calculatePercentages(1000, 3); |
| |
| this.sizeConfigMixedMode = new SizeConfig(DEFAULT_SIZE); |
| this.sizeConfigMixedMode.setPercentageSizing(true); |
| this.sizeConfigMixedMode.setPercentageSizing(0, false); |
| this.sizeConfigMixedMode.setPercentageSizing(1, false); |
| this.sizeConfigMixedMode.setSize(0, 100); |
| this.sizeConfigMixedMode.setSize(1, 100); |
| this.sizeConfigMixedMode.calculatePercentages(500, 3); |
| } |
| |
| @Test |
| public void getAggregateSizeCalculationMode() { |
| assertEquals(100, this.sizeConfigCalculationMode.getAggregateSize(1)); |
| assertEquals(200, this.sizeConfigCalculationMode.getAggregateSize(2)); |
| assertEquals(300, this.sizeConfigCalculationMode.getAggregateSize(3)); |
| assertEquals(400, this.sizeConfigCalculationMode.getAggregateSize(4)); |
| assertEquals(500, this.sizeConfigCalculationMode.getAggregateSize(5)); |
| assertEquals(600, this.sizeConfigCalculationMode.getAggregateSize(6)); |
| assertEquals(700, this.sizeConfigCalculationMode.getAggregateSize(7)); |
| assertEquals(800, this.sizeConfigCalculationMode.getAggregateSize(8)); |
| assertEquals(900, this.sizeConfigCalculationMode.getAggregateSize(9)); |
| assertEquals(1000, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| } |
| |
| @Test |
| public void sizeOverrideCalculationMode() { |
| this.sizeConfigCalculationMode.setSize(5, 200); |
| |
| // - we increase position 5 to 200, which means 20% |
| // - this is an increase by 10% |
| // - the adjacent position 6 then needs to decrease by 10% |
| // as fixDynamicPercentageValues is enabled by default |
| // - as a reduction to 0 is not allowed, position 6 is set to 1% |
| // - the value of 1% (10 pixels) is reduced in the other next |
| // position |
| assertEquals(200, this.sizeConfigCalculationMode.getSize(5)); |
| assertEquals(10, this.sizeConfigCalculationMode.getSize(6)); |
| assertEquals(90, this.sizeConfigCalculationMode.getSize(7)); |
| } |
| |
| @Test |
| public void sizeOverrideCalculationModeLeft() { |
| this.sizeConfigCalculationMode.setSize(9, 200); |
| |
| // - we increase position 9 to 200, which means 20% |
| // - this is an increase by 10% |
| // - the adjacent position 8 then needs to decrease by 10% |
| // as fixDynamicPercentageValues is enabled by default |
| // - as a reduction to 0 is not allowed, position 8 is set to 1% |
| // - the value of 1% (10 pixels) is reduced in the previous |
| // position |
| assertEquals(200, this.sizeConfigCalculationMode.getSize(9)); |
| assertEquals(10, this.sizeConfigCalculationMode.getSize(8)); |
| assertEquals(90, this.sizeConfigCalculationMode.getSize(7)); |
| } |
| |
| @Test |
| public void sizeOverrideCalculationModeWithoutFixDynamicPercentages() { |
| this.sizeConfigCalculationMode.setFixPercentageValuesOnResize(false); |
| this.sizeConfigCalculationMode.setSize(5, 200); |
| |
| assertEquals(201, this.sizeConfigCalculationMode.getSize(5)); |
| } |
| |
| @Test |
| public void percentageOverrideCalculationMode() { |
| this.sizeConfigCalculationMode.setPercentage(5, 20); |
| |
| assertEquals(89, this.sizeConfigCalculationMode.getSize(0)); |
| assertEquals(89, this.sizeConfigCalculationMode.getSize(1)); |
| assertEquals(89, this.sizeConfigCalculationMode.getSize(2)); |
| assertEquals(89, this.sizeConfigCalculationMode.getSize(3)); |
| assertEquals(89, this.sizeConfigCalculationMode.getSize(4)); |
| assertEquals(201, this.sizeConfigCalculationMode.getSize(5)); |
| assertEquals(89, this.sizeConfigCalculationMode.getSize(6)); |
| assertEquals(89, this.sizeConfigCalculationMode.getSize(7)); |
| assertEquals(88, this.sizeConfigCalculationMode.getSize(8)); |
| assertEquals(88, this.sizeConfigCalculationMode.getSize(9)); |
| } |
| |
| @Test |
| public void getAggregateSizeWithSizeOverridesCalculationMode() { |
| this.sizeConfigCalculationMode.setPercentage(5, 20); |
| |
| assertEquals(89, this.sizeConfigCalculationMode.getAggregateSize(1)); |
| assertEquals(178, this.sizeConfigCalculationMode.getAggregateSize(2)); |
| assertEquals(267, this.sizeConfigCalculationMode.getAggregateSize(3)); |
| assertEquals(356, this.sizeConfigCalculationMode.getAggregateSize(4)); |
| assertEquals(445, this.sizeConfigCalculationMode.getAggregateSize(5)); |
| assertEquals(646, this.sizeConfigCalculationMode.getAggregateSize(6)); |
| assertEquals(735, this.sizeConfigCalculationMode.getAggregateSize(7)); |
| assertEquals(824, this.sizeConfigCalculationMode.getAggregateSize(8)); |
| assertEquals(912, this.sizeConfigCalculationMode.getAggregateSize(9)); |
| assertEquals(1000, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| } |
| |
| @Test |
| public void getAggregateSizeCalculationModeAfterAdding() { |
| this.sizeConfigCalculationMode.calculatePercentages(1000, 20); |
| |
| assertEquals(50, this.sizeConfigCalculationMode.getAggregateSize(1)); |
| assertEquals(100, this.sizeConfigCalculationMode.getAggregateSize(2)); |
| assertEquals(150, this.sizeConfigCalculationMode.getAggregateSize(3)); |
| assertEquals(200, this.sizeConfigCalculationMode.getAggregateSize(4)); |
| assertEquals(250, this.sizeConfigCalculationMode.getAggregateSize(5)); |
| assertEquals(300, this.sizeConfigCalculationMode.getAggregateSize(6)); |
| assertEquals(350, this.sizeConfigCalculationMode.getAggregateSize(7)); |
| assertEquals(400, this.sizeConfigCalculationMode.getAggregateSize(8)); |
| assertEquals(450, this.sizeConfigCalculationMode.getAggregateSize(9)); |
| assertEquals(500, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| assertEquals(550, this.sizeConfigCalculationMode.getAggregateSize(11)); |
| assertEquals(600, this.sizeConfigCalculationMode.getAggregateSize(12)); |
| assertEquals(650, this.sizeConfigCalculationMode.getAggregateSize(13)); |
| assertEquals(700, this.sizeConfigCalculationMode.getAggregateSize(14)); |
| assertEquals(750, this.sizeConfigCalculationMode.getAggregateSize(15)); |
| assertEquals(800, this.sizeConfigCalculationMode.getAggregateSize(16)); |
| assertEquals(850, this.sizeConfigCalculationMode.getAggregateSize(17)); |
| assertEquals(900, this.sizeConfigCalculationMode.getAggregateSize(18)); |
| assertEquals(950, this.sizeConfigCalculationMode.getAggregateSize(19)); |
| assertEquals(1000, this.sizeConfigCalculationMode.getAggregateSize(20)); |
| } |
| |
| @Test |
| public void getAggregateSizeCalculationModeSpaceChangeCacheCheck() { |
| // Change the space and positionCount to test the cached aggregated size |
| // values. |
| this.sizeConfigCalculationMode.calculatePercentages(1000, 20); |
| |
| assertEquals(100, this.sizeConfigCalculationMode.getAggregateSize(2)); |
| assertEquals(200, this.sizeConfigCalculationMode.getAggregateSize(4)); |
| assertEquals(300, this.sizeConfigCalculationMode.getAggregateSize(6)); |
| assertEquals(400, this.sizeConfigCalculationMode.getAggregateSize(8)); |
| assertEquals(500, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| |
| this.sizeConfigCalculationMode.calculatePercentages(500, 20); |
| |
| assertEquals(50, this.sizeConfigCalculationMode.getAggregateSize(2)); |
| assertEquals(100, this.sizeConfigCalculationMode.getAggregateSize(4)); |
| assertEquals(150, this.sizeConfigCalculationMode.getAggregateSize(6)); |
| assertEquals(200, this.sizeConfigCalculationMode.getAggregateSize(8)); |
| assertEquals(250, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| |
| this.sizeConfigCalculationMode.calculatePercentages(500, 10); |
| |
| assertEquals(100, this.sizeConfigCalculationMode.getAggregateSize(2)); |
| assertEquals(200, this.sizeConfigCalculationMode.getAggregateSize(4)); |
| assertEquals(300, this.sizeConfigCalculationMode.getAggregateSize(6)); |
| assertEquals(400, this.sizeConfigCalculationMode.getAggregateSize(8)); |
| assertEquals(500, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| } |
| |
| @Test |
| public void getAggregateSizeCalculationModeSizeChangeCacheCheck() { |
| assertEquals(500, this.sizeConfigCalculationMode.getAggregateSize(5)); |
| |
| this.sizeConfigCalculationMode.setPercentage(5, 20); |
| |
| assertEquals(445, this.sizeConfigCalculationMode.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void getSizeConfigFixedMode() { |
| assertEquals(128, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(127, this.sizeConfigFixedMode.getSize(1)); |
| } |
| |
| @Test |
| public void getAggregateSizeConfigFixedMode() { |
| assertEquals(128, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(255, this.sizeConfigFixedMode.getAggregateSize(2)); |
| } |
| |
| @Test |
| public void sizeOverrideFixedMode() { |
| this.sizeConfigFixedMode.setSize(1, 102); |
| |
| assertEquals(102, this.sizeConfigFixedMode.getSize(1)); |
| } |
| |
| @Test |
| public void percentageOverrideFixedMode() { |
| this.sizeConfigFixedMode.setDistributeRemainingSpace(false); |
| |
| this.sizeConfigFixedMode.setPercentage(1, 40); |
| |
| assertEquals(127, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(102, this.sizeConfigFixedMode.getSize(1)); |
| } |
| |
| @Test |
| public void getAggregateSizeWithSizeOverridesFixedMode() { |
| this.sizeConfigFixedMode.setDistributeRemainingSpace(false); |
| |
| this.sizeConfigFixedMode.setPercentage(1, 40); |
| |
| assertEquals(127, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(229, this.sizeConfigFixedMode.getAggregateSize(2)); |
| } |
| |
| @Test |
| public void getSizeFixedModeAfterAdding() { |
| this.sizeConfigFixedMode.calculatePercentages(510, 4); |
| this.sizeConfigFixedMode.setPercentage(2, 50); |
| this.sizeConfigFixedMode.setPercentage(3, 50); |
| |
| // the correct double value would be 127.5 - because of the rounding, as |
| // there are no double pixels, and the distribution of the missing |
| // pixels the values for the first 2 positions will be 128 |
| assertEquals(128, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(128, this.sizeConfigFixedMode.getSize(1)); |
| assertEquals(127, this.sizeConfigFixedMode.getSize(2)); |
| assertEquals(127, this.sizeConfigFixedMode.getSize(3)); |
| } |
| |
| @Test |
| public void getSizeFixedModeAfterAddingTooMuch() { |
| this.sizeConfigFixedMode.calculatePercentages(255, 3); |
| this.sizeConfigFixedMode.setPercentage(2, 50); |
| |
| assertEquals(85, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(85, this.sizeConfigFixedMode.getSize(1)); |
| assertEquals(85, this.sizeConfigFixedMode.getSize(2)); |
| } |
| |
| @Test |
| public void getSizeFixedModeAfterAddingWithNoSize() { |
| this.sizeConfigFixedMode.calculatePercentages(255, 3); |
| |
| assertEquals(127, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(127, this.sizeConfigFixedMode.getSize(1)); |
| assertEquals(1, this.sizeConfigFixedMode.getSize(2)); |
| } |
| |
| @Test |
| public void getAggregateSizeFixedModeAfterAdding() { |
| this.sizeConfigFixedMode.calculatePercentages(510, 4); |
| this.sizeConfigFixedMode.setPercentage(2, 50); |
| this.sizeConfigFixedMode.setPercentage(3, 50); |
| |
| assertEquals(128, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(256, this.sizeConfigFixedMode.getAggregateSize(2)); |
| assertEquals(383, this.sizeConfigFixedMode.getAggregateSize(3)); |
| assertEquals(510, this.sizeConfigFixedMode.getAggregateSize(4)); |
| } |
| |
| @Test |
| public void getAggregateSizeFixedModeAfterAddingTooMuch() { |
| this.sizeConfigFixedMode.calculatePercentages(255, 3); |
| this.sizeConfigFixedMode.setPercentage(2, 50); |
| |
| assertEquals(85, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(170, this.sizeConfigFixedMode.getAggregateSize(2)); |
| assertEquals(255, this.sizeConfigFixedMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void getAggregateSizeFixedModeSpaceChangeCacheCheck() { |
| assertEquals(128, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(255, this.sizeConfigFixedMode.getAggregateSize(2)); |
| |
| this.sizeConfigFixedMode.calculatePercentages(500, 2); |
| |
| assertEquals(250, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(500, this.sizeConfigFixedMode.getAggregateSize(2)); |
| |
| this.sizeConfigFixedMode.calculatePercentages(255, 3); |
| |
| assertEquals(127, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(127, this.sizeConfigFixedMode.getSize(1)); |
| assertEquals(1, this.sizeConfigFixedMode.getSize(2)); |
| } |
| |
| @Test |
| public void getAggregateSizeFixedModeSizeChangeCacheCheck() { |
| this.sizeConfigFixedMode.setDistributeRemainingSpace(false); |
| |
| assertEquals(128, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(255, this.sizeConfigFixedMode.getAggregateSize(2)); |
| |
| this.sizeConfigFixedMode.setPercentage(1, 40); |
| |
| assertEquals(127, this.sizeConfigFixedMode.getAggregateSize(1)); |
| assertEquals(229, this.sizeConfigFixedMode.getAggregateSize(2)); |
| } |
| |
| @Test |
| public void getSizeConfigMixedPercentageMode() { |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(400, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(2)); |
| } |
| |
| @Test |
| public void getAggregateSizeConfigMixedPercentageMode() { |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getAggregateSize(1)); |
| assertEquals(700, this.sizeConfigMixedPercentageMode.getAggregateSize(2)); |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void sizeOverrideMixedMode() { |
| this.sizeConfigMixedPercentageMode.setSize(2, 400); |
| |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(400, this.sizeConfigMixedPercentageMode.getSize(2)); |
| } |
| |
| @Test |
| public void percentageOverrideMixedMode() { |
| this.sizeConfigMixedPercentageMode.setPercentage(2, 40); |
| |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(400, this.sizeConfigMixedPercentageMode.getSize(2)); |
| } |
| |
| @Test |
| public void getAggregateSizeWithSizeOverridesMixedMode() { |
| this.sizeConfigMixedPercentageMode.setPercentage(2, 40); |
| |
| assertEquals(600, this.sizeConfigMixedPercentageMode.getAggregateSize(2)); |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void getSizeMixedPercentageModeAfterAdding() { |
| this.sizeConfigMixedPercentageMode.calculatePercentages(1000, 4); |
| |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(200, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(2)); |
| assertEquals(200, this.sizeConfigMixedPercentageMode.getSize(3)); |
| } |
| |
| @Test |
| public void getSizeMixedPercentageModeAfterAddingExactly100() { |
| this.sizeConfigMixedPercentageMode.setPercentage(3, 40); |
| |
| this.sizeConfigMixedPercentageMode.calculatePercentages(1000, 4); |
| |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(0, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(2)); |
| assertEquals(400, this.sizeConfigMixedPercentageMode.getSize(3)); |
| } |
| |
| @Test |
| public void getSizeMixedPercentageModeAfterAddingTooMuch() { |
| this.sizeConfigMixedPercentageMode.setPercentage(0, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(2, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(3, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(4, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(5, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(6, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(7, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(8, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(9, 20); |
| this.sizeConfigMixedPercentageMode.setPercentage(10, 20); |
| |
| this.sizeConfigMixedPercentageMode.calculatePercentages(1000, 11); |
| |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(0, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(2)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(3)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(4)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(5)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(6)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(7)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(8)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(9)); |
| assertEquals(100, this.sizeConfigMixedPercentageMode.getSize(10)); |
| } |
| |
| @Test |
| public void getAggregateSizeMixedModeAfterAdding() { |
| this.sizeConfigMixedPercentageMode.calculatePercentages(1000, 4); |
| |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getAggregateSize(1)); |
| assertEquals(500, this.sizeConfigMixedPercentageMode.getAggregateSize(2)); |
| assertEquals(800, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(4)); |
| } |
| |
| @Test |
| public void getAggregateSizeMixedModeSpaceChangeCacheCheck() { |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getAggregateSize(1)); |
| assertEquals(700, this.sizeConfigMixedPercentageMode.getAggregateSize(2)); |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| |
| this.sizeConfigMixedPercentageMode.calculatePercentages(1000, 4); |
| |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getAggregateSize(1)); |
| assertEquals(500, this.sizeConfigMixedPercentageMode.getAggregateSize(2)); |
| assertEquals(800, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(4)); |
| } |
| |
| @Test |
| public void getAggregateSizeMixedModeSizeChangeCacheCheck() { |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getAggregateSize(1)); |
| assertEquals(700, this.sizeConfigMixedPercentageMode.getAggregateSize(2)); |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| |
| this.sizeConfigMixedPercentageMode.setPercentage(2, 40); |
| |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getAggregateSize(1)); |
| assertEquals(600, this.sizeConfigMixedPercentageMode.getAggregateSize(2)); |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void getSizeConfigMixedMode() { |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedMode.getSize(2)); |
| } |
| |
| @Test |
| public void getAggregateSizeConfigMixedMode() { |
| assertEquals(100, this.sizeConfigMixedMode.getAggregateSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getAggregateSize(2)); |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void getSizeMixedModeAfterAdding() { |
| this.sizeConfigMixedMode.calculatePercentages(500, 4); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(150, this.sizeConfigMixedMode.getSize(2)); |
| assertEquals(150, this.sizeConfigMixedMode.getSize(3)); |
| } |
| |
| @Test |
| public void getSizeMixedModeAfterAddingExactly100() { |
| this.sizeConfigMixedMode.setPercentage(2, 25); |
| this.sizeConfigMixedMode.setPercentage(3, 25); |
| this.sizeConfigMixedMode.setPercentage(4, 25); |
| this.sizeConfigMixedMode.setPercentage(5, 25); |
| |
| this.sizeConfigMixedMode.calculatePercentages(1000, 6); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getSize(2)); |
| assertEquals(200, this.sizeConfigMixedMode.getSize(3)); |
| assertEquals(200, this.sizeConfigMixedMode.getSize(4)); |
| assertEquals(200, this.sizeConfigMixedMode.getSize(5)); |
| } |
| |
| @Test |
| public void getSizeMixedModeAfterAddingTooMuch() { |
| this.sizeConfigMixedMode.setPercentage(2, 40); |
| this.sizeConfigMixedMode.setPercentage(3, 40); |
| this.sizeConfigMixedMode.setPercentage(4, 40); |
| this.sizeConfigMixedMode.setPercentage(5, 40); |
| |
| this.sizeConfigMixedMode.calculatePercentages(600, 6); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| // 4 additional percentage sized positions that have the same percentage |
| // size |
| // as 400 pixels remain after the fixed sized positions, all positions |
| // should have 100 pixels |
| assertEquals(100, this.sizeConfigMixedMode.getSize(2)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(3)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(4)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(5)); |
| } |
| |
| @Test |
| public void getSizeMixedMixedModeAfterAddingTooMuch() { |
| this.sizeConfigMixedMode.setPercentage(3, 40); |
| this.sizeConfigMixedMode.setPercentage(4, 40); |
| this.sizeConfigMixedMode.setPercentage(5, 40); |
| this.sizeConfigMixedMode.setPercentage(6, 40); |
| |
| this.sizeConfigMixedMode.calculatePercentages(600, 7); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| // this column does not have a percentage width set, so it will be 0 if |
| // other columns with fixed percentage widths are added |
| assertEquals(0, this.sizeConfigMixedMode.getSize(2)); |
| // 4 additional percentage sized positions that have the same percentage |
| // size |
| // as 400 pixels remain after the fixed sized positions, all positions |
| // should have 100 pixels |
| assertEquals(100, this.sizeConfigMixedMode.getSize(3)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(4)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(5)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(6)); |
| } |
| |
| @Test |
| public void getAggregateMixedModeSpaceChangeCacheCheck() { |
| assertEquals(100, this.sizeConfigMixedMode.getAggregateSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getAggregateSize(2)); |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(3)); |
| |
| this.sizeConfigMixedMode.calculatePercentages(1000, 3); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getAggregateSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getAggregateSize(2)); |
| assertEquals(1000, this.sizeConfigMixedMode.getAggregateSize(3)); |
| |
| this.sizeConfigMixedMode.calculatePercentages(500, 4); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getAggregateSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getAggregateSize(2)); |
| assertEquals(350, this.sizeConfigMixedMode.getAggregateSize(3)); |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(4)); |
| } |
| |
| @Test |
| public void getAggregateMixedModeSizeChangeCacheCheck() { |
| assertEquals(100, this.sizeConfigMixedMode.getAggregateSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getAggregateSize(2)); |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(3)); |
| |
| this.sizeConfigMixedMode.setPercentage(2, 25); |
| this.sizeConfigMixedMode.setPercentage(3, 25); |
| this.sizeConfigMixedMode.setPercentage(4, 25); |
| this.sizeConfigMixedMode.setPercentage(5, 25); |
| |
| this.sizeConfigMixedMode.calculatePercentages(1000, 6); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getAggregateSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getAggregateSize(2)); |
| assertEquals(400, this.sizeConfigMixedMode.getAggregateSize(3)); |
| assertEquals(600, this.sizeConfigMixedMode.getAggregateSize(4)); |
| assertEquals(800, this.sizeConfigMixedMode.getAggregateSize(5)); |
| assertEquals(1000, this.sizeConfigMixedMode.getAggregateSize(6)); |
| } |
| |
| @Test |
| public void setSizeCalculation() { |
| assertEquals(100, this.sizeConfigCalculationMode.getSize(5)); |
| assertEquals(1000, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| |
| // resize position 5 to 150 |
| this.sizeConfigCalculationMode.setSize(5, 150); |
| |
| // the position itself needs to be 150 |
| assertEquals(150, this.sizeConfigCalculationMode.getSize(5)); |
| // the other cells should not be modified as they are fixed by default |
| assertEquals(100, this.sizeConfigCalculationMode.getSize(4)); |
| // despite the adjacent position to the right, which should be reduced |
| assertEquals(50, this.sizeConfigCalculationMode.getSize(6)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(1000, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| } |
| |
| @Test |
| public void setSizeCalculationWithoutFixPercentageValues() { |
| this.sizeConfigCalculationMode.setFixPercentageValuesOnResize(false); |
| |
| assertEquals(100, this.sizeConfigCalculationMode.getSize(5)); |
| assertEquals(1000, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| |
| // resize position 5 to 150 |
| this.sizeConfigCalculationMode.setSize(5, 150); |
| |
| // the position itself needs to be 150 |
| assertEquals(150, this.sizeConfigCalculationMode.getSize(5)); |
| // the other cells need to be modified where all positions are adjusted |
| // as they are |
| // configured to take the remaining space |
| assertEquals(94, this.sizeConfigCalculationMode.getSize(4)); |
| assertEquals(94, this.sizeConfigCalculationMode.getSize(6)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(1000, this.sizeConfigCalculationMode.getAggregateSize(10)); |
| } |
| |
| @Test |
| public void setSizeFixed() { |
| this.sizeConfigFixedMode.calculatePercentages(400, 2); |
| |
| assertEquals(200, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(200, this.sizeConfigFixedMode.getSize(1)); |
| assertEquals(400, this.sizeConfigFixedMode.getAggregateSize(2)); |
| |
| // resize position 0 to 25 percent |
| this.sizeConfigFixedMode.setSize(0, 100); |
| |
| // the position itself needs to be 100 |
| assertEquals(100, this.sizeConfigFixedMode.getSize(0)); |
| assertEquals(300, this.sizeConfigFixedMode.getSize(1)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(400, this.sizeConfigFixedMode.getAggregateSize(2)); |
| } |
| |
| @Test |
| public void setSizeMixedPercentage() { |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(400, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(2)); |
| |
| // resize position 0 to 20 percent |
| this.sizeConfigMixedPercentageMode.setSize(0, 200); |
| |
| // the position itself needs to be 200 |
| assertEquals(200, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(500, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| |
| // resize position 2 to 20 percent |
| this.sizeConfigMixedPercentageMode.setSize(2, 200); |
| |
| // the position itself needs to be 200 |
| assertEquals(200, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(600, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(200, this.sizeConfigMixedPercentageMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| |
| // resize position 1 to 50 percent |
| this.sizeConfigMixedPercentageMode.setSize(1, 500); |
| |
| // the position itself needs to be 200 |
| assertEquals(200, this.sizeConfigMixedPercentageMode.getSize(0)); |
| assertEquals(500, this.sizeConfigMixedPercentageMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedPercentageMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(1000, this.sizeConfigMixedPercentageMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void setSizeMixed() { |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedMode.getSize(2)); |
| |
| // resize position 0 to 200 |
| this.sizeConfigMixedMode.setSize(0, 200); |
| |
| // the position itself needs to be 200 |
| assertEquals(200, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(200, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(3)); |
| |
| // resize position 1 to 200 |
| this.sizeConfigMixedMode.setSize(1, 200); |
| |
| // the position itself needs to be 200 |
| assertEquals(200, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(200, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(3)); |
| |
| // resize position 2 |
| this.sizeConfigMixedMode.setSize(2, 500); |
| |
| // no changes as last column should take remaining space |
| assertEquals(200, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(200, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void lastColumnTakesRemaining() { |
| SizeConfig sizeConfigMixedLastTakesAll = new SizeConfig(DEFAULT_SIZE); |
| sizeConfigMixedLastTakesAll.setPercentageSizing(3, true); |
| sizeConfigMixedLastTakesAll.calculatePercentages(500, 4); |
| |
| assertEquals(100, sizeConfigMixedLastTakesAll.getSize(0)); |
| assertEquals(100, sizeConfigMixedLastTakesAll.getSize(1)); |
| assertEquals(100, sizeConfigMixedLastTakesAll.getSize(2)); |
| assertEquals(200, sizeConfigMixedLastTakesAll.getSize(3)); |
| } |
| |
| @Test |
| public void remainingSpaceShouldBeDistributedOnFixedPercentageColumns() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentage(0, 25); |
| sizeConfig.setPercentage(1, 25); |
| sizeConfig.setPercentage(2, 50); |
| |
| sizeConfig.calculatePercentages(500, 3); |
| |
| assertEquals(500, sizeConfig.getAggregateSize(3)); |
| assertEquals(125, sizeConfig.getSize(0)); |
| assertEquals(125, sizeConfig.getSize(1)); |
| assertEquals(250, sizeConfig.getSize(2)); |
| |
| sizeConfig.setPercentage(2, 0); |
| sizeConfig.calculatePercentages(500, 3); |
| |
| assertEquals(500, sizeConfig.getAggregateSize(3)); |
| assertEquals(250, sizeConfig.getSize(0)); |
| assertEquals(250, sizeConfig.getSize(1)); |
| assertEquals(0, sizeConfig.getSize(2)); |
| } |
| |
| @Test |
| public void remainingSpaceShouldBeDistributedOnFixedPercentageColumns2() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentage(0, 25); |
| sizeConfig.setPercentage(1, 25); |
| sizeConfig.setPercentage(2, 50); |
| |
| sizeConfig.calculatePercentages(201, 3); |
| |
| assertEquals(201, sizeConfig.getAggregateSize(3)); |
| assertEquals(51, sizeConfig.getSize(0)); |
| assertEquals(50, sizeConfig.getSize(1)); |
| assertEquals(100, sizeConfig.getSize(2)); |
| |
| sizeConfig.setPercentage(2, 0); |
| sizeConfig.calculatePercentages(201, 3); |
| |
| assertEquals(201, sizeConfig.getAggregateSize(3)); |
| assertEquals(101, sizeConfig.getSize(0)); |
| assertEquals(100, sizeConfig.getSize(1)); |
| assertEquals(0, sizeConfig.getSize(2)); |
| } |
| |
| @Test |
| public void mixedConfigurationShouldBeCorrectlyCalculatedWithGeneralPercentage() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.setPercentage(0, 5); |
| sizeConfig.setPercentageSizing(1, false); |
| sizeConfig.setSize(1, 130); |
| sizeConfig.setPercentageSizing(4, false); |
| sizeConfig.setSize(4, 200); |
| sizeConfig.setPercentageSizing(5, false); |
| sizeConfig.setSize(5, 200); |
| |
| sizeConfig.calculatePercentages(961, 7); |
| |
| assertEquals(961, sizeConfig.getAggregateSize(7)); |
| assertEquals(22, sizeConfig.getSize(0)); |
| assertEquals(130, sizeConfig.getSize(1)); |
| assertEquals(137, sizeConfig.getSize(2)); |
| assertEquals(136, sizeConfig.getSize(3)); |
| assertEquals(200, sizeConfig.getSize(4)); |
| assertEquals(200, sizeConfig.getSize(5)); |
| assertEquals(136, sizeConfig.getSize(6)); |
| } |
| |
| @Test |
| public void mixedConfigurationShouldBeCorrectlyCalculatedWithoutGeneralPercentage() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| |
| sizeConfig.setPercentage(0, 5); |
| sizeConfig.setSize(1, 130); |
| sizeConfig.setPercentageSizing(2, true); |
| sizeConfig.setPercentageSizing(3, true); |
| sizeConfig.setSize(4, 200); |
| sizeConfig.setSize(5, 200); |
| sizeConfig.setPercentageSizing(6, true); |
| |
| sizeConfig.calculatePercentages(961, 7); |
| |
| assertEquals(961, sizeConfig.getAggregateSize(7)); |
| assertEquals(49, sizeConfig.getSize(0)); |
| assertEquals(130, sizeConfig.getSize(1)); |
| assertEquals(128, sizeConfig.getSize(2)); |
| assertEquals(127, sizeConfig.getSize(3)); |
| assertEquals(200, sizeConfig.getSize(4)); |
| assertEquals(200, sizeConfig.getSize(5)); |
| assertEquals(127, sizeConfig.getSize(6)); |
| } |
| |
| @Test |
| public void defaultMinSizeRespected() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.calculatePercentages(1000, 5); |
| |
| assertEquals(200, sizeConfig.getAggregateSize(1)); |
| assertEquals(400, sizeConfig.getAggregateSize(2)); |
| assertEquals(600, sizeConfig.getAggregateSize(3)); |
| assertEquals(800, sizeConfig.getAggregateSize(4)); |
| assertEquals(1000, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(100, sizeConfig.getAggregateSize(2)); |
| assertEquals(150, sizeConfig.getAggregateSize(3)); |
| assertEquals(200, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setDefaultMinSize(100); |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(200, sizeConfig.getAggregateSize(2)); |
| assertEquals(300, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| assertEquals(500, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void singleMinSizeRespected() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(100, sizeConfig.getAggregateSize(2)); |
| assertEquals(150, sizeConfig.getAggregateSize(3)); |
| assertEquals(200, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setMinSize(0, 100); |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(138, sizeConfig.getAggregateSize(2)); |
| assertEquals(176, sizeConfig.getAggregateSize(3)); |
| assertEquals(213, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setMinSize(0, 0); |
| sizeConfig.setMinSize(4, 100); |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(38, sizeConfig.getAggregateSize(1)); |
| assertEquals(76, sizeConfig.getAggregateSize(2)); |
| assertEquals(113, sizeConfig.getAggregateSize(3)); |
| assertEquals(150, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void defaultMinSizeRespectedWithFixedPercentageSize() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentage(0, 20); |
| sizeConfig.setPercentage(1, 20); |
| sizeConfig.setPercentage(2, 20); |
| sizeConfig.setPercentage(3, 20); |
| sizeConfig.setPercentage(4, 20); |
| sizeConfig.calculatePercentages(1000, 5); |
| |
| assertEquals(200, sizeConfig.getAggregateSize(1)); |
| assertEquals(400, sizeConfig.getAggregateSize(2)); |
| assertEquals(600, sizeConfig.getAggregateSize(3)); |
| assertEquals(800, sizeConfig.getAggregateSize(4)); |
| assertEquals(1000, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(100, sizeConfig.getAggregateSize(2)); |
| assertEquals(150, sizeConfig.getAggregateSize(3)); |
| assertEquals(200, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setDefaultMinSize(100); |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(200, sizeConfig.getAggregateSize(2)); |
| assertEquals(300, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| assertEquals(500, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void singleMinSizeRespectedWithFixedPercentageSize() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentage(0, 20); |
| sizeConfig.setPercentage(1, 20); |
| sizeConfig.setPercentage(2, 20); |
| sizeConfig.setPercentage(3, 20); |
| sizeConfig.setPercentage(4, 20); |
| |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(100, sizeConfig.getAggregateSize(2)); |
| assertEquals(150, sizeConfig.getAggregateSize(3)); |
| assertEquals(200, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setMinSize(0, 100); |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(138, sizeConfig.getAggregateSize(2)); |
| assertEquals(176, sizeConfig.getAggregateSize(3)); |
| assertEquals(213, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setMinSize(0, 0); |
| sizeConfig.setMinSize(4, 100); |
| sizeConfig.calculatePercentages(250, 5); |
| |
| assertEquals(38, sizeConfig.getAggregateSize(1)); |
| assertEquals(76, sizeConfig.getAggregateSize(2)); |
| assertEquals(113, sizeConfig.getAggregateSize(3)); |
| assertEquals(150, sizeConfig.getAggregateSize(4)); |
| assertEquals(250, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void singleMinSizeRespectedWithFixedPercentageSizeDifferentRatio() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentage(0, 50); |
| sizeConfig.setPercentage(1, 50); |
| sizeConfig.setPercentage(2, 50); |
| sizeConfig.setPercentage(3, 100); |
| |
| sizeConfig.calculatePercentages(250, 4); |
| |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(100, sizeConfig.getAggregateSize(2)); |
| assertEquals(150, sizeConfig.getAggregateSize(3)); |
| assertEquals(250, sizeConfig.getAggregateSize(4)); |
| |
| sizeConfig.setMinSize(0, 100); |
| sizeConfig.calculatePercentages(250, 4); |
| |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(138, sizeConfig.getAggregateSize(2)); |
| assertEquals(175, sizeConfig.getAggregateSize(3)); |
| assertEquals(250, sizeConfig.getAggregateSize(4)); |
| |
| sizeConfig.setMinSize(0, 0); |
| sizeConfig.setMinSize(2, 100); |
| sizeConfig.calculatePercentages(250, 4); |
| |
| assertEquals(38, sizeConfig.getAggregateSize(1)); |
| assertEquals(75, sizeConfig.getAggregateSize(2)); |
| assertEquals(175, sizeConfig.getAggregateSize(3)); |
| assertEquals(250, sizeConfig.getAggregateSize(4)); |
| } |
| |
| @Test |
| public void mixedPercentageSizeWithMinSize_oneFixedPercentageWithMinSize() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.setPercentageSizing(1, false); |
| sizeConfig.setPercentageSizing(3, false); |
| |
| sizeConfig.setPercentage(0, 50); |
| sizeConfig.setSize(1, 150); |
| sizeConfig.setSize(3, 150); |
| |
| // check for 4 columns - one fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(200, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - one fixed percentage, two dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(200, sizeConfig.getAggregateSize(2)); |
| assertEquals(225, sizeConfig.getAggregateSize(3)); |
| assertEquals(375, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setMinSize(0, 100); |
| |
| // check for 4 columns - one fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - one fixed percentage, two dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // check for 4 columns - one fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(450, 4); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(300, sizeConfig.getAggregateSize(3)); |
| assertEquals(450, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - one fixed percentage, two dynamic percentage |
| sizeConfig.calculatePercentages(450, 5); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(275, sizeConfig.getAggregateSize(3)); |
| assertEquals(425, sizeConfig.getAggregateSize(4)); |
| assertEquals(450, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void mixedPercentageSizeWithMinSize_twoFixedPercentage() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.setPercentageSizing(1, false); |
| sizeConfig.setPercentageSizing(3, false); |
| |
| sizeConfig.setPercentage(0, 50); |
| sizeConfig.setSize(1, 150); |
| sizeConfig.setPercentage(2, 50); |
| sizeConfig.setSize(3, 150); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(200, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - two fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(50, sizeConfig.getAggregateSize(1)); |
| assertEquals(200, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setMinSize(0, 100); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - two fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // reduce min size to have remaining space that can be taken by other |
| // columns |
| sizeConfig.setMinSize(0, 75); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(75, sizeConfig.getAggregateSize(1)); |
| assertEquals(225, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(75, sizeConfig.getAggregateSize(1)); |
| assertEquals(225, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - two fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(75, sizeConfig.getAggregateSize(1)); |
| assertEquals(225, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void mixedPercentageSizeWithMinSize_twoFixedPercentage_not100percent() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.setPercentageSizing(1, false); |
| sizeConfig.setPercentageSizing(3, false); |
| |
| sizeConfig.setPercentage(0, 40); |
| sizeConfig.setSize(1, 150); |
| sizeConfig.setPercentage(2, 40); |
| sizeConfig.setSize(3, 150); |
| |
| sizeConfig.setDistributeRemainingSpace(false); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(40, sizeConfig.getAggregateSize(1)); |
| assertEquals(190, sizeConfig.getAggregateSize(2)); |
| assertEquals(230, sizeConfig.getAggregateSize(3)); |
| assertEquals(380, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - two fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(40, sizeConfig.getAggregateSize(1)); |
| assertEquals(190, sizeConfig.getAggregateSize(2)); |
| assertEquals(230, sizeConfig.getAggregateSize(3)); |
| assertEquals(380, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.setMinSize(0, 100); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - two fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // reduce min size to have remaining space that can be taken by other |
| // columns |
| sizeConfig.setMinSize(0, 75); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(75, sizeConfig.getAggregateSize(1)); |
| assertEquals(225, sizeConfig.getAggregateSize(2)); |
| assertEquals(230, sizeConfig.getAggregateSize(3)); |
| assertEquals(380, sizeConfig.getAggregateSize(4)); |
| |
| // enable distribute remaining space |
| sizeConfig.setDistributeRemainingSpace(true); |
| |
| // check for 4 columns - two fixed percentage |
| sizeConfig.calculatePercentages(400, 4); |
| assertEquals(75, sizeConfig.getAggregateSize(1)); |
| assertEquals(225, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(400, sizeConfig.getAggregateSize(4)); |
| |
| // check for 5 columns - two fixed percentage, one dynamic percentage |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(75, sizeConfig.getAggregateSize(1)); |
| assertEquals(225, sizeConfig.getAggregateSize(2)); |
| assertEquals(230, sizeConfig.getAggregateSize(3)); |
| assertEquals(380, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void mixedPercentageSizeWithMinSize_multiFixedPercentage() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.setPercentageSizing(1, false); |
| sizeConfig.setPercentageSizing(2, false); |
| sizeConfig.setDistributeRemainingSpace(false); |
| |
| sizeConfig.setPercentage(0, 20); |
| sizeConfig.setSize(1, 100); |
| sizeConfig.setSize(2, 100); |
| sizeConfig.setPercentage(3, 25); |
| sizeConfig.setPercentage(4, 25); |
| sizeConfig.setPercentage(5, 10); |
| |
| sizeConfig.calculatePercentages(600, 6); |
| assertEquals(80, sizeConfig.getAggregateSize(1)); |
| assertEquals(180, sizeConfig.getAggregateSize(2)); |
| assertEquals(280, sizeConfig.getAggregateSize(3)); |
| assertEquals(380, sizeConfig.getAggregateSize(4)); |
| assertEquals(480, sizeConfig.getAggregateSize(5)); |
| assertEquals(520, sizeConfig.getAggregateSize(6)); |
| |
| sizeConfig.setMinSize(0, 150); |
| |
| sizeConfig.calculatePercentages(600, 6); |
| assertEquals(150, sizeConfig.getAggregateSize(1)); |
| assertEquals(250, sizeConfig.getAggregateSize(2)); |
| assertEquals(350, sizeConfig.getAggregateSize(3)); |
| assertEquals(450, sizeConfig.getAggregateSize(4)); |
| assertEquals(550, sizeConfig.getAggregateSize(5)); |
| assertEquals(590, sizeConfig.getAggregateSize(6)); |
| } |
| |
| @Test |
| public void shouldUpdateMinSizeOnResize() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentage(0, 20); |
| sizeConfig.setPercentage(1, 20); |
| sizeConfig.setPercentage(2, 20); |
| sizeConfig.setPercentage(3, 20); |
| sizeConfig.setPercentage(4, 20); |
| |
| sizeConfig.setMinSize(0, 100); |
| |
| sizeConfig.calculatePercentages(600, 5); |
| assertEquals(120, sizeConfig.getAggregateSize(1)); |
| assertEquals(240, sizeConfig.getAggregateSize(2)); |
| assertEquals(360, sizeConfig.getAggregateSize(3)); |
| assertEquals(480, sizeConfig.getAggregateSize(4)); |
| assertEquals(600, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(175, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(325, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // simulate setting a size of a position with minimum to a lower value |
| // than the minimum, e.g. make a column smaller than the min |
| sizeConfig.setSize(0, 60); |
| |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(60, sizeConfig.getAggregateSize(1)); |
| assertEquals(175, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(325, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| } |
| |
| @Test |
| public void shouldUpdateMinSizeOnResizeWithNoFixedPercentage() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| |
| sizeConfig.setMinSize(0, 100); |
| |
| sizeConfig.calculatePercentages(600, 5); |
| assertEquals(120, sizeConfig.getAggregateSize(1)); |
| assertEquals(240, sizeConfig.getAggregateSize(2)); |
| assertEquals(360, sizeConfig.getAggregateSize(3)); |
| assertEquals(480, sizeConfig.getAggregateSize(4)); |
| assertEquals(600, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(175, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(325, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // simulate setting a size of a position with minimum to a lower value |
| // than the minimum, e.g. make a column smaller than the min |
| sizeConfig.setSize(0, 60); |
| |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(60, sizeConfig.getAggregateSize(1)); |
| // as we reduce the width of the first position, only the second |
| // position should increase. therefore the aggregate sizes should stay |
| // the same as before |
| assertEquals(175, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(325, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // min size was adjusted because of the resize |
| assertEquals(60, sizeConfig.getMinSize(0)); |
| } |
| |
| @Test |
| public void shouldUpdateMinSizeOnResizeWithNoFixedPercentageNoFixPercentageValues() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| |
| // disable fixing of dynamic percentage values so all positions get |
| // resized |
| sizeConfig.setFixPercentageValuesOnResize(false); |
| |
| sizeConfig.setMinSize(0, 100); |
| |
| sizeConfig.calculatePercentages(600, 5); |
| assertEquals(120, sizeConfig.getAggregateSize(1)); |
| assertEquals(240, sizeConfig.getAggregateSize(2)); |
| assertEquals(360, sizeConfig.getAggregateSize(3)); |
| assertEquals(480, sizeConfig.getAggregateSize(4)); |
| assertEquals(600, sizeConfig.getAggregateSize(5)); |
| |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(100, sizeConfig.getAggregateSize(1)); |
| assertEquals(175, sizeConfig.getAggregateSize(2)); |
| assertEquals(250, sizeConfig.getAggregateSize(3)); |
| assertEquals(325, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // simulate setting a size of a position with minimum to a lower value |
| // than the minimum, e.g. make a column smaller than the min |
| sizeConfig.setSize(0, 60); |
| |
| sizeConfig.calculatePercentages(400, 5); |
| assertEquals(60, sizeConfig.getAggregateSize(1)); |
| assertEquals(145, sizeConfig.getAggregateSize(2)); |
| assertEquals(230, sizeConfig.getAggregateSize(3)); |
| assertEquals(315, sizeConfig.getAggregateSize(4)); |
| assertEquals(400, sizeConfig.getAggregateSize(5)); |
| |
| // min size was adjusted because of the resize |
| assertEquals(60, sizeConfig.getMinSize(0)); |
| } |
| |
| @Test |
| public void shouldNotExceedSpaceOnScaling() { |
| SizeConfig scaledSizeConfig = new SizeConfig(DEFAULT_SIZE); |
| scaledSizeConfig.setPercentageSizing(true); |
| |
| scaledSizeConfig.calculatePercentages(134, 4); |
| |
| assertEquals(34, scaledSizeConfig.getSize(0)); |
| assertEquals(34, scaledSizeConfig.getSize(1)); |
| assertEquals(33, scaledSizeConfig.getSize(2)); |
| assertEquals(33, scaledSizeConfig.getSize(3)); |
| assertEquals(134, scaledSizeConfig.getAggregateSize(4)); |
| |
| // use dpi of 144 which will result in a dpi factor of 1.5 |
| scaledSizeConfig.setDpiConverter(new FixedScalingDpiConverter(144)); |
| |
| scaledSizeConfig.calculatePercentages(201, 4); |
| |
| assertEquals(51, scaledSizeConfig.getSize(0)); |
| assertEquals(50, scaledSizeConfig.getSize(1)); |
| assertEquals(50, scaledSizeConfig.getSize(2)); |
| assertEquals(50, scaledSizeConfig.getSize(3)); |
| assertEquals(201, scaledSizeConfig.getAggregateSize(4)); |
| } |
| |
| @Test |
| public void shouldNotExceedSpaceOnScaling2() { |
| SizeConfig scaledSizeConfig = new SizeConfig(DEFAULT_SIZE); |
| scaledSizeConfig.setPercentageSizing(true); |
| |
| scaledSizeConfig.calculatePercentages(375, 3); |
| |
| assertEquals(125, scaledSizeConfig.getSize(0)); |
| assertEquals(125, scaledSizeConfig.getSize(1)); |
| assertEquals(125, scaledSizeConfig.getSize(2)); |
| assertEquals(375, scaledSizeConfig.getAggregateSize(3)); |
| |
| // use dpi of 144 which will result in a dpi factor of 1.5 |
| scaledSizeConfig.setDpiConverter(new FixedScalingDpiConverter(144)); |
| |
| scaledSizeConfig.calculatePercentages(563, 3); |
| |
| assertEquals(188, scaledSizeConfig.getSize(0)); |
| assertEquals(188, scaledSizeConfig.getSize(1)); |
| assertEquals(187, scaledSizeConfig.getSize(2)); |
| assertEquals(563, scaledSizeConfig.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void setSizeMixedScaled() { |
| // use dpi of 144 which will result in a dpi factor of 1.5 |
| this.sizeConfigMixedMode.setDpiConverter(new FixedScalingDpiConverter(144)); |
| this.sizeConfigMixedMode.calculatePercentages(750, 3); |
| |
| assertEquals(150, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(150, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(450, this.sizeConfigMixedMode.getSize(2)); |
| |
| // resize position 0 to 200 |
| this.sizeConfigMixedMode.setSize(0, 200); |
| |
| // the position itself needs to be 200 |
| assertEquals(300, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(150, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(750, this.sizeConfigMixedMode.getAggregateSize(3)); |
| |
| // resize position 1 to 200 |
| this.sizeConfigMixedMode.setSize(1, 200); |
| |
| // the position itself needs to be 200 |
| assertEquals(300, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(300, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(150, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(750, this.sizeConfigMixedMode.getAggregateSize(3)); |
| |
| // resize position 2 |
| this.sizeConfigMixedMode.setSize(2, 500); |
| |
| // no changes as last column should take remaining space |
| assertEquals(300, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(300, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(150, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(750, this.sizeConfigMixedMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void setSizeMixedScaled2() { |
| // use dpi of 144 which will result in a dpi factor of 1.5 |
| this.sizeConfigMixedMode.setDpiConverter(new FixedScalingDpiConverter(144)); |
| this.sizeConfigMixedMode.calculatePercentages(750, 3); |
| |
| assertEquals(150, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(150, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(450, this.sizeConfigMixedMode.getSize(2)); |
| |
| this.sizeConfigMixedMode.setSize(1, 350); |
| |
| assertEquals(150, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(525, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(75, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(750, this.sizeConfigMixedMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void setSizeMixed2() { |
| |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(100, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(300, this.sizeConfigMixedMode.getSize(2)); |
| |
| this.sizeConfigMixedMode.setSize(1, 350); |
| |
| assertEquals(100, this.sizeConfigMixedMode.getSize(0)); |
| assertEquals(350, this.sizeConfigMixedMode.getSize(1)); |
| assertEquals(50, this.sizeConfigMixedMode.getSize(2)); |
| |
| // as we're in percentage mode, the aggregate size shouldn't have |
| // changed |
| assertEquals(500, this.sizeConfigMixedMode.getAggregateSize(3)); |
| } |
| |
| @Test |
| public void shouldInitiallySetSizeAsPercentage() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.setSize(0, 25); |
| sizeConfig.setSize(1, 25); |
| sizeConfig.setSize(2, 50); |
| sizeConfig.calculatePercentages(1000, 3); |
| |
| assertEquals(250, sizeConfig.getSize(0)); |
| assertEquals(250, sizeConfig.getSize(1)); |
| assertEquals(500, sizeConfig.getSize(2)); |
| } |
| |
| @Test |
| public void shouldInitiallySetSizeAsPercentageAfter() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setSize(0, 25); |
| sizeConfig.setSize(1, 25); |
| sizeConfig.setSize(2, 50); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.calculatePercentages(1000, 3); |
| |
| assertEquals(250, sizeConfig.getSize(0)); |
| assertEquals(250, sizeConfig.getSize(1)); |
| assertEquals(500, sizeConfig.getSize(2)); |
| } |
| |
| @Test |
| public void shouldKeepConsistentPercentagesOnExceedingSpace() { |
| SizeConfig sizeConfig = new SizeConfig(DEFAULT_SIZE); |
| sizeConfig.setPercentageSizing(true); |
| sizeConfig.calculatePercentages(900, 3); |
| |
| assertEquals(300, sizeConfig.getSize(0)); |
| assertEquals(300, sizeConfig.getSize(1)); |
| assertEquals(300, sizeConfig.getSize(2)); |
| |
| // resize column 0 to be larger than available |
| sizeConfig.setSize(0, 1000); |
| |
| assertEquals(882, sizeConfig.getSize(0)); |
| assertEquals(9, sizeConfig.getSize(1)); |
| assertEquals(9, sizeConfig.getSize(2)); |
| |
| // resize column 0 to 300 |
| sizeConfig.setSize(0, 300); |
| |
| assertEquals(300, sizeConfig.getSize(0)); |
| assertEquals(591, sizeConfig.getSize(1)); |
| assertEquals(9, sizeConfig.getSize(2)); |
| |
| // resize column 1 to 300 |
| sizeConfig.setSize(1, 300); |
| |
| assertEquals(301, sizeConfig.getSize(0)); |
| assertEquals(300, sizeConfig.getSize(1)); |
| assertEquals(299, sizeConfig.getSize(2)); |
| |
| // increase column 1 by 9 pixels (1%) |
| sizeConfig.setSize(1, 309); |
| |
| assertEquals(301, sizeConfig.getSize(0)); |
| assertEquals(309, sizeConfig.getSize(1)); |
| assertEquals(290, sizeConfig.getSize(2)); |
| } |
| } |