package helpers;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;
/**
* @author fo
*/
public class JSONFormTest {
@Test
public void testFlatObject() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo", new String[]{"bar"});
formData.put("baz", new String[]{"bam"});
String expected = "{\"foo\":\"bar\",\"baz\":\"bam\"}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testNestedObject() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[bar][baz]", new String[]{"bam"});
formData.put("foo[bar][qux]", new String[]{"quux"});
formData.put("foo[corge][grault]", new String[]{"fred"});
formData.put("foo[garply]", new String[]{"waldo"});
String expected = "{\"foo\":{\"bar\":{\"qux\":\"quux\",\"baz\":\"bam\"},\"corge\":{\"grault\":\"fred\"},\"garply\":\"waldo\"}}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testFlatArrayWithNumericIndex() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[0]", new String[]{"bar"});
formData.put("foo[1]", new String[]{"baz"});
formData.put("foo[2]", new String[]{"bam"});
String expected = "{\"foo\":[\"bar\",\"baz\",\"bam\"]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testFlatArrayWithImplicitIndex() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo", new String[]{"bar", "baz", "bam"});
String expected = "{\"foo\":[\"bar\",\"baz\",\"bam\"]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testFlatArrayWithoutImplicitIndex() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[]", new String[]{"bar", "baz", "bam"});
String expected = "{\"foo\":[\"bar\",\"baz\",\"bam\"]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testImplicitArrayWithSingleMember() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[]", new String[]{"bar"});
String expected = "{\"foo\":[\"bar\"]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testNestedArrayWithNumericIndex() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[0][0]", new String[]{"bar"});
formData.put("foo[0][1]", new String[]{"baz"});
formData.put("foo[0][2]", new String[]{"bam"});
String expected = "{\"foo\":[[\"bar\",\"baz\",\"bam\"]]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testSkippedIndex() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[0]", new String[]{"bar"});
formData.put("foo[2]", new String[]{"bam"});
String expected = "{\"foo\":[\"bar\",null,\"bam\"]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testNestedArrayWithImplicitIndex() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[0]", new String[]{"bar", "baz", "bam"});
String expected = "{\"foo\":[[\"bar\",\"baz\",\"bam\"]]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testNestedArrayWithoutImplicitIndex() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[0][]", new String[]{"bar", "baz", "bam"});
String expected = "{\"foo\":[[\"bar\",\"baz\",\"bam\"]]}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testInvalidPath() {
Map<String,String[]> formData= new HashMap<>();
formData.put("foo[][bar]", new String[]{"bar", "baz", "bam"});
formData.put("foo[bar][baz", new String[]{"bar"});
formData.put("foo[0", new String[]{"bar"});
formData.put("foo[", new String[]{"bar"});
String expected = "{\"foo[bar][baz\":\"bar\",\"foo[\":\"bar\",\"foo[][bar]\":[\"bar\",\"baz\",\"bam\"],\"foo[0\":\"bar\"}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
@Test
public void testNumericValues() {
Map<String,String[]> formData= new HashMap<>();
formData.put("latitude", new String[]{"52"});
formData.put("longitude", new String[]{"13.4148863"});
String expected = "{\"latitude\":52,\"longitude\":13.4148863}";
String result = JSONForm.parseFormData(formData).toString();
assertEquals(expected, result);
}
}