Hmmm. Sounds like the test cases were written based on bugs in the implementation. I'm not sure what the best tactic is here for the short term for getting this in, but many of these changes should eventually be considered bugs in the tests. Is it acceptable to break API tests like this at the last minute even if the tests are at fault? Phil?

Notes on specific instances below...

On 1/30/17 2:22 AM, Jayathirth D V wrote:
Hi Phil,

        1)api/java_awt/Image/ColorModel/index.html#Constructor: Failed. test 
cases: 4; passed: 3; failed: 1; first test case failure: ColorModel2001

        This test fails because getComponentSize() returned an array with length 3 but it expects the length to be 4. 
In the test case they have bits per component array       of length 4 like {8, 8, 8, 8}. But in the test case wherever 
they are passing "has Alpha" as "false" we omit the alpha component bit. This is because of tighter 
check      that we have in ColorModel class as "nBits = Arrays.copyOf(bits, numComponents);" . 
"numComponents" will be 3 if hasAlpha is false.

This is a bug in the test then, especially if the size of our array matches the 
return value of getNumComponents.

        2)api/java_awt/Image/ColorModel/index.html#Equals: Failed. test cases: 
3; passed: 2; failed: 1; first test case failure: ColorModel0004

        Here they check for equality between 2 ColorModel objects having same 
values, but it fails because now we are using identity-as-equals check in 
ColorModel.

How do they accomplish this when the CM class is abstract?  Do they create a 
relatively empty subclass and instantiate that?

The documentation for the equals() method does not document the conditions under which it returns true, it uses a vague concept of "equals this ColorModel". I don't see how they could test anything given that documentation.

        3)api/java_awt/Image/ColorModel/index.html#HashCode: Failed. test 
cases: 2; passed: 1; failed: 1; first test case failure: ColorModel2006

        Here they check for hashCode equality between 2 ColorModel objects 
having same values, but it fails since we don't have hashCode check in 
ColorModel and it     will be different between 2 Objects.

Same as above, there are no promises documented.

        
4)api/java_awt/Image/ComponentColorModel/index.html#ConstructorTesttestCase1: 
Failed. test cases: 2; passed: 1; failed: 1; first test case failure: testCase1

        Throws "java.lang.ArrayIndexOutOfBoundsException: 3". This is also 
happening because of same reason as why the first JCK test is failing. We omit alpha bit 
if        hasAlpha is false but JCK test tries to call getComponentSize() with index 3 
which throws ArrayIndexOutOfBoundsException.

Same assessment as #1 above...

Again, while these are my recommendations about the correctness of these tests, the question remains whether we want to introduce a change at this point in the release cycle that will essentially invalidate a number of tests that have been working for several releases already. I'll leave that tactic issue to Phil...

                                ...jim

Reply via email to