Skip to content

Commit 8333462

Browse files
committed
Tests read* method variations
1 parent 332986d commit 8333462

File tree

4 files changed

+49
-21
lines changed

4 files changed

+49
-21
lines changed

test/jdk/java/io/Console/StdinEncodingTest.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import jdk.test.lib.process.OutputAnalyzer;
2525
import jdk.test.lib.process.ProcessTools;
2626

27+
import java.io.BufferedReader;
2728
import java.nio.file.Files;
2829
import java.nio.file.Paths;
2930

@@ -64,16 +65,29 @@ public void testStdinEncoding() throws Throwable {
6465
jdkDir + "/bin/java",
6566
"--module-path",
6667
testClasses + "/modules",
67-
"-Dstdin.encoding=Z",
68+
"-Dstdin.encoding=Mock", // <- gist of this test
6869
"StdinEncodingTest");
6970
output.reportDiagnosticSummary();
7071
var eval = output.getExitValue();
71-
if (eval != 0) {
72-
throw new RuntimeException("Test failed. Exit value from 'expect' command: " + eval);
73-
}
72+
assertEquals(0, eval, "Test failed. Exit value from 'expect' command: " + eval);
7473
}
7574

7675
public static void main(String... args) throws Throwable {
77-
System.out.println(System.console().readLine());
76+
// check stdin.encoding
77+
if (!"Mock".equals(System.getProperty("stdin.encoding"))) {
78+
throw new RuntimeException("Mock charset was not set in stdin.encoding");
79+
}
80+
var con = System.console();
81+
82+
// Console.readLine()
83+
System.out.print(con.readLine());
84+
85+
// Console.readPassword()
86+
System.out.print(String.valueOf(con.readPassword()));
87+
88+
// Console.reader()
89+
try (var br = new BufferedReader(con.reader())) {
90+
System.out.print(br.readLine());
91+
}
7892
}
7993
}

test/jdk/java/io/Console/csp/module-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@
2222
*/
2323

2424
module csp {
25-
provides java.nio.charset.spi.CharsetProvider with provider.ZCharsetProvider;
25+
provides java.nio.charset.spi.CharsetProvider with provider.MockCharsetProvider;
2626
}

test/jdk/java/io/Console/csp/provider/ZCharsetProvider.java renamed to test/jdk/java/io/Console/csp/provider/MockCharsetProvider.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,27 @@
3232
import java.util.Collections;
3333
import java.util.Iterator;
3434

35-
// A test charset provider that decodes every input byte into Z
36-
public class ZCharsetProvider extends CharsetProvider {
35+
// A test charset provider that decodes every input byte into its uppercase
36+
public class MockCharsetProvider extends CharsetProvider {
3737

3838
@Override
3939
public Iterator charsets() {
40-
return Collections.singleton(new ZCharsetProvider.ZCharset()).iterator();
40+
return Collections.singleton(new MockCharsetProvider.MockCharset()).iterator();
4141
}
4242

4343
@Override
4444
public Charset charsetForName(String charsetName) {
45-
if (charsetName.equals("Z")) {
46-
return new ZCharsetProvider.ZCharset();
45+
if (charsetName.equals("Mock")) {
46+
return new MockCharsetProvider.MockCharset();
4747
} else {
4848
return null;
4949
}
5050
}
5151

52-
public static class ZCharset extends Charset {
52+
public static class MockCharset extends Charset {
5353

54-
public ZCharset() {
55-
super("Z", null);
54+
public MockCharset() {
55+
super("Mock", null);
5656
}
5757

5858
@Override
@@ -62,7 +62,7 @@ public boolean contains(Charset cs) {
6262

6363
@Override
6464
public CharsetDecoder newDecoder() {
65-
return new ZCharsetDecoder(this, 1, 1);
65+
return new MockCharsetDecoder(this, 1, 1);
6666
}
6767

6868
@Override
@@ -71,16 +71,18 @@ public CharsetEncoder newEncoder() {
7171
}
7272
}
7373

74-
private static class ZCharsetDecoder extends CharsetDecoder {
75-
public ZCharsetDecoder(Charset cs, float averageCharsPerByte, float maxCharsPerByte) {
74+
private static class MockCharsetDecoder extends CharsetDecoder {
75+
public MockCharsetDecoder(Charset cs, float averageCharsPerByte, float maxCharsPerByte) {
7676
super(cs, averageCharsPerByte, maxCharsPerByte);
7777
}
7878

7979
@Override
8080
protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out) {
8181
while (in.remaining() > 0) {
82-
in.get();
83-
out.put('Z');
82+
char c = (char)in.get();
83+
if (c != '\n') {
84+
out.put(Character.toUpperCase(c));
85+
}
8486
}
8587
return CoderResult.UNDERFLOW;
8688
}

test/jdk/java/io/Console/stdinEncoding.exp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,23 @@
2424
set java [lrange $argv 0 end]
2525

2626
eval spawn $java
27+
28+
# Console::readLine()
2729
send "abc\r"
2830

29-
# expect 4 'Z's converted with ZCharset with the input 'abc\r'
30-
expect "ZZZZ" {
31+
# Console::readPassword()
32+
send "def\r"
33+
34+
# Console::reader()
35+
send "ghi\r"
36+
37+
# check the output
38+
expect "ABCDEFGHI" {
3139
expect eof
40+
send_error "Mocked output received"
3241
exit 0
3342
}
43+
44+
# fail
45+
send_error "Mocked output not received."
3446
exit 1

0 commit comments

Comments
 (0)