LineNumberReaderTest.java revision 89c1feb0a69a7707b271086e749975b3f7acacf7
1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18package tests.api.java.io;
19
20import dalvik.annotation.TestInfo;
21import dalvik.annotation.TestLevel;
22import dalvik.annotation.TestTarget;
23import dalvik.annotation.TestTargetClass;
24
25import java.io.IOException;
26import java.io.LineNumberReader;
27import java.io.StringReader;
28
29@TestTargetClass(LineNumberReader.class)
30public class LineNumberReaderTest extends junit.framework.TestCase {
31
32    String text = "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n132\n133\n134\n135\n136\n137\n138\n139\n140\n141\n142\n143\n144\n145\n146\n147\n148\n149\n150\n151\n152\n153\n154\n155\n156\n157\n158\n159\n160\n161\n162\n163\n164\n165\n166\n167\n168\n169\n170\n171\n172\n173\n174\n175\n176\n177\n178\n179\n180\n181\n182\n183\n184\n185\n186\n187\n188\n189\n190\n191\n192\n193\n194\n195\n196\n197\n198\n199\n200\n201\n202\n203\n204\n205\n206\n207\n208\n209\n210\n211\n212\n213\n214\n215\n216\n217\n218\n219\n220\n221\n222\n223\n224\n225\n226\n227\n228\n229\n230\n231\n232\n233\n234\n235\n236\n237\n238\n239\n240\n241\n242\n243\n244\n245\n246\n247\n248\n249\n250\n251\n252\n253\n254\n255\n256\n257\n258\n259\n260\n261\n262\n263\n264\n265\n266\n267\n268\n269\n270\n271\n272\n273\n274\n275\n276\n277\n278\n279\n280\n281\n282\n283\n284\n285\n286\n287\n288\n289\n290\n291\n292\n293\n294\n295\n296\n297\n298\n299\n300\n301\n302\n303\n304\n305\n306\n307\n308\n309\n310\n311\n312\n313\n314\n315\n316\n317\n318\n319\n320\n321\n322\n323\n324\n325\n326\n327\n328\n329\n330\n331\n332\n333\n334\n335\n336\n337\n338\n339\n340\n341\n342\n343\n344\n345\n346\n347\n348\n349\n350\n351\n352\n353\n354\n355\n356\n357\n358\n359\n360\n361\n362\n363\n364\n365\n366\n367\n368\n369\n370\n371\n372\n373\n374\n375\n376\n377\n378\n379\n380\n381\n382\n383\n384\n385\n386\n387\n388\n389\n390\n391\n392\n393\n394\n395\n396\n397\n398\n399\n400\n401\n402\n403\n404\n405\n406\n407\n408\n409\n410\n411\n412\n413\n414\n415\n416\n417\n418\n419\n420\n421\n422\n423\n424\n425\n426\n427\n428\n429\n430\n431\n432\n433\n434\n435\n436\n437\n438\n439\n440\n441\n442\n443\n444\n445\n446\n447\n448\n449\n450\n451\n452\n453\n454\n455\n456\n457\n458\n459\n460\n461\n462\n463\n464\n465\n466\n467\n468\n469\n470\n471\n472\n473\n474\n475\n476\n477\n478\n479\n480\n481\n482\n483\n484\n485\n486\n487\n488\n489\n490\n491\n492\n493\n494\n495\n496\n497\n498\n499\n500\n";
33
34    LineNumberReader lnr;
35
36    /**
37     * @tests java.io.LineNumberReader#LineNumberReader(java.io.Reader)
38     */
39    @TestInfo(
40            level = TestLevel.COMPLETE,
41            purpose = "",
42            targets = { @TestTarget(methodName = "LineNumberReader",
43                                    methodArgs = {java.io.Reader.class})
44            }
45        )
46    public void test_ConstructorLjava_io_Reader() {
47        // Test for method java.io.LineNumberReader(java.io.Reader)
48        lnr = new LineNumberReader(new StringReader(text), 4092);
49        assertEquals("Failed to create reader", 0, lnr.getLineNumber());
50    }
51
52    /**
53     * @tests java.io.LineNumberReader#LineNumberReader(java.io.Reader, int)
54     */
55    @TestInfo(
56            level = TestLevel.COMPLETE,
57            purpose = "",
58            targets = { @TestTarget(methodName = "LineNumberReader",
59                                    methodArgs = {java.io.Reader.class, int.class})
60            }
61        )
62    public void test_ConstructorLjava_io_ReaderI() {
63        // Test for method java.io.LineNumberReader(java.io.Reader, int)
64        lnr = new LineNumberReader(new StringReader(text));
65        assertEquals("Failed to create reader", 0, lnr.getLineNumber());
66    }
67
68    /**
69     * @tests java.io.LineNumberReader#getLineNumber()
70     */
71    @TestInfo(
72            level = TestLevel.COMPLETE,
73            purpose = "",
74            targets = { @TestTarget(methodName = "getLineNumber",
75                                    methodArgs = {})
76            }
77        )
78    public void test_getLineNumber() {
79        // Test for method int java.io.LineNumberReader.getLineNumber()
80        lnr = new LineNumberReader(new StringReader(text));
81        assertEquals("Returned incorrect line number--expected 0, got ", 0, lnr
82                .getLineNumber());
83        try {
84            lnr.readLine();
85            lnr.readLine();
86        } catch (IOException e) {
87            fail("Exception during getLineNumberTest: " + e.toString());
88        }
89        assertTrue("Returned incorrect line number--expected 2, got: "
90                + lnr.getLineNumber(), lnr.getLineNumber() == 2);
91    }
92
93    /**
94     * @tests java.io.LineNumberReader#mark(int)
95     */
96    @TestInfo(
97            level = TestLevel.PARTIAL,
98            purpose = "IOException checking missed.",
99            targets = { @TestTarget(methodName = "mark",
100                                    methodArgs = {int.class})
101            }
102        )
103    public void test_markI() {
104        // Test for method void java.io.LineNumberReader.mark(int)
105        lnr = new LineNumberReader(new StringReader(text));
106        String line;
107        try {
108            lnr.skip(80);
109            lnr.mark(100);
110            line = lnr.readLine();
111            lnr.reset();
112            assertTrue("Failed to return to marked position", line.equals(lnr
113                    .readLine()));
114        } catch (IOException e) {
115            fail("Exception during mark test : " + e.getMessage());
116        }
117
118        // The spec does not say the mark has to be invalidated
119    }
120
121    /**
122     * @tests java.io.LineNumberReader#read()
123     */
124    @TestInfo(
125            level = TestLevel.PARTIAL,
126            purpose = "IOException checking missed.",
127            targets = { @TestTarget(methodName = "read",
128                                    methodArgs = {})
129            }
130        )
131    public void test_read() {
132        // Test for method int java.io.LineNumberReader.read()
133        lnr = new LineNumberReader(new StringReader(text));
134
135        try {
136            int c = lnr.read();
137            assertEquals("Read returned incorrect character", '0', c);
138        } catch (IOException e) {
139            fail("Exception during read test : " + e.getMessage());
140        }
141        try {
142            lnr.read();
143            assertEquals("Read failed to inc lineNumber",
144                    1, lnr.getLineNumber());
145        } catch (IOException e) {
146            fail("Exception during read test:" + e.getMessage());
147        }
148
149    }
150
151    /**
152     * @tests java.io.LineNumberReader#read(char[], int, int)
153     */
154    @TestInfo(
155            level = TestLevel.PARTIAL,
156            purpose = "IOException checking missed.",
157            targets = { @TestTarget(methodName = "read",
158                                    methodArgs = {char[].class, int.class, int.class})
159            }
160        )
161    public void test_read$CII() {
162        // Test for method int java.io.LineNumberReader.read(char [], int, int)
163        lnr = new LineNumberReader(new StringReader(text));
164        char[] c = new char[100];
165        try {
166            lnr.read(c, 0, 4);
167            assertTrue("Read returned incorrect characters", "0\n1\n"
168                    .equals(new String(c, 0, 4)));
169        } catch (IOException e) {
170            fail("Exception during read test : " + e.getMessage());
171        }
172        assertEquals("Read failed to inc lineNumber", 2, lnr.getLineNumber());
173    }
174
175    /**
176     * @tests java.io.LineNumberReader#readLine()
177     */
178    @TestInfo(
179            level = TestLevel.PARTIAL,
180            purpose = "IOException checking missed.",
181            targets = { @TestTarget(methodName = "readLine",
182                                    methodArgs = {})
183            }
184        )
185    public void test_readLine() {
186        // Test for method java.lang.String java.io.LineNumberReader.readLine()
187        lnr = new LineNumberReader(new StringReader(text));
188        assertEquals("Returned incorrect line number", 0, lnr.getLineNumber());
189        String line = null;
190        try {
191            lnr.readLine();
192            line = lnr.readLine();
193        } catch (IOException e) {
194            fail("Exception during getLineNumberTest: " + e.toString());
195        }
196        assertEquals("Returned incorrect string", "1", line);
197        assertTrue("Returned incorrect line number :" + lnr.getLineNumber(),
198                lnr.getLineNumber() == 2);
199    }
200
201    /**
202     * @tests java.io.LineNumberReader#reset()
203     */
204    @TestInfo(
205            level = TestLevel.PARTIAL,
206            purpose = "IOException checking missed.",
207            targets = { @TestTarget(methodName = "reset",
208                                    methodArgs = {})
209            }
210        )
211    public void test_reset() {
212        // Test for method void java.io.LineNumberReader.reset()
213        lnr = new LineNumberReader(new StringReader(text));
214        assertEquals("Returned incorrect line number", 0, lnr.getLineNumber());
215        String line = null;
216        try {
217            lnr.mark(100);
218            lnr.readLine();
219            lnr.reset();
220            line = lnr.readLine();
221        } catch (IOException e) {
222            fail("Exception during getLineNumberTest: " + e.toString());
223        }
224        assertEquals("Failed to reset reader", "0", line);
225    }
226
227    /**
228     * @tests java.io.LineNumberReader#setLineNumber(int)
229     */
230    @TestInfo(
231            level = TestLevel.COMPLETE,
232            purpose = "",
233            targets = { @TestTarget(methodName = "setLineNumber",
234                                    methodArgs = {int.class})
235            }
236        )
237    public void test_setLineNumberI() {
238        // Test for method void java.io.LineNumberReader.setLineNumber(int)
239        lnr = new LineNumberReader(new StringReader(text));
240        lnr.setLineNumber(1001);
241        assertEquals("set incorrect line number", 1001, lnr.getLineNumber());
242    }
243
244    /**
245     * @tests java.io.LineNumberReader#skip(long)
246     */
247    @TestInfo(
248            level = TestLevel.PARTIAL,
249            purpose = "IllegalArgumentException & IOException checking missed.",
250            targets = { @TestTarget(methodName = "skip",
251                                    methodArgs = {long.class})
252            }
253        )
254    public void test_skipJ() {
255        // Test for method long java.io.LineNumberReader.skip(long)
256        lnr = new LineNumberReader(new StringReader(text));
257        char[] c = new char[100];
258        try {
259            lnr.skip(80);
260            lnr.read(c, 0, 100);
261        } catch (IOException e) {
262            fail("Exception during skip test : " + e.getMessage());
263        }
264        assertTrue("Failed to skip to correct position", text
265                .substring(80, 180).equals(new String(c, 0, c.length)));
266    }
267
268    /**
269     * Sets up the fixture, for example, open a network connection. This method
270     * is called before a test is executed.
271     */
272    protected void setUp() {
273    }
274
275    /**
276     * Tears down the fixture, for example, close a network connection. This
277     * method is called after a test is executed.
278     */
279    protected void tearDown() {
280    }
281}
282