33import android .support .test .InstrumentationRegistry ;
44import android .support .test .runner .AndroidJUnit4 ;
55
6+ import com .unity3d .ads .device .Storage ;
67import com .unity3d .ads .device .StorageManager ;
8+ import com .unity3d .ads .metadata .InAppPurchaseMetaData ;
79import com .unity3d .ads .metadata .MediationMetaData ;
810import com .unity3d .ads .metadata .MetaData ;
911import com .unity3d .ads .metadata .PlayerMetaData ;
1012import com .unity3d .ads .properties .ClientProperties ;
1113import com .unity3d .ads .webview .WebViewApp ;
1214
15+ import org .json .JSONArray ;
16+ import org .json .JSONObject ;
1317import org .junit .After ;
1418import org .junit .BeforeClass ;
1519import org .junit .Test ;
1620import org .junit .runner .RunWith ;
1721import static org .junit .Assert .*;
1822
23+ import java .util .ArrayList ;
1924import java .util .HashMap ;
2025
2126@ RunWith (AndroidJUnit4 .class )
@@ -39,33 +44,31 @@ public void testMediationMetaData () throws Exception {
3944 metaData .setOrdinal (1 );
4045 metaData .commit ();
4146
42- HashMap <String , Object > params = (HashMap <String , Object >)((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
47+ JSONObject values = (JSONObject )((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
48+ JSONObject mediationObject = values .getJSONObject ("mediation" );
4349
44- assertEquals ("Metadata doesn't have correct amount of values" , params .size (), 2 * 2 );
50+ JSONObject nameObject = mediationObject .getJSONObject ("name" );
51+ assertEquals ("Incorrect name value" , nameObject .getString ("value" ), "MediationNetwork" );
52+ assertNotNull ("Timestamp for name is null" , nameObject .getLong ("ts" ));
4553
46- HashMap <String , Object > metadataEntries = (HashMap <String , Object >)metaData .getEntries ();
47- for (String k : params .keySet ()) {
48- assertTrue ("Metadata doesn't contain key: " + k , metadataEntries .containsKey (k ));
49- assertEquals ("Metadata key " + k + " doesn't contain value: " + params .get (k ), metadataEntries .get (k ), params .get (k ));
50- }
54+ JSONObject ordinalObject = mediationObject .getJSONObject ("ordinal" );
55+ assertEquals ("Incorrect ordinal value" , ordinalObject .getInt ("value" ), 1 );
56+ assertNotNull ("Timestamp for ordinal is null" , ordinalObject .getLong ("ts" ));
5157 }
5258
5359 @ Test
5460 public void testPlayerMetaData () throws Exception {
5561 WebViewApp .setCurrentApp (new MetaDataWebApp ());
5662 PlayerMetaData metaData = new PlayerMetaData (ClientProperties .getApplicationContext ());
5763 metaData .setServerId ("bulbasaur" );
58- metaData .commit ();
59-
60- HashMap <String , Object > params = (HashMap <String , Object >)((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
6164
62- assertEquals ("Metadata doesn't have correct amount of values" , params .size (), 1 * 2 );
65+ metaData .commit ();
66+ JSONObject values = (JSONObject )((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
67+ JSONObject playerObject = values .getJSONObject ("player" );
68+ JSONObject serverIdObject = playerObject .getJSONObject ("server_id" );
6369
64- HashMap <String , Object > metadataEntries = (HashMap <String , Object >)metaData .getEntries ();
65- for (String k : params .keySet ()) {
66- assertTrue ("Metadata doesn't contain key: " + k , metadataEntries .containsKey (k ));
67- assertEquals ("Metadata key " + k + " doesn't contain value: " + params .get (k ), metadataEntries .get (k ), params .get (k ));
68- }
70+ assertEquals ("Incorrect server_id value" , serverIdObject .getString ("value" ), "bulbasaur" );
71+ assertNotNull ("Timestamp for server_id is null" , serverIdObject .getLong ("ts" ));
6972 }
7073
7174 @ Test
@@ -74,18 +77,100 @@ public void testMetaDataBaseClassNoCategory () throws Exception {
7477 MetaData metaData = new MetaData (ClientProperties .getApplicationContext ());
7578 metaData .set ("test.one" , 1 );
7679 metaData .set ("test.two" , "2" );
77- metaData .set ("test.three" , 3.33f );
80+ metaData .set ("test.three" , 123.123 );
81+ metaData .set ("testNumber" , 12345 );
7882 metaData .commit ();
7983
80- HashMap <String , Object > params = (HashMap <String , Object >)((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
84+ JSONObject values = (JSONObject )((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
85+ JSONObject testObject = values .getJSONObject ("test" );
8186
82- assertEquals ("Metadata doesn't have correct amount of values" , params .size (), 3 * 2 );
87+ JSONObject oneObject = testObject .getJSONObject ("one" );
88+ assertEquals ("Incorrect 'one' value" , 1 , oneObject .getInt ("value" ));
89+ assertNotNull ("Timestamp for 'one' is null" , oneObject .getLong ("ts" ));
8390
84- HashMap <String , Object > metadataEntries = (HashMap <String , Object >)metaData .getEntries ();
85- for (String k : params .keySet ()) {
86- assertTrue ("Metadata doesn't contain key: " + k , metadataEntries .containsKey (k ));
87- assertEquals ("Metadata key " + k + " doesn't contain value: " + params .get (k ), metadataEntries .get (k ), params .get (k ));
88- }
91+ JSONObject twoObject = testObject .getJSONObject ("two" );
92+ assertEquals ("Incorrect 'two' value" , "2" , twoObject .getString ("value" ));
93+ assertNotNull ("Timestamp for 'two' is null" , twoObject .getLong ("ts" ));
94+
95+ JSONObject threeObject = testObject .getJSONObject ("three" );
96+ assertEquals ("Incorrect 'three' value" , threeObject .getDouble ("value" ), 123.123 , 0 );
97+ assertNotNull ("Timestamp for 'three' is null" , threeObject .getLong ("ts" ));
98+
99+ JSONObject testNumberObject = values .getJSONObject ("testNumber" );
100+ assertEquals ("Incorrect 'testNumber' value" , 12345 , testNumberObject .getInt ("value" ));
101+ assertNotNull ("Timestamp for 'testNumber' is null" , testNumberObject .getLong ("ts" ));
102+
103+ MetaData metaData2 = new MetaData (ClientProperties .getApplicationContext ());
104+ metaData2 .set ("testNumber" , 23456 );
105+ metaData2 .commit ();
106+
107+ JSONObject values2 = (JSONObject )((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
108+ JSONObject testNumberObject2 = values2 .getJSONObject ("testNumber" );
109+ assertEquals ("Incorrect 'testNumber' second set value" , 23456 , testNumberObject2 .getInt ("value" ));
110+ assertNotNull ("Timestamp for 'testNumber' second set is null" , testNumberObject2 .getLong ("ts" ));
111+
112+ Storage storage = StorageManager .getStorage (StorageManager .StorageType .PUBLIC );
113+ storage .clearData ();
114+ storage .readStorage ();
115+
116+ JSONObject keysFromStorage = (JSONObject )storage .get ("test" );
117+ JSONObject storageOneObject = keysFromStorage .getJSONObject ("one" );
118+
119+ assertEquals ("Incorrect 'one' value" , storageOneObject .getInt ("value" ), 1 );
120+ assertNotNull ("Timestamp for 'one' is null" , storageOneObject .getLong ("ts" ));
121+
122+ JSONObject storageTwoObject = keysFromStorage .getJSONObject ("two" );
123+ assertEquals ("Incorrect 'two' value" , storageTwoObject .getString ("value" ), "2" );
124+ assertNotNull ("Timestamp for 'two' is null" , storageTwoObject .getLong ("ts" ));
125+
126+ JSONObject storageThreeObject = keysFromStorage .getJSONObject ("three" );
127+ assertEquals ("Incorrect 'three' value" , storageThreeObject .getDouble ("value" ), 123.123 , 0 );
128+ assertNotNull ("Timestamp for 'three' is null" , storageThreeObject .getLong ("ts" ));
129+
130+ JSONObject storageTestNumberObject2 = (JSONObject )storage .get ("testNumber" );
131+ assertEquals ("Incorrect 'testNumber' second set value" , 23456 , storageTestNumberObject2 .getInt ("value" ));
132+ assertNotNull ("Timestamp for 'testNumber' second set is null" , storageTestNumberObject2 .getLong ("ts" ));
133+ }
134+
135+ @ Test
136+ public void testMetaDataBaseClassNoCategoryDiskWrite () throws Exception {
137+ MetaData metaData = new MetaData (ClientProperties .getApplicationContext ());
138+ metaData .set ("test.one" , 1 );
139+ metaData .set ("test.two" , "2" );
140+ metaData .set ("test.three" , 123.123 );
141+ metaData .set ("testNumber" , 12345 );
142+ metaData .commit ();
143+
144+ MetaData metaData2 = new MetaData (ClientProperties .getApplicationContext ());
145+ metaData2 .set ("testNumber" , 23456 );
146+ metaData2 .set ("test.four" , 4 );
147+ metaData2 .commit ();
148+
149+ Storage storage = StorageManager .getStorage (StorageManager .StorageType .PUBLIC );
150+ storage .clearData ();
151+ storage .readStorage ();
152+
153+ JSONObject keysFromStorage = (JSONObject )storage .get ("test" );
154+
155+ JSONObject storageFourObject = keysFromStorage .getJSONObject ("four" );
156+ assertEquals ("Incorrect 'four' value" , storageFourObject .getInt ("value" ), 4 );
157+ assertNotNull ("Timestamp for 'three' is null" , storageFourObject .getLong ("ts" ));
158+
159+ JSONObject storageOneObject = keysFromStorage .getJSONObject ("one" );
160+ assertEquals ("Incorrect 'one' value" , storageOneObject .getInt ("value" ), 1 );
161+ assertNotNull ("Timestamp for 'one' is null" , storageOneObject .getLong ("ts" ));
162+
163+ JSONObject storageTwoObject = keysFromStorage .getJSONObject ("two" );
164+ assertEquals ("Incorrect 'two' value" , storageTwoObject .getString ("value" ), "2" );
165+ assertNotNull ("Timestamp for 'two' is null" , storageTwoObject .getLong ("ts" ));
166+
167+ JSONObject storageThreeObject = keysFromStorage .getJSONObject ("three" );
168+ assertEquals ("Incorrect 'three' value" , storageThreeObject .getDouble ("value" ), 123.123 , 0 );
169+ assertNotNull ("Timestamp for 'three' is null" , storageThreeObject .getLong ("ts" ));
170+
171+ JSONObject storageTestNumberObject2 = (JSONObject )storage .get ("testNumber" );
172+ assertEquals ("Incorrect 'testNumber' second set value" , 23456 , storageTestNumberObject2 .getInt ("value" ));
173+ assertNotNull ("Timestamp for 'testNumber' second set is null" , storageTestNumberObject2 .getLong ("ts" ));
89174 }
90175
91176 @ Test
@@ -95,18 +180,41 @@ public void testMetaDataBaseClassWithCategory () throws Exception {
95180 metaData .setCategory ("test" );
96181 metaData .set ("one" , 1 );
97182 metaData .set ("two" , "2" );
98- metaData .set ("three" , 3.33f );
183+ metaData .set ("three" , 123.123 );
99184 metaData .commit ();
100185
101- HashMap <String , Object > params = (HashMap <String , Object >)((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
186+ JSONObject values = (JSONObject )((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
187+ JSONObject testObject = values .getJSONObject ("test" );
102188
103- assertEquals ("Metadata doesn't have correct amount of values" , params .size (), 3 * 2 );
189+ JSONObject oneObject = testObject .getJSONObject ("one" );
190+ assertEquals ("Incorrect 'one' value" , oneObject .getInt ("value" ), 1 );
191+ assertNotNull ("Timestamp for 'one' is null" , oneObject .getLong ("ts" ));
104192
105- HashMap <String , Object > metadataEntries = (HashMap <String , Object >)metaData .getEntries ();
106- for (String k : params .keySet ()) {
107- assertTrue ("Metadata doesn't contain key: " + k , metadataEntries .containsKey (k ));
108- assertEquals ("Metadata key " + k + " doesn't contain value: " + params .get (k ), metadataEntries .get (k ), params .get (k ));
109- }
193+ JSONObject twoObject = testObject .getJSONObject ("two" );
194+ assertEquals ("Incorrect 'two' value" , twoObject .getString ("value" ), "2" );
195+ assertNotNull ("Timestamp for 'two' is null" , twoObject .getLong ("ts" ));
196+
197+ JSONObject threeObject = testObject .getJSONObject ("three" );
198+ assertEquals ("Incorrect 'three' value" , threeObject .getDouble ("value" ), 123.123 , 0 );
199+ assertNotNull ("Timestamp for 'three' is null" , threeObject .getLong ("ts" ));
200+
201+ Storage storage = StorageManager .getStorage (StorageManager .StorageType .PUBLIC );
202+ storage .clearData ();
203+ storage .readStorage ();
204+
205+ JSONObject keysFromStorage = (JSONObject )storage .get ("test" );
206+ JSONObject storageOneObject = keysFromStorage .getJSONObject ("one" );
207+
208+ assertEquals ("Incorrect 'one' value" , storageOneObject .getInt ("value" ), 1 );
209+ assertNotNull ("Timestamp for 'one' is null" , storageOneObject .getLong ("ts" ));
210+
211+ JSONObject storageTwoObject = keysFromStorage .getJSONObject ("two" );
212+ assertEquals ("Incorrect 'two' value" , storageTwoObject .getString ("value" ), "2" );
213+ assertNotNull ("Timestamp for 'two' is null" , storageTwoObject .getLong ("ts" ));
214+
215+ JSONObject storageThreeObject = keysFromStorage .getJSONObject ("three" );
216+ assertEquals ("Incorrect 'three' value" , storageThreeObject .getDouble ("value" ), 123.123 , 0 );
217+ assertNotNull ("Timestamp for 'three' is null" , storageThreeObject .getLong ("ts" ));
110218 }
111219
112220 @ Test
@@ -116,9 +224,46 @@ public void testCommitWithoutMetaDataSet () throws Exception {
116224 metaData .setCategory ("test" );
117225 metaData .commit ();
118226
119- assertNull ("Entries should still be null" , metaData .getEntries ());
227+ assertNull ("Entries should still be null" , metaData .getData ());
120228 }
121229
230+ @ Test
231+ public void testInAppPurhcaseMetaData () throws Exception {
232+ WebViewApp .setCurrentApp (new MetaDataWebApp ());
233+ InAppPurchaseMetaData metaData = new InAppPurchaseMetaData (ClientProperties .getApplicationContext ());
234+ metaData .setCurrency ("EUR" );
235+ metaData .setProductId ("testProductId1" );
236+ metaData .setPrice (1.25 );
237+ metaData .setReceiptPurchaseData ("receiptPurchaseData1" );
238+ metaData .setSignature ("testSignature1" );
239+ metaData .commit ();
240+
241+ InAppPurchaseMetaData metaData2 = new InAppPurchaseMetaData (ClientProperties .getApplicationContext ());
242+ metaData2 .setCurrency ("USD" );
243+ metaData2 .setProductId ("testProductId2" );
244+ metaData2 .setPrice (2.25 );
245+ metaData2 .setReceiptPurchaseData ("receiptPurchaseData2" );
246+ metaData2 .setSignature ("testSignature2" );
247+ metaData2 .commit ();
248+
249+ JSONArray purchases = (JSONArray )((MetaDataWebApp )WebViewApp .getCurrentApp ()).PARAMS [1 ];
250+ JSONObject purchase1 = purchases .getJSONObject (0 );
251+ JSONObject purchase2 = purchases .getJSONObject (1 );
252+
253+ assertEquals ("Incorrect purchase1 value for currency" , "EUR" , purchase1 .getString (InAppPurchaseMetaData .KEY_CURRENCY ));
254+ assertEquals ("Incorrect purchase1 value for productId" , "testProductId1" , purchase1 .getString (InAppPurchaseMetaData .KEY_PRODUCT_ID ));
255+ assertEquals ("Incorrect purchase1 value for price" , 1.25 , purchase1 .getDouble (InAppPurchaseMetaData .KEY_PRICE ), 0 );
256+ assertEquals ("Incorrect purchase1 value for receiptPurchaseData" , "receiptPurchaseData1" , purchase1 .getString (InAppPurchaseMetaData .KEY_RECEIPT_PURCHASE_DATA ));
257+ assertEquals ("Incorrect purchase1 value for signature" , "testSignature1" , purchase1 .getString (InAppPurchaseMetaData .KEY_SIGNATURE ));
258+ assertNotNull ("Timestamp is null for purchase1" , purchase1 .getLong ("ts" ));
259+
260+ assertEquals ("Incorrect purchase2 value for currency" , "USD" , purchase2 .getString (InAppPurchaseMetaData .KEY_CURRENCY ));
261+ assertEquals ("Incorrect purchase2 value for productId" , "testProductId2" , purchase2 .getString (InAppPurchaseMetaData .KEY_PRODUCT_ID ));
262+ assertEquals ("Incorrect purchase2 value for price" , 2.25 , purchase2 .getDouble (InAppPurchaseMetaData .KEY_PRICE ), 0 );
263+ assertEquals ("Incorrect purchase2 value for receiptPurchaseData" , "receiptPurchaseData2" , purchase2 .getString (InAppPurchaseMetaData .KEY_RECEIPT_PURCHASE_DATA ));
264+ assertEquals ("Incorrect purchase2 value for signature" , "testSignature2" , purchase2 .getString (InAppPurchaseMetaData .KEY_SIGNATURE ));
265+ assertNotNull ("Timestamp is null for purchase2" , purchase2 .getLong ("ts" ));
266+ }
122267
123268 private class MetaDataWebApp extends WebViewApp {
124269 public Object [] PARAMS = null ;
0 commit comments