PurchasingRuntimeTest.cs
7.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
#if UNITY_PURCHASING
using System;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEngine.Purchasing;
using UnityEditor.Purchasing;
using UnityEngine.Purchasing.Extension;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
namespace Test
{
public class PurchasingRuntimeTest
{
private IList<ProductDefinition> products;
private int transactionID;
private TransactionLog transactionLog;
private List<ProductDescription> GetProductDescriptions(IEnumerable<ProductDefinition> products) {
return (from product in products
let receipt = "fakeReceipt"
let tranID = (transactionID++).ToString()
let metadata = new ProductMetadata ("Fake", "Fake", "Fake", "GBP", 1.23m)
select new ProductDescription (product.storeSpecificId, metadata, receipt, tranID)).ToList();
}
private ProductMetadata metadata;
private bool _isPurchasingEnabled;
[OneTimeSetUpAttribute]
public void BeforeAll()
{
_isPurchasingEnabled = PurchasingSettings.enabled;
if (!_isPurchasingEnabled)
{
Debug.Log("Temporarily Enabling Purchasing for tests");
}
PurchasingSettings.enabled = true;
}
[OneTimeSetUpAttribute]
public void AfterAll()
{
if (!_isPurchasingEnabled)
{
Debug.Log("Purchasing tests complete. Purchasing will now be disabled");
}
PurchasingSettings.enabled = _isPurchasingEnabled;
}
[SetUp]
public void Init()
{
metadata = new ProductMetadata("£1.23", "Fake title", "Fake desc", "GBP", 1.23m);
products = new List<ProductDefinition> ();
products.Add (new ProductDefinition ("ammo", "ammo.ios", ProductType.Consumable));
products.Add (new ProductDefinition ("bomb", "bomb.ios", ProductType.Consumable));
products.Add (new ProductDefinition ("sword", "sword.ios", ProductType.NonConsumable));
products.Add (new ProductDefinition ("nanogenes", "nanogenes.ios", ProductType.Subscription));
}
[Test]
public void TestProductMetaData()
{
Assert.AreEqual(metadata.localizedPriceString, "£1.23");
Assert.AreEqual(metadata.localizedTitle, "Fake title");
Assert.AreEqual(metadata.localizedDescription, "Fake desc");
Assert.AreEqual(metadata.isoCurrencyCode, "GBP");
Assert.AreEqual(metadata.localizedPrice, 1.23m);
}
[Test]
public void TestProductDescription()
{
var prod1 = new ProductDescription("testID", metadata);
Assert.AreEqual(prod1.storeSpecificId, "testID");
Assert.AreEqual(prod1.type, ProductType.Consumable);
Assert.AreEqual(prod1.metadata, metadata);
Assert.That(prod1.receipt, Is.Null);
Assert.That(prod1.transactionId, Is.Null);
}
[Test]
public void TestProductConsumables()
{
Assert.IsNotEmpty(products);
Assert.AreEqual(products.Count, 4);
var product = products[0];
Assert.AreEqual(product.id, "ammo");
Assert.AreEqual(product.storeSpecificId, "ammo.ios");
Assert.AreEqual(product.type, ProductType.Consumable);
}
private static string GetTempFolder() {
var path = Path.Combine (Directory.GetCurrentDirectory (), "Test/tmp");
if (Directory.Exists (path)) {
Directory.Delete (path, true);
}
Directory.CreateDirectory(path);
return path;
}
class DummyProducts
{
public static ProductDefinition Consumable =
new ProductDefinition ("coins", "com.brainDeadDesign.DepletedUraniumBullets", ProductType.Consumable, true, new List<PayoutDefinition> { new PayoutDefinition (PayoutType.Currency, "gold", 123), new PayoutDefinition (PayoutType.Resource, "health", 100) });
public static ProductDefinition NonConsumable =
new ProductDefinition("Rotary Cannon", "com.brainDeadDesign.GAU-12Equalizer", ProductType.NonConsumable, true, new PayoutDefinition(PayoutType.Item, "Cannon", 1, "anti-materiel cannon"));
public static ProductDefinition Subscription =
new ProductDefinition("subscription", "com.brainDeadDesign.subscription", ProductType.Subscription);
public static HashSet<ProductDefinition> Products = new HashSet<ProductDefinition>
{
Consumable,
NonConsumable,
Subscription
};
public static ReadOnlyCollection<ProductDefinition> ProductCollection =
new ReadOnlyCollection<ProductDefinition> (Products.ToList());
public static ProductMetadata DummyMetadata =
new ProductMetadata("£1.99", "Dummy product title", "Dummy product description", "GBP", 1.99m);
}
class MockLogger : ILogger
{
public bool IsLogTypeAllowed (LogType logType)
{
return true;
}
public void Log (LogType logType, object message)
{
Console.WriteLine (message);
}
public void Log (LogType logType, object message, UnityEngine.Object context)
{
Console.WriteLine (message);
}
public void Log (LogType logType, string tag, object message)
{
Console.WriteLine (message);
}
public void Log (LogType logType, string tag, object message, UnityEngine.Object context)
{
Console.WriteLine (message);
}
public void Log (object message)
{
Console.WriteLine (message);
}
public void Log (string tag, object message)
{
Console.WriteLine (message);
}
public void Log (string tag, object message, UnityEngine.Object context)
{
Console.WriteLine (message);
}
public void LogWarning (string tag, object message)
{
Console.WriteLine (message);
}
public void LogWarning (string tag, object message, UnityEngine.Object context)
{
Console.WriteLine (message);
}
public void LogError (string tag, object message)
{
Console.WriteLine (message);
}
public void LogError (string tag, object message, UnityEngine.Object context)
{
Console.WriteLine (message);
}
public void LogFormat (LogType logType, string format, params object[] args)
{
Console.WriteLine (format);
}
public void LogException (Exception exception)
{
Console.WriteLine (exception);
}
public ILogHandler logHandler {
get {
throw new NotImplementedException ();
}
set {
throw new NotImplementedException ();
}
}
public bool logEnabled { get; set; }
public LogType filterLogType {
get {
throw new NotImplementedException ();
}
set {
throw new NotImplementedException ();
}
}
public void LogFormat (LogType logType, UnityEngine.Object context, string format, params object[] args)
{
Console.WriteLine (format);
}
public void LogException (Exception exception, UnityEngine.Object context)
{
Console.WriteLine (exception);
}
}
}
}
#endif