package me.tomassetti.turin.parser.ast;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
import java.util.Collections;
import static org.junit.Assert.*;
public class QualifiedNameTest {
@Test(expected = IllegalArgumentException.class)
public void createWithEmptyList() {
QualifiedName.create(Collections.emptyList());
}
@Test
public void createWithOneSegment() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello"));
assertEquals(true, qualifiedName.isSimpleName());
assertEquals("hello", qualifiedName.qualifiedName());
}
@Test
public void createWithTwoSegments() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello", "turin"));
assertEquals(false, qualifiedName.isSimpleName());
assertEquals("hello.turin", qualifiedName.qualifiedName());
}
@Test
public void createWithManySegments() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello", "turin", "how", "are", "you"));
assertEquals(false, qualifiedName.isSimpleName());
assertEquals("hello.turin.how.are.you", qualifiedName.qualifiedName());
}
@Test
public void firstSegmentWithOneSegment() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello"));
assertEquals("hello", qualifiedName.firstSegment());
}
@Test
public void firstSegmentWithTwoSegments() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello", "turin"));
assertEquals("hello", qualifiedName.firstSegment());
}
@Test
public void firstSegmentWithManySegments() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello", "turin", "how", "are", "you"));
assertEquals("hello", qualifiedName.firstSegment());
}
@Test(expected = UnsupportedOperationException.class)
public void restWithOneSegment() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello"));
qualifiedName.rest();
}
@Test
public void restWithTwoSegments() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello", "turin"));
assertEquals(QualifiedName.create(ImmutableList.of("turin")), qualifiedName.rest());
}
@Test
public void restWithManySegments() {
QualifiedName qualifiedName = QualifiedName.create(ImmutableList.of("hello", "turin", "how", "are", "you"));
assertEquals(QualifiedName.create(ImmutableList.of("turin", "how", "are", "you")), qualifiedName.rest());
}
}