Package com.thoughtworks.xstream.io

Source Code of com.thoughtworks.xstream.io.StatefulWriterTest

/*
* Copyright (C) 2006, 2007 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 15. March 2006 by Joerg Schaible
*/
package com.thoughtworks.xstream.io;

import com.thoughtworks.xstream.io.xml.CompactWriter;

import junit.framework.TestCase;

import java.io.IOException;
import java.io.StringWriter;


/**
* @author Jörg Schaible
*/
public class StatefulWriterTest extends TestCase {

    private StatefulWriter writer;
    private StringWriter stringWriter;

    protected void setUp() throws Exception {
        super.setUp();
        stringWriter = new StringWriter();
        writer = new StatefulWriter(new CompactWriter(stringWriter));
    }

    public void testDelegatesAllCalls() {
        writer.startNode("junit");
        writer.addAttribute("test", "true");
        writer.setValue("foo");
        writer.endNode();
        writer.close();
        assertEquals("<junit test=\"true\">foo</junit>", stringWriter.toString());
    }

    public void testKeepsBlance() {
        writer.startNode("junit");
        writer.endNode();
        try {
            writer.endNode();
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
    }
   
    public void testCanOnlyWriteAttributesToOpenNode() {
        try {
            writer.addAttribute("test", "true");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
        writer.startNode("junit");
        writer.setValue("text");
        try {
            writer.addAttribute("test", "true");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
        writer.endNode();
        try {
            writer.addAttribute("test", "true");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
    }

    public void testCanWriteAttributesOnlyOnce() {
        writer.startNode("junit");
        writer.addAttribute("test", "true");
        try {
            writer.addAttribute("test", "true");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
        writer.endNode();
    }
   
    public void testCanWriteValueOnlyToOpenNode() {
        try {
            writer.setValue("test");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
        writer.startNode("junit");
        writer.endNode();
        try {
            writer.setValue("test");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
    }
   
    public void testCannotOpenNodeInValue() {
        writer.startNode("junit");
        writer.setValue("test");
        try {
            writer.startNode("junit");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IllegalStateException);
        }
    }
   
    public void testCanCloseInFinally() {
        try {
            writer.endNode();
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            writer.close();
        }
    }
   
    public void testCannotWriteAfterClose() {
        writer.close();
        try {
            writer.startNode("junit");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IOException);
        }
        try {
            writer.addAttribute("junit", "test");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IOException);
        }
        try {
            writer.setValue("test");
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IOException);
        }
        try {
            writer.endNode();
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IOException);
        }
        try {
            writer.flush();
            fail("Thrown " + StreamException.class.getName() + " expected");
        } catch (final StreamException e) {
            assertTrue(e.getCause() instanceof IOException);
        }
    }
   
    public void testCanCloseTwice() {
        writer.close();
        writer.close();
    }
   
    public void testCaresAboutNestingLevelWritingAttributes() {
        writer.startNode("junit");
        writer.addAttribute("test", "true");
        writer.startNode("junit");
        writer.addAttribute("test", "true");
        writer.endNode();
        writer.endNode();
    }
}
TOP

Related Classes of com.thoughtworks.xstream.io.StatefulWriterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.