Request for review : 7121314 : Behavior mismatch between AbstractCollection.toArray(T[] ) and its spec (original) (raw)

David Holmes david.holmes at oracle.com
Thu Mar 29 02:13:33 UTC 2012


Hi Ulf,

On 29/03/2012 11:32 AM, Ulf Zibis wrote:

David, this is great news. You like my approach. :-)

I just want to reach closure ;-)

The separation in 3 files is intentional. I was thinking about of reusing TestCollection for future tastcases on other methods of AbstractCollection. But I'm not enough familiar with jtreg to argue, if this is possible. Similarly class Infrastructure could be reused over all JDK's tests. But personnally I would prefer to more and more use the JUnit framework. Is there already an existing example? How do you ensure, that all existing jdk subclasses of AbstractCollection are tested by the same patterns?

There are basically two sets of sets: a) JCK tests: these are the official tests that should check that classes meet their specifications. They live "elsewhere". b) Other tests: these live in the source repository in the test directory. These can combine additional "stress" tests, specific regression tests for a given bug fix etc. These are jtreg based.

So here we are writing a regression test to be put in the repository and executed using jtreg. I'm not an experienced jtreg user or test writer so I can only look at other tests in the repository for guidance. But these classes are not going to be part of some larger more general all-encompassing test framework - at least not as part of this CR.

I like your javadoc for setSizeSequence, but I have an addition, see below.

Ok.

Have a nice flight,

Thanks, it's not quite imminent but I have a lot to do in the next couple of days. :)

David

-Ulf Am 29.03.2012 02:36, schrieb David Holmes: Hi Ulf,

Thanks for the updates. This will take a little rearranging to get into the right form I think - a single file is easier to deal with so we could nest the TestCollection class. Regarding setPseudoConcurrentChronologicalSizeSequence, I think perhaps: /** Sets the values that size() will return on each use. The next call to size will return sizes[0], then sizes[1] etc. This allows us to emulate a concurrent change to the contents of the collection without having to perform concurrent changes. If sizes contains a larger valuethan on last invocation, the collection will appear to have shrunk when iterated; if a smaller value then the collection will appear to have grown when iterated */ void setSizeSequence(int... sizes) { this.sizes = sizes; nextSize = 0; } Sean: can you massage this into a final version? If not I will try to do so but I'm about to head out to JavaOne Japan and then am taking some vacation time. Might be something I can work on on the plane :) Thanks, David On 29/03/2012 4:48 AM, Ulf Zibis wrote: Hi David, Sean,

I have made little changes to make understanding little easier, see attachment... -Ulf

Am 28.03.2012 07:29, schrieb David Holmes: Hi Ulf, I understand your point about ensuring we test AbstractCollection.toArray but I find this revised test much harder to understand. Also in the name setPseudoConcurrentSizeCourse the word "Course" doesn't fit. I'm not sure what you were meaning here? Perhaps just modifySize or emulateConcurrentSizeChange ? Thanks, David



More information about the core-libs-dev mailing list