aboutsummaryrefslogtreecommitdiffstats
path: root/gson/src/test/java/com/google/gson/functional/StringTest.java
diff options
context:
space:
mode:
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.java140
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);
+ }
+}