package io.eguan.utils;
/*
* #%L
* Project eguan
* %%
* Copyright (C) 2012 - 2017 Oodrive
* %%
* 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.
* #L%
*/
import io.eguan.utils.UuidCharSequence;
import java.util.UUID;
import org.junit.Assert;
import org.junit.Test;
/**
* Unit tests for {@link UuidCharSequence}.
*
* @author oodrive
* @author llambert
*
*/
public class TestUuidCharSequence {
private static final UUID REF1 = new UUID(81985529216486895L, 4999316062091541180L);
private static final String REF_UPPER = "0123456789ABCDEF4561237890DEFABC";
private static final String REF_LOWER = "0123456789abcdef4561237890defabc";
@Test
public void testLength() {
Assert.assertEquals(32, new UuidCharSequence(new UUID(0, 0)).length());
}
@Test
public void testToString() {
Assert.assertEquals(new UuidCharSequence(REF1, true).toString(), REF_UPPER);
Assert.assertEquals(new UuidCharSequence(REF1, false).toString(), REF_LOWER);
Assert.assertEquals(new UuidCharSequence(REF1).toString(), REF_LOWER);
}
@Test
public void testSubSequence() {
Assert.assertEquals(new UuidCharSequence(REF1).subSequence(12, 25).toString(), REF_LOWER.subSequence(12, 25));
Assert.assertEquals(new UuidCharSequence(REF1, true).subSequence(0, 1).toString(), REF_UPPER.subSequence(0, 1));
Assert.assertEquals(new UuidCharSequence(REF1).subSequence(30, 31).toString(), REF_LOWER.subSequence(30, 31));
Assert.assertEquals(new UuidCharSequence(REF1).subSequence(31, 31).toString(), REF_LOWER.subSequence(31, 31));
Assert.assertEquals(new UuidCharSequence(REF1, false).subSequence(0, 2).toString(), REF_LOWER.subSequence(0, 2));
Assert.assertEquals(new UuidCharSequence(REF1).subSequence(5, 32).toString(), REF_LOWER.subSequence(5, 32));
}
@Test
public void testSubSubSequence() {
Assert.assertEquals(new UuidCharSequence(REF1).subSequence(12, 25).subSequence(2, 5).toString(), REF_LOWER
.subSequence(12, 25).subSequence(2, 5));
Assert.assertEquals(new UuidCharSequence(REF1, true).subSequence(0, 1).subSequence(0, 1).toString(), REF_UPPER
.subSequence(0, 1).subSequence(0, 1));
Assert.assertEquals(new UuidCharSequence(REF1).subSequence(20, 31).subSequence(0, 3).toString(), REF_LOWER
.subSequence(20, 31).subSequence(0, 3));
}
@Test(expected = IndexOutOfBoundsException.class)
public void charAtNeg() {
new UuidCharSequence(REF1).charAt(-1);
}
@Test(expected = IndexOutOfBoundsException.class)
public void charAtAfterLength() {
new UuidCharSequence(REF1).charAt(32);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceStartNeg() {
new UuidCharSequence(REF1).subSequence(-1, 23);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceEndNeg() {
new UuidCharSequence(REF1).subSequence(1, -1);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceStartEnd() {
new UuidCharSequence(REF1).subSequence(10, 5);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceEndLength() {
new UuidCharSequence(REF1).subSequence(10, 33);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceCharAtNeg() {
new UuidCharSequence(REF1).subSequence(22, 23).charAt(-1);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceCharAtAfterLength() {
new UuidCharSequence(REF1).subSequence(22, 23).charAt(1);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceSubSequenceStartNeg() {
new UuidCharSequence(REF1).subSequence(22, 25).subSequence(-1, 23);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceSubSequenceEndNeg() {
new UuidCharSequence(REF1).subSequence(22, 25).subSequence(1, -1);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceSubSequenceStartEnd() {
new UuidCharSequence(REF1).subSequence(22, 25).subSequence(10, 1);
}
@Test(expected = IndexOutOfBoundsException.class)
public void subSequenceSubSequenceEndLength() {
new UuidCharSequence(REF1).subSequence(22, 25).subSequence(2, 4);
}
}