RFR: 8264162: PickResult.toString() is missing the closing square bracket

Nir Lisker nlisker at openjdk.java.net
Thu Mar 25 15:21:27 UTC 2021


On Thu, 25 Mar 2021 14:15:47 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:

>> modules/javafx.graphics/src/test/java/test/javafx/scene/input/MouseEventTest.java line 139:
>> 
>>> 137:                 case ']':
>>> 138:                     --bracketCount;
>>> 139:                     assertTrue("Too many closing brackets: " + str, bracketCount >= 0);
>> 
>> This test can fail due to a malformed `toString` result in the node (`getIntersectedNode()`), which I would think is outside the scope of this test. In practice, this test's result is dependent on what node I choose to test.
>> 
>> Shouldn't we be testing the structure of the string and not its contents?
>
> On the one hand, I can see your point that it's somewhat tangential that Rectangle has matched brackets, but you could say the same about the Point3D. Here is the result of MouseEvent.toString for the test:
> 
> MouseEvent [source = javafx.event.Event$$Lambda$110/0x0000000800c52fa8 at 461111c0,
> target = javafx.event.Event$$Lambda$110/0x0000000800c52fa8 at 461111c0, eventType = MOUSE_PRESSED,
> consumed = false, x = 18.0, y = 27.0, z = 150.0, button = PRIMARY, primaryButtonDown,
> pickResult = PickResult [node = Rectangle[x=0.0, y=0.0, width=0.0, height=0.0, fill=0x000000ff],
> point = Point3D [x = 15.0, y = 25.0, z = 100.0], distance = 33.0]]
> 
> The test would be more complicated if it were changed to ignore the results of the `toString()` of both the  intersected node and the point. If I were to go down this path, I would likely just change it to do match a regex of `"^MouseEvent [.*PickResult [.*]]$"`, which would be simple. Do you think it's worth it?
> 
> Maybe instead I could add a comment that this test checks for matching brackets in the entire composed string returned by `MouseEvent::toString`, including `PickResult::toString`, which in turn includes `Node::toString` for the intersected node?

I don't think it matters too much, but a change in any of the classes used here could break this test, which is a bit off. I will be satisfied with a comment warning about this case so if it breaks it will be easy to see where the problem is.

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

PR: https://git.openjdk.java.net/jfx/pull/443


More information about the openjfx-dev mailing list