Skip to content

Commit

Permalink
8284077: Create an automated test for JDK-4170173
Browse files Browse the repository at this point in the history
Reviewed-by: serb
  • Loading branch information
Srinivas Mandalika authored and prrace committed Apr 27, 2022
1 parent a0b984a commit 6db2e16
Show file tree
Hide file tree
Showing 2 changed files with 251 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
/*
* Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/

/*
* @test
* @key headful
* @bug 4170173
* @summary AccessibleJTextComponent.getAfterIndex works incorrectly
* @run main AccessibleJTextAfterIndexTest
*/

import javax.accessibility.AccessibleText;
import javax.swing.JEditorPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class AccessibleJTextAfterIndexTest {

public static void doTest() {
JTextField jTextField =
new JTextField("Test1 Test2 Test3. Test4 Test5. Test6");
JTextArea jTextArea = new JTextArea("Test1 Test2 Test3.\nTest4 Test5");
JEditorPane jEditorPane =
new JEditorPane("text/plain", "Test1 Test2 Test3.\nTest4 Test5");

String actualAccessibleText = jTextField.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.CHARACTER, 5);
if (!(actualAccessibleText.equals("T"))) {
throw new RuntimeException(
"JTextField -" + "getAfterIndex() CHARACTER parameter"
+ " expected:--T--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextField.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.WORD, 5);
if (!(actualAccessibleText.equals("Test2"))) {
throw new RuntimeException(
"JTextField - " + "getAfterIndex() WORD parameter"
+ " expected:--Test2--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextField.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.SENTENCE, 5);
if (!(actualAccessibleText.equals("Test4 Test5. "))) {
throw new RuntimeException("JTextField - "
+ "getAfterIndex() SENTENCE parameter"
+ " expected:--Test4 Test5. --, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextArea.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.CHARACTER, 5);
if (!(actualAccessibleText.equals("T"))) {
throw new RuntimeException(
"JTextArea - " + "getAfterIndex() CHARACTER parameter"
+ " expected:--T--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextArea.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.WORD, 5);
if (!(actualAccessibleText.equals("Test2"))) {
throw new RuntimeException(
"JTextArea - " + "getAfterIndex() WORD parameter"
+ " expected:--Test2--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextArea.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.SENTENCE, 5);
if (!(actualAccessibleText.equals("Test4 Test5\n"))) {
throw new RuntimeException("JTextArea - "
+ "getAfterIndex() SENTENCE parameter"
+ " expected:--Test4 Test5\n--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jEditorPane.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.CHARACTER, 5);
if (!(actualAccessibleText.equals("T"))) {
throw new RuntimeException(
"JEditorPane - " + "getAfterIndex() CHARACTER parameter"
+ " expected:--T--, actual:--" + actualAccessibleText +"--");
}

actualAccessibleText = jEditorPane.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.WORD, 5);
if (!(actualAccessibleText.equals("Test2"))) {
throw new RuntimeException(
"JEditorPane - " + "getAfterIndex() WORD parameter"
+ " expected:--Test2--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jEditorPane.getAccessibleContext()
.getAccessibleText().getAfterIndex(AccessibleText.SENTENCE, 5);
if (!(actualAccessibleText.equals("Test4 Test5\n"))) {
throw new RuntimeException("JEditorPane - "
+ "getAfterIndex() Sentence parameter"
+ " expected:--Test4 Test5\n--, actual:--" + actualAccessibleText +"--");
}
}

public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> doTest());
System.out.println("Test Passed");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/*
* Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/

/*
* @test
* @key headful
* @bug 4170173
* @summary AccessibleJTextComponent.getBeforeIndex works incorrectly
* @run main AccessibleJTextBeforeIndexTest
*/

import javax.accessibility.AccessibleText;
import javax.swing.JEditorPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class AccessibleJTextBeforeIndexTest {

public static void doTest() {
JTextField jTextField =
new JTextField("Test1 Test2 Test3. Test4 Test5. Test6");
JTextArea jTextArea = new JTextArea("Test1 Test2 Test3.\nTest4 Test5");
JEditorPane jEditorPane =
new JEditorPane("text/plain", "Test1 Test2 Test3.\nTest4 Test5");

String actualAccessibleText = jTextField.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.CHARACTER, 5);
if (!(actualAccessibleText.equals("1"))) {
throw new RuntimeException(
"JTextField -" + "getBeforeIndex() CHARACTER parameter"
+ " expected:--1--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextField.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.WORD, 5);
if (!(actualAccessibleText.equals("Test1"))) {
throw new RuntimeException(
"JTextField -" + "getBeforeIndex() WORD parameter"
+ " expected:--Test1--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextField.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.SENTENCE, 20);
if (!(actualAccessibleText.equals("Test1 Test2 Test3. "))) {
throw new RuntimeException(
"JTextField -" + "getBeforeIndex() SENTENCE parameter"
+ " expected:--Test1 Test2 Test3. --, actual:--"
+ actualAccessibleText + "--");
}

actualAccessibleText = jTextArea.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.CHARACTER, 5);
if (!(actualAccessibleText.equals("1"))) {
throw new RuntimeException(
"JTextArea -" + "getBeforeIndex() CHARACTER parameter"
+ " expected:--1--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextArea.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.WORD, 5);
if (!(actualAccessibleText.equals("Test1"))) {
throw new RuntimeException("JTextArea -"
+ "getBeforeIndex() WORD parameter"
+ " expected:--Test1--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jTextArea.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.SENTENCE, 20);
if (!(actualAccessibleText.equals("Test1 Test2 Test3.\n"))) {
throw new RuntimeException(
"JTextArea -" + "getBeforeIndex() SENTENCE parameter"
+ " expected: Test1 Test2 Test3.\n--, actual:--"
+ actualAccessibleText + "--");
}

actualAccessibleText = jEditorPane.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.CHARACTER, 5);
if (!(actualAccessibleText.equals("1"))) {
throw new RuntimeException(
"JEditorPane -" + "getBeforeIndex() CHARACTER parameter"
+ " expected:--1--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jEditorPane.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.WORD, 5);
if (!(actualAccessibleText.equals("Test1"))) {
throw new RuntimeException(
"JEditorPane -" + "getBeforeIndex() WORD parameter"
+ " expected:--Test1--, actual:--" + actualAccessibleText + "--");
}

actualAccessibleText = jEditorPane.getAccessibleContext()
.getAccessibleText().getBeforeIndex(AccessibleText.SENTENCE, 20);
if (!(actualAccessibleText.equals("Test1 Test2 Test3.\n"))) {
throw new RuntimeException(
"JEditorPane -" + "getBeforeIndex() SENTENCE parameter"
+ " expected:--Test1 Test2 Test3.\n--, actual:--"
+ actualAccessibleText + "--");
}
}

public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> doTest());
System.out.println("Test Passed");
}
}

5 comments on commit 6db2e16

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GoeLin
Copy link
Member

@GoeLin GoeLin commented on 6db2e16 Aug 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/backport jdk17u-dev

@openjdk
Copy link

@openjdk openjdk bot commented on 6db2e16 Aug 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GoeLin the backport was successfully created on the branch GoeLin-backport-6db2e16b in my personal fork of openjdk/jdk17u-dev. To create a pull request with this backport targeting openjdk/jdk17u-dev:master, just click the following link:

➡️ Create pull request

The title of the pull request is automatically filled in correctly and below you find a suggestion for the pull request body:

Hi all,

This pull request contains a backport of commit 6db2e16b from the openjdk/jdk repository.

The commit being backported was authored by Srinivas Mandalika on 27 Apr 2022 and was reviewed by Sergey Bylokhov.

Thanks!

If you need to update the source branch of the pull then run the following commands in a local clone of your personal fork of openjdk/jdk17u-dev:

$ git fetch https://github.com/openjdk-bots/jdk17u-dev GoeLin-backport-6db2e16b:GoeLin-backport-6db2e16b
$ git checkout GoeLin-backport-6db2e16b
# make changes
$ git add paths/to/changed/files
$ git commit --message 'Describe additional changes made'
$ git push https://github.com/openjdk-bots/jdk17u-dev GoeLin-backport-6db2e16b

@GoeLin
Copy link
Member

@GoeLin GoeLin commented on 6db2e16 Aug 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/backport jdk11u-dev

@openjdk
Copy link

@openjdk openjdk bot commented on 6db2e16 Aug 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GoeLin the backport was successfully created on the branch GoeLin-backport-6db2e16b in my personal fork of openjdk/jdk11u-dev. To create a pull request with this backport targeting openjdk/jdk11u-dev:master, just click the following link:

➡️ Create pull request

The title of the pull request is automatically filled in correctly and below you find a suggestion for the pull request body:

Hi all,

This pull request contains a backport of commit 6db2e16b from the openjdk/jdk repository.

The commit being backported was authored by Srinivas Mandalika on 27 Apr 2022 and was reviewed by Sergey Bylokhov.

Thanks!

If you need to update the source branch of the pull then run the following commands in a local clone of your personal fork of openjdk/jdk11u-dev:

$ git fetch https://github.com/openjdk-bots/jdk11u-dev GoeLin-backport-6db2e16b:GoeLin-backport-6db2e16b
$ git checkout GoeLin-backport-6db2e16b
# make changes
$ git add paths/to/changed/files
$ git commit --message 'Describe additional changes made'
$ git push https://github.com/openjdk-bots/jdk11u-dev GoeLin-backport-6db2e16b

Please sign in to comment.