/*
* Copyright 2015 Goldman Sachs.
*
* 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.gs.collections.impl.string.immutable;
import com.gs.collections.api.bag.primitive.MutableCharBag;
import com.gs.collections.api.list.primitive.ImmutableCharList;
import com.gs.collections.impl.factory.primitive.CharBags;
import com.gs.collections.impl.list.immutable.primitive.AbstractImmutableCharListTestCase;
import org.junit.Assert;
import org.junit.Test;
public class CharAdapterTest extends AbstractImmutableCharListTestCase
{
private static final String UNICODE_STRING = "\u3042\uD840\uDC00\u3044\uD840\uDC03\u3046\uD83D\uDE09";
@Override
protected ImmutableCharList classUnderTest()
{
return CharAdapter.from((char) 1, (char) 2, (char) 3);
}
@Override
protected ImmutableCharList newWith(char... elements)
{
return CharAdapter.from(elements);
}
@SuppressWarnings("StringBufferReplaceableByString")
@Test
public void stringBuilder()
{
CharAdapter adapt = CharAdapter.adapt(UNICODE_STRING);
Assert.assertEquals(UNICODE_STRING, new StringBuilder(adapt).toString());
}
@Test
public void subSequence()
{
CharAdapter adapt = CharAdapter.adapt(UNICODE_STRING);
CharSequence sequence = adapt.subSequence(1, 3);
Assert.assertEquals(UNICODE_STRING.subSequence(1, 3), sequence);
}
@Override
public void toBag()
{
super.toBag();
MutableCharBag expected = CharBags.mutable.empty();
expected.addOccurrences('a', 3);
expected.addOccurrences('b', 3);
expected.addOccurrences('c', 3);
Assert.assertEquals(expected, CharAdapter.adapt("aaabbbccc").toBag());
}
@Override
@Test
public void makeString()
{
ImmutableCharList list = this.classUnderTest();
StringBuilder expectedString = new StringBuilder("");
StringBuilder expectedString1 = new StringBuilder("");
int size = list.size();
for (char each = 0; each < size; each++)
{
expectedString.append((char) (each + (char) 1));
expectedString1.append((char) (each + (char) 1));
expectedString.append(each == size - 1 ? "" : ", ");
expectedString1.append(each == size - 1 ? "" : "/");
}
Assert.assertEquals(expectedString.toString(), list.makeString());
Assert.assertEquals(expectedString1.toString(), list.makeString("/"));
}
@Override
@Test
public void appendString()
{
StringBuilder expectedString = new StringBuilder("");
StringBuilder expectedString1 = new StringBuilder("");
int size = this.classUnderTest().size();
for (char each = 0; each < size; each++)
{
expectedString.append((char) (each + (char) 1));
expectedString1.append((char) (each + (char) 1));
expectedString.append(each == size - 1 ? "" : ", ");
expectedString1.append(each == size - 1 ? "" : "/");
}
ImmutableCharList list = this.classUnderTest();
StringBuilder appendable2 = new StringBuilder();
list.appendString(appendable2);
Assert.assertEquals(expectedString.toString(), appendable2.toString());
StringBuilder appendable3 = new StringBuilder();
list.appendString(appendable3, "/");
Assert.assertEquals(expectedString1.toString(), appendable3.toString());
}
@Override
@Test
public void testToString()
{
StringBuilder expectedString = new StringBuilder();
int size = this.classUnderTest().size();
for (char each = 0; each < size; each++)
{
expectedString.append((char) (each + (char) 1));
}
Assert.assertEquals(expectedString.toString(), this.classUnderTest().toString());
}
}