AnalyticsEventTests.cs
3.81 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
#pragma warning disable 0612, 0618
using System;
using System.Collections.Generic;
using NUnit.Framework;
namespace UnityEngine.Analytics.Tests
{
[TestFixture, Category("Standard Event SDK")]
public partial class AnalyticsEventTests
{
readonly Dictionary<string, object> m_CustomData = new Dictionary<string, object>();
AnalyticsResult m_Result = AnalyticsResult.Ok;
[SetUp]
public void TestCaseSetUp()
{
m_Result = AnalyticsResult.Ok;
m_CustomData.Clear();
m_CustomData.Add("custom_param", "test");
}
[Test]
public void SdkVersion_FormatTest()
{
int major, minor, patch;
var versions = AnalyticsEvent.sdkVersion.Split('.');
Assert.AreEqual(3, versions.Length, "Number of integer fields in version format");
Assert.IsTrue(int.TryParse(versions[0], out major), "Major version is an integer");
Assert.IsTrue(int.TryParse(versions[1], out minor), "Minor version is an integer");
Assert.IsTrue(int.TryParse(versions[2], out patch), "Patch version is an integer");
Assert.LessOrEqual(0, major, "Major version");
Assert.LessOrEqual(0, minor, "Minor version");
Assert.LessOrEqual(0, patch, "Patch version");
}
[Test]
public void Custom_EventNameTest(
[Values("custom_event", "", null)] string eventName
)
{
if (string.IsNullOrEmpty(eventName))
{
Assert.Throws<ArgumentException>(() => m_Result = AnalyticsEvent.Custom(eventName));
}
else
{
Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName));
EvaluateAnalyticsResult(m_Result);
}
}
[Test]
public void Custom_EventDataTest()
{
var eventName = "custom_event";
Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName, m_CustomData));
EvaluateCustomData(m_CustomData);
EvaluateAnalyticsResult(m_Result);
}
[Test]
public void Custom_RegisterUnregisterUnnamedTest()
{
Action<IDictionary<string, object>> myAction =
eventData => eventData.Add("my_key", "my_value");
AnalyticsEvent.Register(myAction); // Registering for a named AnalyticsEvent
var eventName = "custom_event";
Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName, m_CustomData));
EvaluateRegisteredCustomData(m_CustomData);
EvaluateAnalyticsResult(m_Result);
AnalyticsEvent.Unregister(myAction);
}
/// Normal. Unregistered.
public static void EvaluateCustomData(IDictionary<string, object> customData)
{
Assert.AreEqual(1, customData.Count, "Custom param count");
}
/// For Registered case.
public static void EvaluateRegisteredCustomData(IDictionary<string, object> customData)
{
Assert.AreEqual(2, customData.Count, "Custom param count");
}
public static void EvaluateAnalyticsResult(AnalyticsResult result)
{
switch (result)
{
case AnalyticsResult.Ok:
break;
case AnalyticsResult.InvalidData:
Assert.Fail("Event data is invalid.");
break;
case AnalyticsResult.TooManyItems:
Assert.Fail("Event data consists of too many parameters.");
break;
default:
Debug.LogFormat("A result of {0} is passable for the purpose of this test.", result);
break;
}
}
}
}