Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ android:
- extra-android-m2repository
licenses:
- android-sdk-license-5be876d5
- android-sdk-license-c81a61d9

jdk:
- oraclejdk7
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/com/squareup/phrase/Phrase.java
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ private Token token(Token prev) {
return key(prev);
} else {
throw new IllegalArgumentException(
"Unexpected character '" + nextChar + "'; expected key.");
"Unexpected first character '" + nextChar + "'; must be lower case a-z.");
}
}
return text(prev);
Expand All @@ -280,7 +280,8 @@ private KeyToken key(Token prev) {

// Consume the closing '}'.
if (curChar != '}') {
throw new IllegalArgumentException("Missing closing brace: }");
throw new IllegalArgumentException("Unexpected character '" + curChar
+ "'; expecting lower case a-z, '_', or '}'");
}
consume();

Expand Down
13 changes: 12 additions & 1 deletion src/test/java/com/squareup/phrase/PhraseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,16 @@ public class PhraseTest {
.isEqualTo("Hello Eric");
}

@Test public void putFailUppercaseNotAllowedMiddle() {
try{
from("Hello {aName}").putOptional("Name", "Eric").format();
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
assertThat(e.getMessage()) //
.isEqualTo("Unexpected character 'N'; expecting lower case a-z, '_', or '}'");
}
}

private Phrase gender = from("{gender}");

@Test
Expand Down Expand Up @@ -143,11 +153,12 @@ public void formatFailsFastWhenKeysAreMissing() {
}
}

@Test public void illegalTokenCharactersFailFast() {
@Test public void illegalStartOfTokenCharactersFailFast() {
try {
from("blah {NoUppercaseAllowed}");
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
assertThat(e.getMessage()).isEqualTo("Unexpected first character 'N'; must be lower case a-z.");
}
}

Expand Down