/**
* Copyright 2011-2017 Asakusa Framework Team.
*
* 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.asakusafw.operator.model;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.List;
import org.hamcrest.Matcher;
import org.junit.Test;
/**
* Test for {@link JavaName}.
*/
public class JavaNameTest {
/**
* Test for {@link JavaName#of(String)} (snake_name).
*/
@Test
public void snake_name_of() {
JavaName name = JavaName.of("snake_name");
assertThat(name.getSegments(), contains("snake", "name"));
}
/**
* Test for {@link JavaName#of(String)} (CONSTANT_NAME).
*/
@Test
public void CONSTANT_NAME_OF() {
JavaName name = JavaName.of("CONSTANT_NAME");
assertThat(name.getSegments(), contains("constant", "name"));
}
/**
* Test for {@link JavaName#of(String)} (memberName).
*/
@Test
public void memberNameOf() {
JavaName name = JavaName.of("memberName");
assertThat(name.getSegments(), contains("member", "name"));
}
/**
* Test for {@link JavaName#of(String)} (TypeName).
*/
@Test
public void TypeNameOf() {
JavaName name = JavaName.of("TypeName");
assertThat(name.getSegments(), contains("type", "name"));
}
/**
* Test for {@link JavaName#of(String)} (UPPER single word).
*/
@Test
public void constantSingleWordOf() {
JavaName name = JavaName.of("UPPER");
assertThat(name.getSegments(), contains("upper"));
}
/**
* Test for {@link JavaName#of(String)} (Capital single word).
*/
@Test
public void capitalSingleWordOf() {
JavaName name = JavaName.of("Capital");
assertThat(name.getSegments(), contains("capital"));
}
/**
* Test for {@link JavaName#of(String)} (lower single word).
*/
@Test
public void lowerSingleWordOf() {
JavaName name = JavaName.of("lower");
assertThat(name.getSegments(), contains("lower"));
}
/**
* Test for {@link JavaName#of(String)} (empty).
*/
@Test(expected = IllegalArgumentException.class)
public void of_empty() {
JavaName.of("");
}
/**
* Test for {@link JavaName#of(String)} (only underscore).
*/
@Test
public void of_underscore() {
JavaName name = JavaName.of("_");
assertThat(name.getSegments().size(), is(0));
assertThat(name.toConstantName(), is("_"));
assertThat(name.toTypeName(), is("_"));
assertThat(name.toMemberName(), is("_"));
}
/**
* Test for {@link JavaName#of(String)} (reduplicate underscore).
*/
@Test
public void of_reduplicate_underscore() {
JavaName name = JavaName.of("HELLO__WORLD");
assertThat(name.getSegments(), contains("hello", "world"));
}
/**
* Test for {@link JavaName#of(String)} (starts with underscore).
*/
@Test
public void of_starts_with_underscore() {
JavaName name = JavaName.of("_hello");
assertThat(name.getSegments(), contains("hello"));
}
/**
* Test for {@link JavaName#toTypeName()}.
*/
@Test
public void toTypeName() {
JavaName name = JavaName.of("OneTwoThreeFour");
assertThat(name.toTypeName(), is("OneTwoThreeFour"));
}
/**
* Test for {@link JavaName#toMemberName()}.
*/
@Test
public void toMemberName() {
JavaName name = JavaName.of("OneTwoThreeFour");
assertThat(name.toMemberName(), is("oneTwoThreeFour"));
}
/**
* Test for {@link JavaName#toConstantName()}.
*/
@Test
public void toConstantName() {
JavaName name = JavaName.of("OneTwoThreeFour");
assertThat(name.toConstantName(), is("ONE_TWO_THREE_FOUR"));
}
/**
* Test for {@link JavaName#toSnakeName()}.
*/
@Test
public void toSnakeName() {
JavaName name = JavaName.of("OneTwoThreeFour");
assertThat(name.toSnakeName(), is("one_two_three_four"));
}
/**
* Test for {@link JavaName#addFirst(String)}.
*/
@Test
public void addFirst() {
JavaName name = JavaName.of("OneTwoThreeFour");
name.addFirst("Zero");
assertThat(name.getSegments(), contains("zero", "one", "two", "three", "four"));
}
/**
* Test for {@link JavaName#addLast(String)}.
*/
@Test
public void addLast() {
JavaName name = JavaName.of("OneTwoThreeFour");
name.addLast("Five");
assertThat(name.getSegments(), contains("one", "two", "three", "four", "five"));
}
@SafeVarargs
private static <T> Matcher<? super List<T>> contains(T... values) {
return is(Arrays.asList(values));
}
}