Skip to content

Commit

Permalink
fixed bug reported on issue #405
Browse files Browse the repository at this point in the history
  • Loading branch information
jbax committed Jul 22, 2020
1 parent f34ef02 commit 1c5ff69
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 8 deletions.
Expand Up @@ -222,7 +222,7 @@ protected void parseRecord() {
}

if (ignoreLeadingWhitespace) {
skipWhitespace(lastFieldOfRecord);
skipWhitespace(lastFieldOfRecord, ignorePadding);
}

if (recordEndsOnNewLine) {
Expand Down Expand Up @@ -270,8 +270,8 @@ private void skipPadding(boolean lastFieldOfRecord) {
}
}

private void skipWhitespace(boolean lastFieldOfRecord) {
while ((ch <= ' ' && whitespaceRangeStart < ch || ch == padding) && length-- > 0) {
private void skipWhitespace(boolean lastFieldOfRecord, boolean ignorePadding) {
while ((ch <= ' ' && whitespaceRangeStart < ch || ch == padding) && !(!ignorePadding && ch == padding) && length-- > 0) {
if (!lastFieldOfRecord || length > 0) {
ch = input.nextChar();
}
Expand Down
Expand Up @@ -43,7 +43,7 @@ public void testKeepPaddingFlag() throws Exception {
FixedWidthParser parser = new FixedWidthParser(settings);

List<String[]> allRows = parser.parseAll(getReader("/examples/example.txt"));

printAndValidate(null, allRows);
}

Expand Down
Expand Up @@ -22,7 +22,7 @@
import static org.testng.Assert.*;

/**
* From: https://github.com/univocity/univocity-parsers/issues/378
* From: https://github.com/univocity/univocity-parsers/issues/404
*
* @author Univocity Software Pty Ltd - <a href="mailto:dev@univocity.com">dev@univocity.com</a>
*/
Expand Down
49 changes: 49 additions & 0 deletions src/test/java/com/univocity/parsers/issues/github/Github_405.java
@@ -0,0 +1,49 @@
/*******************************************************************************
* Copyright 2020 Univocity Software Pty Ltd
*
* 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.
******************************************************************************/
package com.univocity.parsers.issues.github;


import com.univocity.parsers.fixed.*;
import org.testng.annotations.*;

import java.util.*;

import static org.testng.Assert.*;

/**
* From: https://github.com/univocity/univocity-parsers/issues/405
*
* @author Univocity Software Pty Ltd - <a href="mailto:dev@univocity.com">dev@univocity.com</a>
*/
public class Github_405 {

@Test
public void testPaddingOnFixedWidth() {
FixedWidthFields fields = new FixedWidthFields();
fields.addField("padding", 4, FieldAlignment.RIGHT, '0')
.addField("text", 4, FieldAlignment.LEFT, ' ');
fields.keepPaddingOn("padding", "text");

FixedWidthParserSettings settings = new FixedWidthParserSettings(fields);
settings.setKeepPadding(true);

FixedWidthParser parser = new FixedWidthParser(settings);

assertEquals(Arrays.toString(parser.parseLine("0000abcd")),"[0000, abcd]");
assertEquals(Arrays.toString(parser.parseLine("0000 ")),"[0000, ]");
}

}
Expand Up @@ -2,12 +2,12 @@
-----------------------
2 [1997, Ford, E350____________________________________, ac, abs, moon___________________________, 3000.00]
-----------------------
3 [1999, Chevy, Venture "Extended Edition"______________, null, 4900.00]
3 [1999, Chevy, Venture "Extended Edition"______________, ________________________________________, 4900.00]
-----------------------
4 [1996, Jeep, Grand Cherokee__________________________, MUST SELL!
air, moon roof, loaded_______, 4799.00]
-----------------------
5 [1999, Chevy, Venture "Extended Edition, Very Large"__, null, 5000.00]
5 [1999, Chevy, Venture "Extended Edition, Very Large"__, ________________________________________, 5000.00]
-----------------------
6 [null, null, Venture "Extended Edition"______________, null, 4900.00]
6 [null, null, Venture "Extended Edition"______________, ________________________________________, 4900.00]
-----------------------

0 comments on commit 1c5ff69

Please sign in to comment.