/*
* 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.isis.applib.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
public class TitleBufferTest {
String companyName;
String name;
TitleTestObject objectWithEmptyTitle;
TitleTestObject objectWithNoTitle;
TitleTestObject objectWithTitle;
TitleBuffer t1;
TitleBuffer t2;
TitleBuffer t3;
@Before
public void setUp() {
name = "Fred";
t1 = new TitleBuffer(name);
t2 = new TitleBuffer();
companyName = "ABC Co.";
objectWithTitle = new TitleTestObject();
objectWithTitle.setupTitle(companyName);
objectWithNoTitle = new TitleTestObject();
objectWithEmptyTitle = new TitleTestObject();
objectWithEmptyTitle.setupTitle("");
t3 = new TitleBuffer("This is a long title");
}
@Test
public void testAppend() {
t1.append("");
assertEquals("add empty string", name, t1.toString());
t1.append("Smith");
name += (" " + "Smith");
assertEquals("append simple string", name, t1.toString());
t1.append(",", "");
assertEquals("append empty string with delimiter", name, t1.toString());
t1.append(",", null);
assertEquals("append null with delimiter", name, t1.toString());
t1.append(",", "Xyz Ltd.");
name += (", " + "Xyz Ltd.");
assertEquals("append string with delimiter", name, t1.toString());
}
@Test
public void testAppendEmptyStringLeavesBufferUnchanged() {
t1.append("");
assertEquals(name, t1.toString());
}
@Test
public void testAppendEmptyStringWithJoinerLeavesBufferUnchanged() {
t1.append(",", "");
assertEquals(name, t1.toString());
}
@Test
public void testAppendInt() {
final TitleBuffer t = new TitleBuffer();
t.append(123);
assertEquals("123", t.toString());
}
@Test
public void testAppendNull() {
t1.append(null);
assertEquals(name, t1.toString());
}
@Test
public void testAppendNullWithJoinerLeavesBufferUnchanged() {
t1.append(",", (Object) null);
assertEquals(name, t1.toString());
}
@Test
public void testAppendObjectsWithJoinerAddsTitleWithJoinerAndSpace() {
t1.append(",", objectWithTitle);
assertEquals(name + ", " + companyName, t1.toString());
}
@Test
public void testAppendObjectsWithJoinerOnlyAddsTitleWhenBufferEmpty() {
t2.append(",", objectWithTitle);
assertEquals(name, t1.toString());
}
@Test
public void testAppendObjectWhereDefaultNotNeeded() {
t1.append(objectWithTitle, "none");
assertEquals(name + " " + companyName, t1.toString());
}
@Test
public void testAppendObjectWhereDefaultUsedAsObjectHasEmptyTitle() {
t1.append(objectWithEmptyTitle, "none");
assertEquals(name + " " + "none", t1.toString());
}
@Test
public void testAppendObjectWhereDefaultUsedAsReferenceIsNull() {
t1.append((Object) null, "none");
assertEquals(name + " " + "none", t1.toString());
}
@Test
public void testAppendObjectWithEmptyTitleLeavesBufferUnchanged() {
t1.append(objectWithEmptyTitle);
assertEquals(name, t1.toString());
}
@Test
public void testAppendObjectWithNoTitleLeavesBufferUnchanged() {
t1.append(objectWithNoTitle);
assertEquals(name, t1.toString());
}
@Test
public void testAppendObjectWithTitleAddTitleWithSpace() {
t1.append(objectWithTitle);
assertEquals(name + " " + companyName, t1.toString());
}
@Test
public void testAppendStringAddStringWithSpace() {
t1.append("Smith");
assertEquals("Fred Smith", t1.toString());
}
@Test
public void testAppendStringToEmptyBufferAddsStringWithoutSpace() {
t2.append("Smith");
assertEquals("Smith", t2.toString());
}
@Test
public void testAppendStringWithJoinerAddsStringWithJoinerAndSpace() {
t1.append(",", "Smith");
assertEquals("Fred, Smith", t1.toString());
}
@Test
public void testAppendToBuffer() {
final TitleBuffer t = new TitleBuffer("123");
t.append("test");
assertEquals("123 test", t.toString());
}
@Test
public void testAppendToEmpty() {
final TitleBuffer t = new TitleBuffer();
t.append("test");
assertEquals("test", t.toString());
}
@Test
public void testAppendValue() {
final TitleTestObject s = new TitleTestObject();
t1.append(s);
assertEquals("append empty TextString", name, t1.toString());
//
t1.append(new TitleTestObject("square"));
assertEquals("append empty TextString", name + " " + "square", t1.toString());
}
@Test
public void testConcatEmptyStringLeavesBufferUnchanged() {
t1.concat("");
assertEquals(name, t1.toString());
}
@Test
public void testConcatObjects() {
t1.concat(objectWithTitle);
assertEquals(name + companyName, t1.toString());
}
@Test
public void testConcatObjectsWhereDefaultNotNeededAddsTitle() {
t1.concat(objectWithTitle, "none");
assertEquals(name + companyName, t1.toString());
}
@Test
public void testConcatObjectsWhereNoTitleAddDefaultTitle() {
t1.concat(objectWithNoTitle, "none");
assertEquals(name + "none", t1.toString());
}
@Test
public void testConcatObjectWhereNoTitleLeavesBufferUnchanged() {
t1.concat(objectWithNoTitle);
assertEquals(name, t1.toString());
}
@Test
public void testConcatObjectWhereTitleIsAdded() {
t1.concat(objectWithTitle);
assertEquals("FredABC Co.", t1.toString());
}
@Test
public void testConcatStringAddsString() {
t1.concat("Smith");
assertEquals("FredSmith", t1.toString());
}
@Test
public void testConstructorsWithObjectWhereDefaultIsNotNeeded() {
t1 = new TitleBuffer(objectWithTitle, "test");
assertEquals("ABC Co.", t1.toString());
}
@Test
public void testConstructorsWithObjectWhereDefaultIsUsedAsTitle() {
t1 = new TitleBuffer(objectWithNoTitle, "test");
assertEquals("test", t1.toString());
}
@Test
public void testConstructorWithObject() {
final TitleBuffer t = new TitleBuffer(objectWithTitle);
assertEquals("ABC Co.", t.toString());
}
@Test
public void testConstructorWithObjectWithNoTitle() {
final TitleBuffer t = new TitleBuffer(objectWithEmptyTitle);
assertEquals("", t.toString());
}
@Test
public void testConstructorWithString() {
final TitleBuffer t = new TitleBuffer("Test");
assertEquals("Test", t.toString());
}
@Test
public void testDefaultConstructor() {
final TitleBuffer t = new TitleBuffer();
assertEquals("", t.toString());
}
@Test
public void testTruncateHasNoEffectUntilTitleLongEnough() {
t3.truncate(5);
assertEquals("This is a long title", t3.toString());
}
@Test
public void testTruncateLimitsTitleLength() {
t3.truncate(3);
assertEquals("This is a...", t3.toString());
}
@Test
public void testTruncateMustBeAUsableLength() {
try {
t3.truncate(0);
fail("Exception expected");
} catch (final IllegalArgumentException ee) {
}
}
}