ConsoleTest.java revision ab762bb740405d0fefcccf4a0899a234f995be13
1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.io; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayInputStream; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayOutputStream; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Console; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.InputStream; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.OutputStream; 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PrintWriter; 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Reader; 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.lang.reflect.Constructor; 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Calendar; 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.GregorianCalendar; 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/** 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * This file is test for java.io.Console. Due to the redirect problem, it can 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * only be run on Harmony. 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * @since 1.6 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class ConsoleTest extends TestCase { 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static final byte[] bytes = "hello world\n".getBytes(); 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private InputStream in = new ByteArrayInputStream(bytes); 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private OutputStream out = new ByteArrayOutputStream(); 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Console console = null; 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void setUp() throws Exception { 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super.setUp(); 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Constructor<Console> constructor = 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Console.class.getDeclaredConstructor(InputStream.class, OutputStream.class); 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath constructor.setAccessible(true); 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath console = constructor.newInstance(in, out); 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void tearDown() throws Exception { 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath console = null; 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super.tearDown(); 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getConsole() throws Exception { 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNotNull(System.console()); 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_flush() { 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath console.flush(); 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertFalse(console.writer().checkError()); 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_format_LString_LObject() { 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(console, console.format("%d %s", 1, "hello")); 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String prompt = new String(((ByteArrayOutputStream) out).toByteArray()); 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("1 hello", prompt); 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_printf_LString_LObject() { 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Calendar c = new GregorianCalendar(1983, 2, 21); 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(console, console.printf("%1$tm %1$te,%1$tY", c)); 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String prompt = new String(((ByteArrayOutputStream) out).toByteArray()); 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("03 21,1983", prompt); 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_reader() throws IOException { 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Reader reader1 = console.reader(); 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(reader1.ready()); 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Reader reader2 = console.reader(); 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(reader1, reader2); 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_readLine() { 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String line = console.readLine(); 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("hello world", line); 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_readLine_LString_LObject() { 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String line = console.readLine("%d %s", 2, "Please input a line of string to test:"); 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("hello world", line); 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String prompt = new String(((ByteArrayOutputStream) out).toByteArray()); 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("2 Please input a line of string to test:", prompt); 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_readPassword_LString_LObject() { 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath console.readPassword("%d", 3); 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String prompt = new String(((ByteArrayOutputStream) out).toByteArray()); 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("3\n", prompt); 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.io.Console#writer()} 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_writer() { 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PrintWriter writer1 = console.writer(); 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PrintWriter writer2 = console.writer(); 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(writer1, writer2); 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 117