Merge pull request #562 from eclipse/refactor_qnconverter

Refactoring & additional tests
This commit is contained in:
Karsten Thoms 2017-11-29 21:46:04 +01:00 committed by GitHub
commit ee52c11194
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 16 deletions

View file

@ -8,12 +8,16 @@
package org.eclipse.xtext.naming;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
/**
* @author Jan Koehnlein - Initial contribution and API
*/
public class DeclarativeQualifiedNameConverterTest extends Assert {
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test public void testQualifiedNameConverter() throws Exception {
IQualifiedNameConverter qualifiedNameConverter = new IQualifiedNameConverter.DefaultImpl() {
@ -25,13 +29,50 @@ public class DeclarativeQualifiedNameConverterTest extends Assert {
QualifiedName qn = QualifiedName.create("foo", "bar", "baz");
assertEquals("foo!bar!baz", qualifiedNameConverter.toString(qn));
assertEquals(qn, qualifiedNameConverter.toQualifiedName("foo!bar!baz"));
try {
qualifiedNameConverter.toQualifiedName(null);
fail("Exception expected");
} catch(IllegalArgumentException e) {}
try {
qualifiedNameConverter.toQualifiedName("");
fail("Exception expected");
} catch(IllegalArgumentException e) {}
qualifiedNameConverter = new IQualifiedNameConverter.DefaultImpl() {
@Override
public String getDelimiter() {
return " ";
}
};
assertEquals("foo bar baz", qualifiedNameConverter.toString(qn));
assertEquals(qn, qualifiedNameConverter.toQualifiedName("foo bar baz"));
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("Qualified name cannot be null");
qualifiedNameConverter.toQualifiedName(null);
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("Qualified name cannot be empty");
qualifiedNameConverter.toQualifiedName("");
}
@Test public void testQualifiedNameConverter_emptyDelimiter() throws Exception {
IQualifiedNameConverter qualifiedNameConverter = new IQualifiedNameConverter.DefaultImpl() {
@Override
public String getDelimiter() {
return "";
}
};
QualifiedName qn = QualifiedName.create("foo", "bar", "baz");
assertEquals("foobarbaz", qualifiedNameConverter.toString(qn));
assertEquals(QualifiedName.create("foobarbaz"), qualifiedNameConverter.toQualifiedName("foobarbaz"));
}
@Test public void testQualifiedNameConverter_nullDelimiter() throws Exception {
IQualifiedNameConverter qualifiedNameConverter = new IQualifiedNameConverter.DefaultImpl() {
@Override
public String getDelimiter() {
return null;
}
};
QualifiedName qn = QualifiedName.create("foo", "bar", "baz");
assertEquals("foonullbarnullbaz", qualifiedNameConverter.toString(qn));
assertEquals(QualifiedName.create("foobarbaz"), qualifiedNameConverter.toQualifiedName("foobarbaz"));
}
}

View file

@ -11,6 +11,7 @@ import java.util.List;
import org.eclipse.xtext.util.Strings;
import com.google.common.base.Preconditions;
import com.google.inject.ImplementedBy;
import com.google.inject.Singleton;
@ -53,15 +54,14 @@ public interface IQualifiedNameConverter {
*/
@Override
public QualifiedName toQualifiedName(String qualifiedNameAsString) {
if (qualifiedNameAsString == null)
throw new IllegalArgumentException("Qualified name cannot be null");
if (qualifiedNameAsString.equals(""))
throw new IllegalArgumentException("Qualified name cannot be empty");
if (Strings.isEmpty(getDelimiter()))
Preconditions.checkArgument(qualifiedNameAsString != null, "Qualified name cannot be null");
Preconditions.checkArgument(!qualifiedNameAsString.isEmpty(), "Qualified name cannot be empty");
String delimiter = getDelimiter();
if (Strings.isEmpty(delimiter))
return QualifiedName.create(qualifiedNameAsString);
List<String> segs = getDelimiter().length() == 1
? Strings.split(qualifiedNameAsString, getDelimiter().charAt(0))
: Strings.split(qualifiedNameAsString, getDelimiter());
List<String> segs = delimiter.length() == 1
? Strings.split(qualifiedNameAsString, delimiter.charAt(0))
: Strings.split(qualifiedNameAsString, delimiter);
return QualifiedName.create(segs);
}