Package com.dtolabs.rundeck.core.utils

Source Code of com.dtolabs.rundeck.core.utils.TestPartialLineBuffer

/*
* Copyright 2011 DTO Solutions, Inc. (http://dtosolutions.com)
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/

/*
* TestPartialLineBuffer.java
*
* User: Greg Schueler <a href="mailto:greg@dtosolutions.com">greg@dtosolutions.com</a>
* Created: 11/21/11 4:27 PM
*
*/
package com.dtolabs.rundeck.core.utils;

import com.dtolabs.rundeck.core.utils.PartialLineBuffer;
import junit.framework.TestCase;

import java.util.List;

/**
* TestPartialLineBuffer is ...
*
* @author Greg Schueler <a href="mailto:greg@dtosolutions.com">greg@dtosolutions.com</a>
*/
public class TestPartialLineBuffer extends TestCase {

    public void testPartialLineBuffer() {
        final PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        assertNull(partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());

        char[] data = "Test1".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test1", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        data = " Test2".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertNull(partialLineBuffer.readLine());
        assertEquals("Test1 Test2", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        data = " Test3\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test1 Test2 Test3", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertNull("not null: '" + partialLineBuffer.getPartialLine(false) + "'", partialLineBuffer.getPartialLine(
            false));
    }

    public void testSplit() {
        String arr[] = "abc:def::ghi".split(":", -1);
        assertEquals(4, arr.length);
        String arr2[] = "ghi:".split(":", -1);
        assertEquals(2, arr2.length);
        String arr3[] = ":ghi::".split(":", -1);
        assertEquals(4, arr3.length);
        String arr4[] = "::ghi::".split(":", -1);
        assertEquals(5, arr4.length);
    }

    public void testSplitLine() {
        //a: 1,1: yes,no
        //b: 0,1: yes,no
        //c: 0,0: yes,no (pass)
        //d: 1,0: yes,(skip)
        String arr[] = "abc\rdef\r\rghi".split("\\r", -1);
        assertEquals(4, arr.length);
        String arr2[] = "ghi\r".split("\\r", -1);
        assertEquals(2, arr2.length);
        String arr3[] = "\rghi\r\r".split("\\r", -1);
        assertEquals(4, arr3.length);
        String arr4[] = "\r\rghi\r\r".split("\\r", -1);
        assertEquals(5, arr4.length);
        String arr5[] = "\r".split("\\r", -1);
        assertEquals(2, arr5.length);
    }

    public void testPartialLineBufferMultiSplit() {
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        assertNull(partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());

        //multiline

        char[] data = "Test4\nTest5".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test4", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test5", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        data = " Test6\r\nTest7".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test5 Test6", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test7", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        data = " Test8\rTest9".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test7 Test8", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test9", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferMulti() {

        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test10\nTest11\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());

        data = "Test10\r\nTest11\r\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());

        data = "Test10\rTest11\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferLeftoverCR() {

        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test10\rTest11\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        //append to line
        data = " Test12\rTest13".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test11", partialLineBuffer.readLine());
        assertEquals(" Test12", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test13", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferLeftoverCRPartial() {

        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test10\rTest11\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        //append to line
        data = " Test12".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test11", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals(" Test12", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferLeftoverCRNL() {

        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test10\r\nTest11\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        //append to line
        data = " Test12\r\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test11", partialLineBuffer.readLine());
        assertEquals(" Test12", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferLeftoverCRNLPartialNL() {

        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test10\r\nTest11\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        //append to line
        data = "\n Test12\r\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test11", partialLineBuffer.readLine());
        assertEquals(" Test12", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferLeftoverCRNLPartial() {

        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test10\r\nTest11\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test10", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals("Test11", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

        //append to line
        data = "\n Test12".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals("Test11", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());
        assertEquals(" Test12", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferFull() {
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test1\rTest2\rTest3: ".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals(2, partialLineBuffer.getLines().size());
        assertEquals("Test3: ", partialLineBuffer.getPartialLine(false));

        assertEquals("Test1", partialLineBuffer.readLine());
        assertEquals("Test2", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());

        assertEquals("Test3: ", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());

    }

    public void testPartialLineBufferFull2() {
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test1\r\nTest2\r\nTest3: ".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals(2, partialLineBuffer.getLines().size());
        assertEquals("Test3: ", partialLineBuffer.getPartialLine(false));

        assertEquals("Test1", partialLineBuffer.readLine());
        assertEquals("Test2", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());

        assertEquals("Test3: ", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferFull3() {
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test1\nTest2\nTest3: ".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals(2, partialLineBuffer.getLines().size());
        assertEquals("Test3: ", partialLineBuffer.getPartialLine(false));

        assertEquals("Test1", partialLineBuffer.readLine());
        assertEquals("Test2", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());

        assertEquals("Test3: ", partialLineBuffer.getPartialLine());
        assertNull(partialLineBuffer.getPartialLine());
    }

    public void testPartialLineBufferEmptyLine() {
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test1\nTest2\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals(2, partialLineBuffer.getLines().size());
        assertNull(partialLineBuffer.getPartialLine());

        assertEquals("Test1", partialLineBuffer.readLine());
        assertEquals("Test2", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.readLine());

        data = "\r\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);
        assertEquals("", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());

        data = "\r\n\r\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);
        assertEquals("", partialLineBuffer.readLine());
        assertEquals("", partialLineBuffer.readLine());
        assertNull(partialLineBuffer.getPartialLine());
    }
    public void testUnmarkPartial() {
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test1\r\nTest2\r\nTest3: ".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        assertEquals(2, partialLineBuffer.getLines().size());
        assertEquals("Test3: ", partialLineBuffer.getPartialLine(false));
        assertEquals("Test3: ", partialLineBuffer.getPartialLine());
        assertEquals(null, partialLineBuffer.getPartialLine());
        partialLineBuffer.unmarkPartial();
        assertEquals("Test3: ", partialLineBuffer.getPartialLine(false));
    }

    /**
     * Test input ending with CR, then empty string
     */
    public void testCRLine(){
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test1\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        data = "".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        List<String> lines = partialLineBuffer.getLines();
        assertEquals(0, lines.size());

        String partialLine = partialLineBuffer.getPartialLine(true);
        assertEquals("Test1",partialLine);
    }

    /**
     * test input ending with CR, then NL
     */
    public void testCRNLLine(){
        PartialLineBuffer partialLineBuffer = new PartialLineBuffer();
        char[] data = "Test1\r".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        data = "\n".toCharArray();
        partialLineBuffer.addData(data, 0, data.length);

        List<String> lines = partialLineBuffer.getLines();
        assertEquals(1, lines.size());
        assertEquals("Test1", lines.get(0));

        String partialLine = partialLineBuffer.getPartialLine(true);
        assertEquals(null,partialLine);
    }
}
TOP

Related Classes of com.dtolabs.rundeck.core.utils.TestPartialLineBuffer

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.