You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
3.8 KiB

  1. #pragma warning disable 0612, 0618
  2. using System;
  3. using System.Collections.Generic;
  4. using NUnit.Framework;
  5. namespace UnityEngine.Analytics.Tests
  6. {
  7. [TestFixture, Category("Standard Event SDK")]
  8. public partial class AnalyticsEventTests
  9. {
  10. readonly Dictionary<string, object> m_CustomData = new Dictionary<string, object>();
  11. AnalyticsResult m_Result = AnalyticsResult.Ok;
  12. [SetUp]
  13. public void TestCaseSetUp()
  14. {
  15. m_Result = AnalyticsResult.Ok;
  16. m_CustomData.Clear();
  17. m_CustomData.Add("custom_param", "test");
  18. }
  19. [Test]
  20. public void SdkVersion_FormatTest()
  21. {
  22. int major, minor, patch;
  23. var versions = AnalyticsEvent.sdkVersion.Split('.');
  24. Assert.AreEqual(3, versions.Length, "Number of integer fields in version format");
  25. Assert.IsTrue(int.TryParse(versions[0], out major), "Major version is an integer");
  26. Assert.IsTrue(int.TryParse(versions[1], out minor), "Minor version is an integer");
  27. Assert.IsTrue(int.TryParse(versions[2], out patch), "Patch version is an integer");
  28. Assert.LessOrEqual(0, major, "Major version");
  29. Assert.LessOrEqual(0, minor, "Minor version");
  30. Assert.LessOrEqual(0, patch, "Patch version");
  31. }
  32. [Test]
  33. public void Custom_EventNameTest(
  34. [Values("custom_event", "", null)] string eventName
  35. )
  36. {
  37. if (string.IsNullOrEmpty(eventName))
  38. {
  39. Assert.Throws<ArgumentException>(() => m_Result = AnalyticsEvent.Custom(eventName));
  40. }
  41. else
  42. {
  43. Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName));
  44. EvaluateAnalyticsResult(m_Result);
  45. }
  46. }
  47. [Test]
  48. public void Custom_EventDataTest()
  49. {
  50. var eventName = "custom_event";
  51. Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName, m_CustomData));
  52. EvaluateCustomData(m_CustomData);
  53. EvaluateAnalyticsResult(m_Result);
  54. }
  55. [Test]
  56. public void Custom_RegisterUnregisterUnnamedTest()
  57. {
  58. Action<IDictionary<string, object>> myAction =
  59. eventData => eventData.Add("my_key", "my_value");
  60. AnalyticsEvent.Register(myAction); // Registering for a named AnalyticsEvent
  61. var eventName = "custom_event";
  62. Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName, m_CustomData));
  63. EvaluateRegisteredCustomData(m_CustomData);
  64. EvaluateAnalyticsResult(m_Result);
  65. AnalyticsEvent.Unregister(myAction);
  66. }
  67. /// Normal. Unregistered.
  68. public static void EvaluateCustomData(IDictionary<string, object> customData)
  69. {
  70. Assert.AreEqual(1, customData.Count, "Custom param count");
  71. }
  72. /// For Registered case.
  73. public static void EvaluateRegisteredCustomData(IDictionary<string, object> customData)
  74. {
  75. Assert.AreEqual(2, customData.Count, "Custom param count");
  76. }
  77. public static void EvaluateAnalyticsResult(AnalyticsResult result)
  78. {
  79. switch (result)
  80. {
  81. case AnalyticsResult.Ok:
  82. break;
  83. case AnalyticsResult.InvalidData:
  84. Assert.Fail("Event data is invalid.");
  85. break;
  86. case AnalyticsResult.TooManyItems:
  87. Assert.Fail("Event data consists of too many parameters.");
  88. break;
  89. default:
  90. Debug.LogFormat("A result of {0} is passable for the purpose of this test.", result);
  91. break;
  92. }
  93. }
  94. }
  95. }