/*
* Copyright © 2013. Palomino Labs (http://palominolabs.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.
*/
package com.palominolabs.crm.sf.soap;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.apache.commons.lang3.StringUtils.join;
import static org.junit.Assert.assertEquals;
public class ConnectionUtilsTest {
@Test
public void testSplitEmptyList() {
List<List<String>> chunks = ConnectionUtils.splitFieldList(new ArrayList<String>(), 10);
assertEquals(0, chunks.size());
}
@Test
public void testSplitListSmallerThanMaxChunk() {
List<String> names = new ArrayList<String>();
// 4x 6-char names
names.add("name01");
names.add("name02");
names.add("name03");
names.add("name04");
List<List<String>> chunks = ConnectionUtils.splitFieldList(names, 30);
assertEquals(1, chunks.size());
assertEquals("name01,name02,name03,name04", join(chunks.get(0), ","));
}
@Test
public void testSplitListWithChunksThatFitPerfectly() {
List<String> names = new ArrayList<String>();
// 4x 6-char names
names.add("name01");
names.add("name02");
names.add("name03");
names.add("name04");
List<List<String>> chunks = ConnectionUtils.splitFieldList(names, 13);
assertEquals(2, chunks.size());
assertEquals("name01,name02", join(chunks.get(0), ","));
assertEquals("name03,name04", join(chunks.get(1), ","));
}
@Test
public void testSplitListWithChunkOneLargerThanMaxSize() {
List<String> names = new ArrayList<String>();
names.add("name01");
names.add("name02");
names.add("name03x");
names.add("name04");
List<List<String>> chunks = ConnectionUtils.splitFieldList(names, 13);
assertEquals(3, chunks.size());
assertEquals("name01,name02", join(chunks.get(0), ","));
assertEquals("name03x", join(chunks.get(1), ","));
assertEquals("name04", join(chunks.get(2), ","));
}
@Test
public void testSplitListWithNameLengthSameAsMaxChunk() {
List<String> names = new ArrayList<String>();
names.add("name01");
names.add("name02");
List<List<String>> chunks = ConnectionUtils.splitFieldList(names, 6);
assertEquals(2, chunks.size());
assertEquals("name01", join(chunks.get(0), ","));
assertEquals("name02", join(chunks.get(1), ","));
}
@Test
public void testSplitListWithNameLengthBiggerthanMaxChunk() {
List<String> names = new ArrayList<String>();
names.add("name01");
names.add("name02");
List<List<String>> chunks = ConnectionUtils.splitFieldList(names, 5);
assertEquals(2, chunks.size());
assertEquals("name01", join(chunks.get(0), ","));
assertEquals("name02", join(chunks.get(1), ","));
}
@Test
public void testSplitListWithSingleOversideName() {
List<String> names = new ArrayList<String>();
names.add("01");
names.add("02");
names.add("this name is too long");
names.add("03");
List<List<String>> chunks = ConnectionUtils.splitFieldList(names, 8);
assertEquals(2, chunks.size());
assertEquals("this name is too long", join(chunks.get(0), ","));
assertEquals("01,02,03", join(chunks.get(1), ","));
}
}