blob: 807c7a414a5dd785f74fe310c1d113037fecbfcb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
package org.apache.camel.dataformat.univocity;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* This class tests the options of {@link org.apache.camel.dataformat.univocity.UniVocityFixedWidthDataFormat}.
*/
public final class UniVocityFixedWidthDataFormatTest {
@Test
public void shouldConfigureNullValue() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setNullValue("N/A");
assertEquals("N/A", dataFormat.getNullValue());
assertEquals("N/A", dataFormat.createAndConfigureWriterSettings().getNullValue());
assertEquals("N/A", dataFormat.createAndConfigureParserSettings().getNullValue());
}
@Test
public void shouldConfigureSkipEmptyLines() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setSkipEmptyLines(true);
assertTrue(dataFormat.getSkipEmptyLines());
assertTrue(dataFormat.createAndConfigureWriterSettings().getSkipEmptyLines());
assertTrue(dataFormat.createAndConfigureParserSettings().getSkipEmptyLines());
}
@Test
public void shouldConfigureIgnoreTrailingWhitespaces() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setIgnoreTrailingWhitespaces(true);
assertTrue(dataFormat.getIgnoreTrailingWhitespaces());
assertTrue(dataFormat.createAndConfigureWriterSettings().getIgnoreTrailingWhitespaces());
assertTrue(dataFormat.createAndConfigureParserSettings().getIgnoreTrailingWhitespaces());
}
@Test
public void shouldConfigureIgnoreLeadingWhitespaces() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setIgnoreLeadingWhitespaces(true);
assertTrue(dataFormat.getIgnoreLeadingWhitespaces());
assertTrue(dataFormat.createAndConfigureWriterSettings().getIgnoreLeadingWhitespaces());
assertTrue(dataFormat.createAndConfigureParserSettings().getIgnoreLeadingWhitespaces());
}
@Test
public void shouldConfigureHeadersDisabled() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setHeadersDisabled(true);
assertTrue(dataFormat.isHeadersDisabled());
assertNull(dataFormat.createAndConfigureWriterSettings().getHeaders());
assertNull(dataFormat.createAndConfigureParserSettings().getHeaders());
}
@Test
public void shouldConfigureHeaders() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setHeaders(new String[]{"A", "B", "C"});
assertArrayEquals(new String[]{"A", "B", "C"}, dataFormat.getHeaders());
assertArrayEquals(new String[]{"A", "B", "C"}, dataFormat.createAndConfigureWriterSettings().getHeaders());
assertArrayEquals(new String[]{"A", "B", "C"}, dataFormat.createAndConfigureParserSettings().getHeaders());
}
@Test
public void shouldConfigureHeaderExtractionEnabled() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setHeaderExtractionEnabled(true);
assertTrue(dataFormat.getHeaderExtractionEnabled());
assertTrue(dataFormat.createAndConfigureParserSettings().isHeaderExtractionEnabled());
}
@Test
public void shouldConfigureNumberOfRecordsToRead() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setNumberOfRecordsToRead(42);
assertEquals(Integer.valueOf(42), dataFormat.getNumberOfRecordsToRead());
assertEquals(42, dataFormat.createAndConfigureParserSettings().getNumberOfRecordsToRead());
}
@Test
public void shouldConfigureEmptyValue() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setEmptyValue("empty");
assertEquals("empty", dataFormat.getEmptyValue());
assertEquals("empty", dataFormat.createAndConfigureWriterSettings().getEmptyValue());
}
@Test
public void shouldConfigureLineSeparator() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setLineSeparator("ls");
assertEquals("ls", dataFormat.getLineSeparator());
assertEquals("ls", dataFormat.createAndConfigureWriterSettings().getFormat().getLineSeparatorString());
assertEquals("ls", dataFormat.createAndConfigureParserSettings().getFormat().getLineSeparatorString());
}
@Test
public void shouldConfigureNormalizedLineSeparator() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setNormalizedLineSeparator('n');
assertEquals(Character.valueOf('n'), dataFormat.getNormalizedLineSeparator());
assertEquals('n', dataFormat.createAndConfigureWriterSettings().getFormat().getNormalizedNewline());
assertEquals('n', dataFormat.createAndConfigureParserSettings().getFormat().getNormalizedNewline());
}
@Test
public void shouldConfigureComment() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setComment('c');
assertEquals(Character.valueOf('c'), dataFormat.getComment());
assertEquals('c', dataFormat.createAndConfigureWriterSettings().getFormat().getComment());
assertEquals('c', dataFormat.createAndConfigureParserSettings().getFormat().getComment());
}
@Test
public void shouldConfigureLazyLoad() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setLazyLoad(true);
assertTrue(dataFormat.isLazyLoad());
}
@Test
public void shouldConfigureAsMap() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setAsMap(true);
assertTrue(dataFormat.isAsMap());
}
@Test
public void shouldConfigurePadding() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setPadding('p');
assertEquals(Character.valueOf('p'), dataFormat.getPadding());
assertEquals('p', dataFormat.createAndConfigureWriterSettings().getFormat().getPadding());
assertEquals('p', dataFormat.createAndConfigureParserSettings().getFormat().getPadding());
}
@Test
public void shouldConfigureSkipTrailingCharsUntilNewline() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setSkipTrailingCharsUntilNewline(true);
assertTrue(dataFormat.getSkipTrailingCharsUntilNewline());
assertTrue(dataFormat.createAndConfigureParserSettings().getSkipTrailingCharsUntilNewline());
}
@Test
public void shouldConfigureRecordEndsOnNewline() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setRecordEndsOnNewline(true);
assertTrue(dataFormat.getRecordEndsOnNewline());
assertTrue(dataFormat.createAndConfigureParserSettings().getRecordEndsOnNewline());
}
@Test
public void shouldConfigureFieldLengthWithLengthsOnly() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3});
assertArrayEquals(new int[]{1, 2, 3}, dataFormat.getFieldLengths());
dataFormat.createAndConfigureWriterSettings();
}
@Test
public void shouldConfigureFieldLengthWithHeadersAndLengths() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setHeaders(new String[]{"A", "B", "C"});
assertArrayEquals(new int[]{1, 2, 3}, dataFormat.getFieldLengths());
assertArrayEquals(new String[]{"A", "B", "C"}, dataFormat.getHeaders());
dataFormat.createAndConfigureWriterSettings();
}
@Test
public void shouldNotAllowNoFieldLengths() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat();
assertThrows(IllegalArgumentException.class, () -> dataFormat.createAndConfigureWriterSettings());
}
@Test
public void shouldNotAllowHeadersAndLengthsOfDifferentSize() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3, 4})
.setHeaders(new String[]{"A", "B", "C"});
assertArrayEquals(new int[]{1, 2, 3, 4}, dataFormat.getFieldLengths());
assertArrayEquals(new String[]{"A", "B", "C"}, dataFormat.getHeaders());
assertThrows(IllegalArgumentException.class, () -> dataFormat.createAndConfigureWriterSettings());
}
@Test
public void shouldNotAllowHeadersWithSameName() {
UniVocityFixedWidthDataFormat dataFormat = new UniVocityFixedWidthDataFormat()
.setFieldLengths(new int[]{1, 2, 3})
.setHeaders(new String[]{"A", "B", "A"});
assertArrayEquals(new int[]{1, 2, 3}, dataFormat.getFieldLengths());
assertArrayEquals(new String[]{"A", "B", "A"}, dataFormat.getHeaders());
assertThrows(IllegalArgumentException.class, () -> dataFormat.createAndConfigureWriterSettings());
}
}