Hi Sean,
Am 23.03.2012 07:45, schrieb Sean Chou:
Hi Ulf,
I'm sorry I didn't quite get your testcase.
This is not a testcase, just a draft of an additionally more flexible test object to replace
TConcurrentHashMap/2.
Will you please provide a jtreg style testcase with main method ?
Well, as I'm missing your agreement, that David's test implementation doesn't guarantee to test the
right toArray method of AbstractCollection as I explained before, I'm afraid that additional effort
would be for garbage.
Aside, as the instantiation of (several) ConcurrentHashMap subclassed test objects seems more
expensive, I believe, my simple TestCollection would increase the performance of the testcases.
I was thinking you were worried by the comment "// inherits from AbstractCollection.toArray()"
and "map2", if that was the case, I would like to modify.
This is additionally true, but not my main issue, as later to me it turned out, that "// inherits
from AbstractCollection.toArray()" is not enough to guarantee that the right toArray method is
actually tested, aside to look not obvious IMO.
-Ulf
P.S.: better rename to:
void setPseudoConcurrentSizeCourse(int... sizes) {...}
On Fri, Mar 23, 2012 at 5:57 AM, Ulf Zibis <ulf.zi...@gmx.de
<mailto:ulf.zi...@gmx.de>> wrote:
Hi Sean,
bad news ;-) ...
Am 22.03.2012 08:28, schrieb Sean Chou:
Hi Ulf,
I'm glad you agreed my suggestion.
To all:
Can this patch be committed as it has been reviewed by David Holmes
and Mike Duigou,
and Ulf also says agreed ?
I agree with your implementation of AbstractCollection, but NOT with the
test.
For correct testing I suggest to use:
/**
*
* @author Ulf Zibis
*/
public class TestCollection<E> extends AbstractCollection<E> {
private E[] elements;
private int[] sizes;
private int nextSize;
public TestCollection(E[] elements) {
this.elements = elements;
setConcurrentSizeCourse(null);
}
void setConcurrentSizeCourse(int... sizes) {
this.sizes = sizes == null ? new int[]{elements.length} : sizes;
nextSize = 0;
}
@Override
public int size() {
return sizes[nextSize == sizes.length-1 ? nextSize : nextSize++];
}
@Override
public Iterator<E> iterator() {
return new Iterator<>() {
int pos = 0;
public boolean hasNext() {
return pos < sizes[nextSize];
}
public E next() {
return elements[pos++];
}
public void remove() {
throw new UnsupportedOperationException("Not supported
yet.");
}
};
}
}
-Ulf
--
Best Regards,
Sean Chou