/**
* Copyright 2011-2015 John Ericksen
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.parceler;
import android.util.SparseArray;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.*;
import static org.junit.Assert.*;
/**
* @author John Ericksen
*/
@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class NonParcelTest {
@Test
public void testCharacter(){
Character input = 'A';
Character output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(input, output);
}
@Test
public void testBoolean(){
Boolean input = true;
Boolean output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(input, output);
}
@Test
public void testByteArray(){
byte[] input = "test".getBytes();
byte[] output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertArrayEquals(input, output);
}
@Test
public void testCharArray(){
char[] input = "test".toCharArray();
char[] output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertArrayEquals(input, output);
}
@Test
public void testBooleanArray(){
boolean[] input = new boolean[]{true, false, false, true};
boolean[] output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(input.length, output.length);
for(int i = 0; i < input.length; i++){
assertEquals(input[i], output[i]);
}
}
@Test
public void testUnmodifiableList(){
List<SubParcel> input = new ArrayList<SubParcel>();
input.add(new SubParcel("name"));
input.add(null);
List<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(List.class, Collections.unmodifiableList(input)));
assertEquals(2, output.size());
assertEquals("name", output.get(0).getName());
assertNull(output.get(1));
}
@Test
public void testSublist(){
List<SubParcel> input = new ArrayList<SubParcel>();
input.add(new SubParcel("one"));
input.add(new SubParcel("two"));
input.add(new SubParcel("three"));
input.add(null);
List<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(List.class, input.subList(0, 2)));
assertEquals(2, output.size());
assertEquals("one", output.get(0).getName());
assertEquals("two", output.get(1).getName());
}
@Test
public void testList(){
List<SubParcel> input = new ArrayList<SubParcel>();
input.add(new SubParcel("name"));
input.add(null);
ArrayList<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(2, output.size());
assertEquals("name", output.get(0).getName());
assertNull(output.get(1));
}
@Test
public void testLinkedList(){
List<SubParcel> input = new LinkedList<SubParcel>();
input.add(new SubParcel("name"));
input.add(null);
LinkedList<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(2, output.size());
assertEquals("name", output.get(0).getName());
assertNull(output.get(1));
}
@Test
public void testSet(){
Set<SubParcel> input = new HashSet<SubParcel>();
SubParcel subParcel = new SubParcel("name");
input.add(subParcel);
input.add(null);
HashSet<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(2, output.size());
assertTrue(output.contains(subParcel));
assertTrue(output.contains(null));
}
@Test
public void testTreeSet(){
Set<SubParcel> input = new TreeSet<SubParcel>();
input.add(new SubParcel("one"));
input.add(new SubParcel("two"));
input.add(new SubParcel("three"));
TreeSet<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(3, output.size());
assertTrue(output.contains(new SubParcel("one")));
assertTrue(output.contains(new SubParcel("two")));
assertTrue(output.contains(new SubParcel("three")));
}
@Test
public void testSortedSet(){
SortedSet<SubParcel> input = new TreeSet<SubParcel>();
input.add(new SubParcel("one"));
input.add(new SubParcel("two"));
input.add(new SubParcel("three"));
SortedSet<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(SortedSet.class, input));
assertEquals(3, output.size());
assertTrue(output.contains(new SubParcel("one")));
assertTrue(output.contains(new SubParcel("two")));
assertTrue(output.contains(new SubParcel("three")));
}
@Test
public void testLinkedHashSet(){
Set<SubParcel> input = new LinkedHashSet<SubParcel>();
SubParcel subParcel = new SubParcel("name");
input.add(subParcel);
input.add(null);
LinkedHashSet<SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(2, output.size());
assertTrue(output.contains(subParcel));
assertTrue(output.contains(null));
}
@Test
public void testMap(){
Map<SubParcel, SubParcel> input = new HashMap<SubParcel, SubParcel>();
SubParcel key1 = new SubParcel("key");
SubParcel key2 = new SubParcel("key2");
input.put(key1, new SubParcel("name"));
input.put(null, new SubParcel("null"));
input.put(key2, null);
Map<SubParcel, SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(3, output.size());
assertEquals("name", output.get(key1).getName());
assertEquals("null", output.get(null).getName());
assertNull(output.get(key2));
}
@Test
public void testLinkedHashMap(){
Map<SubParcel, SubParcel> input = new LinkedHashMap<SubParcel, SubParcel>();
SubParcel key1 = new SubParcel("key");
SubParcel key2 = new SubParcel("key2");
input.put(key1, new SubParcel("name"));
input.put(null, new SubParcel("null"));
input.put(key2, null);
LinkedHashMap<SubParcel, SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(3, output.size());
assertEquals("name", output.get(key1).getName());
assertEquals("null", output.get(null).getName());
assertNull(output.get(key2));
}
@Test
public void testSortedMap(){
SortedMap<String, SubParcel> input = new TreeMap<String, SubParcel>();
input.put("1", new SubParcel("name"));
input.put("2", new SubParcel("null"));
input.put("3", null);
SortedMap<String, SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(SortedMap.class, input));
assertEquals(3, output.size());
assertEquals("name", output.get("1").getName());
assertEquals("null", output.get("2").getName());
assertNull(output.get("3"));
}
@Test
public void testPrimitiveKeyMap(){
Map<Integer, SubParcel> input = new HashMap<Integer, SubParcel>();
Integer key1 = 1;
Integer key2 = 2;
input.put(key1, new SubParcel("name"));
input.put(null, new SubParcel("null"));
input.put(key2, null);
HashMap<Integer, SubParcel> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(3, output.size());
assertEquals("name", output.get(key1).getName());
assertEquals("null", output.get(null).getName());
assertNull(output.get(key2));
}
@Test
public void testPrimitiveValueMap(){
Map<SubParcel, Integer> input = new HashMap<SubParcel, Integer>();
Integer value = 42;
Integer value2 = 43;
SubParcel subParcel = new SubParcel("name");
SubParcel nullParcel = new SubParcel("null");
input.put(subParcel, value);
input.put(nullParcel, null);
input.put(null, value2);
Map<SubParcel, Integer> output = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(3, output.size());
assertEquals(value, output.get(subParcel));
assertEquals(value2, output.get(null));
assertNull(output.get(nullParcel));
}
@Test
public void testSparseArray(){
SparseArray<SubParcel> input = new SparseArray<SubParcel>();
input.append(1, new SubParcel("name"));
input.append(2, null);
SparseArray<SubParcel> exampleSparseArray = Parcels.unwrap(ParcelsTestUtil.wrap(input));
assertEquals(2, exampleSparseArray.size());
SubParcel output = exampleSparseArray.get(1);
assertEquals("name", output.getName());
assertNull(exampleSparseArray.get(2));
}
@Test
public void testInteger(){
Integer integerOuput = Parcels.unwrap(ParcelsTestUtil.wrap(42));
Integer integerNullOuput = Parcels.unwrap(ParcelsTestUtil.wrap(null));
assertEquals(Integer.valueOf(42), integerOuput);
assertNull(integerNullOuput);
}
@Test
public void testLong(){
Long longOuput = Parcels.unwrap(ParcelsTestUtil.wrap(42L));
Long longNullOuput = Parcels.unwrap(ParcelsTestUtil.wrap(null));
assertEquals(Long.valueOf(42L), longOuput);
assertNull(longNullOuput);
}
@Test
public void testDouble(){
Double doubleOutput = Parcels.unwrap(ParcelsTestUtil.wrap(42.42));
Double doubleNullOuput = Parcels.unwrap(ParcelsTestUtil.wrap(null));
assertEquals(Double.valueOf(42.42), doubleOutput);
assertNull(doubleNullOuput);
}
@Test
public void testByte(){
Byte byteOutput = Parcels.unwrap(ParcelsTestUtil.wrap((byte)0x42));
Byte byteNullOuput = Parcels.unwrap(ParcelsTestUtil.wrap(null));
assertEquals(Byte.valueOf((byte)0x42), byteOutput);
assertNull(byteNullOuput);
}
@Test
public void testFloat(){
Float floatOutput = Parcels.unwrap(ParcelsTestUtil.wrap(42.42F));
Float floatNullOutput = Parcels.unwrap(ParcelsTestUtil.wrap(null));
assertEquals(Float.valueOf(42.42F), floatOutput);
assertNull(floatNullOutput);
}
@Test
public void testString(){
String stringOutput = Parcels.unwrap(ParcelsTestUtil.wrap("42"));
String stringNullOutput = Parcels.unwrap(ParcelsTestUtil.wrap(null));
assertEquals("42", stringOutput);
assertNull(stringNullOutput);
}
}