1+ package com .ab .generics .wildcard ;
2+
3+ import com .ab .generics .model .Employee ;
4+ import com .ab .generics .model .Partner ;
5+ import com .ab .generics .model .Person ;
6+ import org .junit .After ;
7+ import org .junit .Before ;
8+ import org .junit .Test ;
9+
10+ import java .io .File ;
11+ import java .io .IOException ;
12+ import java .util .ArrayList ;
13+ import java .util .List ;
14+
15+ import static org .junit .Assert .*;
16+
17+ public class PersonStorageTest {
18+ private Partner donDrapper = new Partner ("Don Drapper" , 89 );
19+ private Employee peggyOlson = new Employee ("Peggy Olson" , 65 );
20+ private Partner bertCooper = new Partner ("Bert Cooper" , 100 );
21+
22+ private File file ;
23+ private PersonSaver saver ;
24+ private PersonLoader loader ;
25+
26+ @ Test
27+ public void saveAndLoadsPerson () throws IOException , ClassNotFoundException {
28+ /*Person person = new Person("bob", 20);
29+ saver.save(person);
30+ assertEquals(person, loader.load());*/
31+
32+ saver .save (donDrapper );
33+ assertEquals (donDrapper ,loader .load ());
34+
35+ saver .save (peggyOlson );
36+ assertEquals (peggyOlson ,loader .load ());
37+ }
38+
39+ @ Test
40+ public void saveAndLoadsArraysOfPeople () throws IOException , ClassNotFoundException {
41+ /*Person[] person = new Person[2];
42+ person[0] = donDrapper;
43+ person[1] = bertCooper;
44+
45+ saver.saveAll(person);*/
46+
47+ //Arrays are covariants
48+ /*Partner[] partners = new Partner[2];
49+ Person[] persons = partners;
50+ partners[0] = donDrapper;
51+ partners[1] = bertCooper;
52+
53+ saver.saveAll(partners);*/
54+
55+ /*Partner[] partners = new Partner[2];
56+ Person[] persons = partners;
57+ persons[0] = donDrapper;
58+ persons[1] = bertCooper;
59+
60+ saver.saveAll(persons);*/
61+
62+ //Arrays are type unsafe leads to ArrayStoreException
63+ /*Employee[] employees = new Employee[2];
64+ Person[] persons = employees;
65+ persons[0] = donDrapper;
66+ persons[1] = bertCooper;
67+
68+ saver.saveAll(persons);*/
69+
70+ /*List<Person> persons = new ArrayList<>();
71+ persons.add(donDrapper);
72+ persons.add(bertCooper);
73+
74+ saver.saveAll(persons);*/
75+
76+ //Leads to compile time error in order to remove use upper bounded wildcards in saveAll method
77+ List <Partner > persons = new ArrayList <>();
78+ persons .add (donDrapper );
79+ persons .add (bertCooper );
80+
81+ saver .saveAll (persons );
82+
83+
84+ assertEquals (donDrapper , loader .load ());
85+ assertEquals (bertCooper ,loader .load ());
86+ }
87+
88+ @ Test
89+ public void loadListsOfPeople () throws Exception {
90+ saver .save (donDrapper );
91+ saver .save (peggyOlson );
92+
93+ /*List<Person> persons = new ArrayList<>();
94+ loader.loadAll(persons);*/
95+
96+ /*List<Partner> partners = new ArrayList<>();
97+ loader.loadAll(partners);*/
98+
99+ List <Object > persons = new ArrayList <>();
100+ loader .loadAll (persons );
101+
102+ assertEquals (donDrapper , persons .get (0 ));
103+ assertEquals (peggyOlson ,persons .get (1 ));
104+ }
105+
106+ @ Before
107+ public void setUp () throws Exception {
108+ file = File .createTempFile ("tmp" , "people" );
109+ saver = new PersonSaver (file );
110+ loader = new PersonLoader (file );
111+ }
112+
113+ @ After
114+ public void tearDown () throws Exception {
115+ if (file .exists ()){
116+ file .delete ();
117+ }
118+ }
119+ }
0 commit comments