From 772e3b92870f7a190a8a566bc42049919244340f Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 10 Sep 2010 12:46:27 +0000 Subject: [PATCH] Made BeanItemContainerNullValues produce consistent results svn changeset:14832/svn branch:6.4 --- .../BeanItemContainerGenerator.java | 8 +-- .../BeanItemContainerNullValues.html | 18 +++++++ .../BeanItemContainerNullValues.java | 2 +- .../com/vaadin/tests/util/PortableRandom.java | 52 +++++++++++++++++++ 4 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 tests/src/com/vaadin/tests/util/PortableRandom.java diff --git a/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerGenerator.java b/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerGenerator.java index b68c859026..254779f872 100644 --- a/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerGenerator.java +++ b/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerGenerator.java @@ -1,9 +1,9 @@ package com.vaadin.tests.components.beanitemcontainer; import java.util.Date; -import java.util.Random; import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.tests.util.PortableRandom; public class BeanItemContainerGenerator { @@ -16,7 +16,7 @@ public class BeanItemContainerGenerator { BeanItemContainer container = new BeanItemContainer( TestBean.class); - Random r = new Random(seed); + PortableRandom r = new PortableRandom(seed); for (int i = 0; i < size; i++) { container.addBean(new TestBean(r)); } @@ -45,7 +45,7 @@ public class BeanItemContainerGenerator { this.shoesize = shoesize; } - public TestBean(Random r) { + public TestBean(PortableRandom r) { age = r.nextInt(100) + 5; shoesize = r.nextInt(10) + 35; name = createRandomString(r, r.nextInt(5) + 5); @@ -91,7 +91,7 @@ public class BeanItemContainerGenerator { } - public static String createRandomString(Random r, int len) { + public static String createRandomString(PortableRandom r, int len) { StringBuilder b = new StringBuilder(); for (int i = 0; i < len; i++) { b.append((char) (r.nextInt('z' - 'a') + 'a')); diff --git a/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.html b/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.html index 002f81a37e..e40be7dc15 100644 --- a/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.html +++ b/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.html @@ -3,6 +3,11 @@ /run/com.vaadin.tests.components.beanitemcontainer.BeanItemContainerNullValues?restartApplication + + mouseClick + vaadin=runcomvaadintestscomponentsbeanitemcontainerBeanItemContainerNullValues::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]/domChild[0] + 85,9 + screenCapture @@ -28,16 +33,29 @@ sort-country-desc + click vaadin=runcomvaadintestscomponentsbeanitemcontainerBeanItemContainerNullValues::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0] + mouseClick vaadin=runcomvaadintestscomponentsbeanitemcontainerBeanItemContainerNullValues::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]/domChild[1] 39,8 + + + click + vaadin=runcomvaadintestscomponentsbeanitemcontainerBeanItemContainerNullValues::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0] + + + + mouseClick + vaadin=runcomvaadintestscomponentsbeanitemcontainerBeanItemContainerNullValues::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]/domChild[0] + 79,4 + screenCapture diff --git a/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java b/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java index 87ef5ad71a..9045d18940 100644 --- a/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java +++ b/tests/src/com/vaadin/tests/components/beanitemcontainer/BeanItemContainerNullValues.java @@ -24,7 +24,7 @@ public class BeanItemContainerNullValues extends TestBase { table = new Table(); table.setSortDisabled(false); table.setContainerDataSource(BeanItemContainerGenerator - .createContainer(100)); + .createContainer(100, 1)); table.setColumnCollapsingAllowed(true); Button b = new Button("Disable sorting", new Button.ClickListener() { diff --git a/tests/src/com/vaadin/tests/util/PortableRandom.java b/tests/src/com/vaadin/tests/util/PortableRandom.java new file mode 100644 index 0000000000..2e6d7ce9af --- /dev/null +++ b/tests/src/com/vaadin/tests/util/PortableRandom.java @@ -0,0 +1,52 @@ +package com.vaadin.tests.util; + +import java.util.concurrent.atomic.AtomicLong; + +public class PortableRandom { + private final static long multiplier = 0x5DEECE66DL; + private final static long addend = 0xBL; + private final static long mask = (1L << 48) - 1; + private AtomicLong seed; + + public PortableRandom(long seed) { + this.seed = new AtomicLong(0L); + setSeed(seed); + } + + synchronized public void setSeed(long seed) { + seed = (seed ^ multiplier) & mask; + this.seed.set(seed); + } + + public int nextInt(int n) { + if (n <= 0) { + throw new IllegalArgumentException("n must be positive"); + } + + if ((n & -n) == n) { + return (int) ((n * (long) next(31)) >> 31); + } + + int bits, val; + do { + bits = next(31); + val = bits % n; + } while (bits - val + (n - 1) < 0); + return val; + } + + protected int next(int bits) { + long oldseed, nextseed; + AtomicLong seed = this.seed; + do { + oldseed = seed.get(); + nextseed = (oldseed * multiplier + addend) & mask; + } while (!seed.compareAndSet(oldseed, nextseed)); + return (int) (nextseed >>> (48 - bits)); + } + + public boolean nextBoolean() { + return next(1) != 0; + } + +} \ No newline at end of file -- 2.39.5