org.openmrs.module.reporting.common.ExcelBuilderTest.java Source code

Java tutorial

Introduction

Here is the source code for org.openmrs.module.reporting.common.ExcelBuilderTest.java

Source

/**
 * The contents of this file are subject to the OpenMRS Public License
 * Version 1.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://license.openmrs.org
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * Copyright (C) OpenMRS, LLC.  All Rights Reserved.
 */
package org.openmrs.module.reporting.common;

import org.junit.Assert;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import org.openmrs.test.BaseModuleContextSensitiveTest;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;

import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;

/**
 * Testing the ExcelBuilder class.
 */
public class ExcelBuilderTest extends BaseModuleContextSensitiveTest {

    protected Log log = LogFactory.getLog(this.getClass());

    @Test
    public void shouldBuildAnExcelWorkbook() throws Exception {

        ExcelBuilder excelBuilder = new ExcelBuilder();
        Assert.assertNotNull(excelBuilder.getWorkbook());

        excelBuilder.newSheet("SheetOne");
        Assert.assertEquals("SheetOne", excelBuilder.getCurrentSheet().getSheetName());

        excelBuilder.addCell("Row One Cell One");
        excelBuilder.addCell("Row One Cell Two", "bold");
        Assert.assertEquals("Row One Cell One, Row One Cell Two",
                ExcelUtil.formatRow(excelBuilder.getCurrentRow()));
        excelBuilder.nextRow();
        excelBuilder.addCell("Row Two Cell One");
        excelBuilder.addCell("Row Two Cell Two", "bold");
        Assert.assertEquals("Row Two Cell One, Row Two Cell Two",
                ExcelUtil.formatRow(excelBuilder.getCurrentRow()));

        excelBuilder.newSheet("SheetTwo");
        Assert.assertEquals("SheetTwo", excelBuilder.getCurrentSheet().getSheetName());

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        excelBuilder.write(baos);
        Assert.assertTrue(baos.size() > 0);
    }

    @Test
    public void shouldSupportMoreThan4000StyledCells() throws Exception {
        ExcelBuilder excelBuilder = new ExcelBuilder();
        for (int i = 0; i < 10000; i++) {
            excelBuilder.addCell("Row " + i, "bold");
            excelBuilder.addCell(new Date());
            excelBuilder.addCell("Value " + i, "italic,underline");
            excelBuilder.nextRow();
        }
        String outFile = System.getProperty("java.io.tmpdir") + File.separator
                + "shouldSupportMoreThan4000StyledCells.xls";
        FileOutputStream fos = new FileOutputStream(outFile);
        excelBuilder.write(fos);
        fos.close();
    }

    @Test
    public void shouldSupportEmptyStringCellContents() throws Exception {
        ExcelBuilder excelBuilder = new ExcelBuilder();
        excelBuilder.newSheet("SheetOne");

        excelBuilder.addCell("");

        assertThat(ExcelUtil.formatRow(excelBuilder.getCurrentRow()), is(""));
    }

}