diff --git a/.travis.yml b/.travis.yml index b6e2942..07f17a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ android: - extra-android-m2repository licenses: - android-sdk-license-5be876d5 + - android-sdk-license-c81a61d9 jdk: - oraclejdk7 diff --git a/src/main/java/com/squareup/phrase/Phrase.java b/src/main/java/com/squareup/phrase/Phrase.java index f642797..a3eb622 100644 --- a/src/main/java/com/squareup/phrase/Phrase.java +++ b/src/main/java/com/squareup/phrase/Phrase.java @@ -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); @@ -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(); diff --git a/src/test/java/com/squareup/phrase/PhraseTest.java b/src/test/java/com/squareup/phrase/PhraseTest.java index b1332ac..cdfe07d 100644 --- a/src/test/java/com/squareup/phrase/PhraseTest.java +++ b/src/test/java/com/squareup/phrase/PhraseTest.java @@ -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 @@ -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."); } }