diff options
Diffstat (limited to 'gson/src/test/java/com/google/gson/functional/StringTest.java')
-rw-r--r-- | gson/src/test/java/com/google/gson/functional/StringTest.java | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/gson/src/test/java/com/google/gson/functional/StringTest.java b/gson/src/test/java/com/google/gson/functional/StringTest.java new file mode 100644 index 00000000..7dcf6f0f --- /dev/null +++ b/gson/src/test/java/com/google/gson/functional/StringTest.java @@ -0,0 +1,140 @@ +package com.google.gson.functional; + +import com.google.gson.Gson; + +import junit.framework.TestCase; + +/** + * Functional tests for Json serialization and deserialization of strings. + * + * @author Inderjeet Singh + * @author Joel Leitch + */ +public class StringTest extends TestCase { + private Gson gson; + + @Override + protected void setUp() throws Exception { + super.setUp(); + gson = new Gson(); + } + + public void testStringValueSerialization() throws Exception { + String value = "someRandomStringValue"; + assertEquals('"' + value + '"', gson.toJson(value)); + } + + public void testStringValueDeserialization() throws Exception { + String value = "someRandomStringValue"; + String actual = gson.fromJson("\"" + value + "\"", String.class); + assertEquals(value, actual); + } + + public void testSingleQuoteInStringSerialization() throws Exception { + String valueWithQuotes = "beforeQuote'afterQuote"; + String jsonRepresentation = gson.toJson(valueWithQuotes); + assertEquals(valueWithQuotes, gson.fromJson(jsonRepresentation, String.class)); + } + + public void testEscapedCtrlNInStringSerialization() throws Exception { + String value = "a\nb"; + String json = gson.toJson(value); + assertEquals("\"a\\nb\"", json); + } + + public void testEscapedCtrlNInStringDeserialization() throws Exception { + String json = "'a\\nb'"; + String actual = gson.fromJson(json, String.class); + assertEquals("a\nb", actual); + } + + public void testEscapedCtrlRInStringSerialization() throws Exception { + String value = "a\rb"; + String json = gson.toJson(value); + assertEquals("\"a\\rb\"", json); + } + + public void testEscapedCtrlRInStringDeserialization() throws Exception { + String json = "'a\\rb'"; + String actual = gson.fromJson(json, String.class); + assertEquals("a\rb", actual); + } + + public void testEscapedBackslashInStringSerialization() throws Exception { + String value = "a\\b"; + String json = gson.toJson(value); + assertEquals("\"a\\\\b\"", json); + } + + public void testEscapedBackslashInStringDeserialization() throws Exception { + String actual = gson.fromJson("'a\\\\b'", String.class); + assertEquals("a\\b", actual); + } + + public void testSingleQuoteInStringDeserialization() throws Exception { + String value = "beforeQuote'afterQuote"; + String actual = gson.fromJson("\"" + value + "\"", String.class); + assertEquals(value, actual); + } + + public void testEscapingQuotesInStringSerialization() throws Exception { + String valueWithQuotes = "beforeQuote\"afterQuote"; + String jsonRepresentation = gson.toJson(valueWithQuotes); + String target = gson.fromJson(jsonRepresentation, String.class); + assertEquals(valueWithQuotes, target); + } + + public void testEscapingQuotesInStringDeserialization() throws Exception { + String value = "beforeQuote\\\"afterQuote"; + String actual = gson.fromJson("\"" + value + "\"", String.class); + String expected = "beforeQuote\"afterQuote"; + assertEquals(expected, actual); + } + + public void testStringValueAsSingleElementArraySerialization() throws Exception { + String[] target = {"abc"}; + assertEquals("[\"abc\"]", gson.toJson(target)); + assertEquals("[\"abc\"]", gson.toJson(target, String[].class)); + } + + public void testStringWithEscapedSlashDeserialization() { + String value = "/"; + String json = "'\\/'"; + String actual = gson.fromJson(json, String.class); + assertEquals(value, actual); + } + + /** + * Created in response to http://groups.google.com/group/google-gson/browse_thread/thread/2431d4a3d0d6cb23 + */ + public void testAssignmentCharSerialization() { + String value = "abc="; + String json = gson.toJson(value); + assertEquals("\"abc\\u003d\"", json); + } + + /** + * Created in response to http://groups.google.com/group/google-gson/browse_thread/thread/2431d4a3d0d6cb23 + */ + public void testAssignmentCharDeserialization() { + String json = "\"abc=\""; + String value = gson.fromJson(json, String.class); + assertEquals("abc=", value); + + json = "'abc\u003d'"; + value = gson.fromJson(json, String.class); + assertEquals("abc=", value); + } + + public void testJavascriptKeywordsInStringSerialization() { + String value = "null true false function"; + String json = gson.toJson(value); + assertEquals("\"" + value + "\"", json); + } + + public void testJavascriptKeywordsInStringDeserialization() { + String json = "'null true false function'"; + String value = gson.fromJson(json, String.class); + assertEquals(json.substring(1, json.length() - 1), value); + } +} |