On Fri, 30 May 2025 14:38:19 GMT, Jaikiran Pai <j...@openjdk.org> wrote:

>> Overall this looks good to me. I just have a small question about the newly 
>> introduced text.
>> 
>> The copyright years on BasicMap.java and SequencedMap.java will need a 
>> update before integrating.
>
>> I just have a small question about the newly introduced text.
> 
> I just realized one other thing - the updated BasicMap.java fixes an issue in 
> an existing test. Do we already have tests that might cover the new proposed 
> semantics of these methods on the returned Set/Collection from the 
> `SequencedMap.sequencedEntrySet/sequencedKeySet/sequenceValues`? Or should 
> those be added?

@jaikiran

> Do we already have tests that might cover the new proposed semantics of these 
> methods on the returned Set/Collection from the 
> SequencedMap.sequencedEntrySet/sequencedKeySet/sequenceValues?

Good question. There are several existing tests in BasicMap.java; see 
checkKeySet, checkValues, and checkEntrySet. There is also a set of tests 
starting at testKeySetRemoves and following which test removals on several 
variations of the map views, and also other mutator methods. I don't see 
anything obvious missing, but that doesn't mean everything is actually tested! 
Probably at some point it would be good to do a comprehensive analysis of the 
collections tests and see if they can be unified. We should probably take a 
look at the test coverage report too. But this is all about functional testing, 
in the sense of: starting from this state and performing this operation, do we 
get the right results and side effects? (This is mostly _state verification_.)

The stuff in `@implSpec` that specifies *how* something is done might not be 
tested. In this case the implementation was done using method A and the 
`@implSpec` modified to require method B. The test made some unwarranted 
assumptions about the behavior of method A (which actually was unspecified) 
that in fact was not supported by method B; and so the test failed. Otherwise I 
probably wouldn't have noticed this. In general I don't think we don't do much 
_behavior_ verification in the JDK. If we do it's pretty ad hoc. In this case 
the question is, is there a test that verifies that a particular method is 
implemented by calling method B? I don't think so.

The terms _state verification_ and _behavior verification_ come from here:

https://martinfowler.com/articles/mocksArentStubs.html

-------------

PR Comment: https://git.openjdk.org/jdk/pull/25515#issuecomment-2923697259

Reply via email to