mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 00:38:56 +00:00
Merge pull request #562 from eclipse/refactor_qnconverter
Refactoring & additional tests
This commit is contained in:
commit
ee52c11194
2 changed files with 57 additions and 16 deletions
|
@ -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"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue