/*******************************************************************************
* Copyright (c) 2011, 2013 Tasktop Technologies and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests.data;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.EOFException;
import java.io.InputStreamReader;
import junit.framework.TestCase;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataExternalizer.Xml11InputStream;
/**
* @author Steffen Pingel
*/
@SuppressWarnings("resource")
public class Xml11InputStreamTest extends TestCase {
public void testShortStream() throws Exception {
ByteArrayInputStream source = new ByteArrayInputStream("foo bar".getBytes());
Xml11InputStream in = new Xml11InputStream(source);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
try {
assertEquals("<?xml version=\"1.1\" encoding=\"UTF-8\"?>", reader.readLine());
fail("Expected EOFException");
} catch (EOFException expected) {
}
}
public void testXml10Stream() throws Exception {
ByteArrayInputStream source = new ByteArrayInputStream("<?xml version=\"1.0\" encoding=\"UTF-8\"?>".getBytes());
Xml11InputStream in = new Xml11InputStream(source);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
assertEquals("<?xml version=\"1.1\" encoding=\"UTF-8\"?>", reader.readLine());
assertEquals(-1, in.read());
}
public void testXml10StreamMultiLines() throws Exception {
ByteArrayInputStream source = new ByteArrayInputStream(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<abc>\n<def>".getBytes());
Xml11InputStream in = new Xml11InputStream(source);
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
assertEquals("<?xml version=\"1.1\" encoding=\"UTF-8\"?>", reader.readLine());
assertEquals("<abc>", reader.readLine());
assertEquals("<def>", reader.readLine());
assertEquals(null, reader.readLine());
}
public void testSkipRead() throws Exception {
ByteArrayInputStream source = new ByteArrayInputStream(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".getBytes());
Xml11InputStream in = new Xml11InputStream(source);
assertEquals(0, in.skip(0));
assertEquals('<', in.read());
assertEquals(5, in.skip(5));
assertEquals('v', in.read());
}
public void testSkipReadLine() throws Exception {
ByteArrayInputStream source = new ByteArrayInputStream(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".getBytes());
Xml11InputStream in = new Xml11InputStream(source);
assertEquals(3, in.skip(3));
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
assertEquals("ml version=\"1.1\" encoding=\"UTF-8\"?>", reader.readLine());
assertEquals(null, reader.readLine());
}
public void testSkipHeader() throws Exception {
ByteArrayInputStream source = new ByteArrayInputStream(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>abc".getBytes());
Xml11InputStream in = new Xml11InputStream(source);
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
assertEquals(38, reader.skip(38));
assertEquals("abc", reader.readLine());
assertEquals(null, reader.readLine());
}
}