mparticle-roku-sdk 2.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. package/.github/workflows/build.yml +26 -0
  2. package/.gitmodules +3 -0
  3. package/LICENSE +191 -0
  4. package/README.md +24 -0
  5. package/example-legacy-sdk/images/MainMenu_Icon_Center_HD.png +0 -0
  6. package/example-legacy-sdk/images/MainMenu_Icon_Center_SD43.png +0 -0
  7. package/example-legacy-sdk/images/MainMenu_Icon_Side_HD.png +0 -0
  8. package/example-legacy-sdk/images/MainMenu_Icon_Side_SD43.png +0 -0
  9. package/example-legacy-sdk/images/splash_fhd.jpg +0 -0
  10. package/example-legacy-sdk/images/splash_hd.jpg +0 -0
  11. package/example-legacy-sdk/images/splash_sd.jpg +0 -0
  12. package/example-legacy-sdk/manifest +26 -0
  13. package/example-legacy-sdk/source/main.brs +45 -0
  14. package/example-scenegraph-sdk/LICENSE +1 -0
  15. package/example-scenegraph-sdk/README.md +2 -0
  16. package/example-scenegraph-sdk/source/Makefile +6 -0
  17. package/example-scenegraph-sdk/source/app.mk +675 -0
  18. package/example-scenegraph-sdk/source/components/helloworld.brs +300 -0
  19. package/example-scenegraph-sdk/source/components/helloworld.xml +66 -0
  20. package/example-scenegraph-sdk/source/images/channel-poster_fhd.png +0 -0
  21. package/example-scenegraph-sdk/source/images/channel-poster_hd.png +0 -0
  22. package/example-scenegraph-sdk/source/images/channel-poster_sd.png +0 -0
  23. package/example-scenegraph-sdk/source/images/splash-screen_fhd.jpg +0 -0
  24. package/example-scenegraph-sdk/source/images/splash-screen_hd.jpg +0 -0
  25. package/example-scenegraph-sdk/source/images/splash-screen_sd.jpg +0 -0
  26. package/example-scenegraph-sdk/source/manifest +12 -0
  27. package/example-scenegraph-sdk/source/source/Main.brs +46 -0
  28. package/example-scenegraph-sdk/source/testFramework/UnitTestFramework.brs +2867 -0
  29. package/example-scenegraph-sdk/source/tests/TestBasics.brs +266 -0
  30. package/mParticleBundle.crt +68 -0
  31. package/mParticleCore.brs +2301 -0
  32. package/mParticleTask.brs +78 -0
  33. package/mParticleTask.xml +12 -0
  34. package/package.json +5 -0
  35. package/testing/tests/Test__mParticle.brs +88 -0
@@ -0,0 +1,266 @@
1
+ ' @BeforeAll
2
+ sub MainTestSuite__SetUp()
3
+ ' Target testing object. To avoid the object creation in each test
4
+ ' we create instance of target object here and use it in tests as m.targetTestObject.
5
+ m.mParticleTask = createObject("roSGNode", "mParticleTask")
6
+ m.mp = mParticleSGBridge(m.mParticleTask)
7
+ end sub
8
+
9
+ ' @Test
10
+ function TestCase__ProductAction() as string
11
+ sampleProduct = {}
12
+ sampleProduct.id = "foo-product-sku"
13
+ sampleProduct.nm = "foo-product-name"
14
+ sampleProduct.pr = 123.45
15
+ sampleProductAction = {
16
+ an: actionApi.ACTION_TYPE.PURCHASE,
17
+ tr: 123.45,
18
+ pl: [sampleProduct]
19
+ }
20
+
21
+ mpConstants = mparticleConstants()
22
+ product = mpConstants.Product.build("foo-product-sku", "foo-product-name", 123.45)
23
+ productAction = mpConstants.ProductAction.build(actionApi.ACTION_TYPE.PURCHASE, 123.45, [product])
24
+ return m.AssertEqual(productAction, sampleProductAction)
25
+ end function
26
+
27
+ ' @Test
28
+ function Test_SimpleCustom() as string
29
+ m.mp.logEvent("example")
30
+ return true
31
+ end function
32
+
33
+ ' @Test
34
+ function Test_CustomNavigation() as string
35
+ customAttributes = { "example custom attribute": "example custom attribute value" }
36
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.NAVIGATION, customAttributes)
37
+ return true
38
+ end function
39
+
40
+ ' @Test
41
+ function Test_CustomLocation() as string
42
+ customAttributes = { "example custom attribute": "example custom attribute value" }
43
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.LOCATION, customAttributes)
44
+ return true
45
+ end function
46
+
47
+ ' @Test
48
+ function Test_CustomSearch() as string
49
+ customAttributes = { "example custom attribute": "example custom attribute value" }
50
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.SEARCH, customAttributes)
51
+ return true
52
+ end function
53
+
54
+ ' @Test
55
+ function Test_CustomTransaction() as string
56
+ customAttributes = { "example custom attribute": "example custom attribute value" }
57
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.TRANSACTION, customAttributes)
58
+ return true
59
+ end function
60
+
61
+ ' @Test
62
+ function Test_UserContent() as string
63
+ customAttributes = { "example custom attribute": "example custom attribute value" }
64
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.USER_CONTENT, customAttributes)
65
+ return true
66
+ end function
67
+
68
+ ' @Test
69
+ function Test_CustomUserPreference() as string
70
+ customAttributes = { "example custom attribute": "example custom attribute value" }
71
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.USER_PREFERENCE, customAttributes)
72
+ return true
73
+ end function
74
+
75
+ ' @Test
76
+ function Test_CustomSocial() as string
77
+ customAttributes = { "example custom attribute": "example custom attribute value" }
78
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.SOCIAL, customAttributes)
79
+ return true
80
+ end function
81
+
82
+ ' @Test
83
+ function Test_CustomOther() as string
84
+ customAttributes = { "example custom attribute": "example custom attribute value" }
85
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.OTHER, customAttributes)
86
+ return true
87
+ end function
88
+
89
+ ' @Test
90
+ function Test_CustomMedia() as string
91
+ customAttributes = { "example custom attribute": "example custom attribute value" }
92
+ m.mp.logEvent("hello world!", mparticleConstants().CUSTOM_EVENT_TYPE.MEDIA, customAttributes)
93
+ return true
94
+ end function
95
+
96
+ ' @Test
97
+ function Test_Consent() as string
98
+ time = CreateObject("roDateTime")
99
+
100
+ gdprConsentState = {}
101
+ gdprConsentState.c = False
102
+ gdprConsentState.ts = time.asSeconds()
103
+ gdprConsentState.d = "document_agreement.v2"
104
+ gdprConsentState.l = "dtmgbank.com/signup"
105
+ gdprConsentState.h = "IDFA:a5d934n0-232f-4afc-2e9a-3832d95zc702"
106
+
107
+ consentStateAPI = mpConstants.ConsentState
108
+ consentState = consentStateAPI.build()
109
+
110
+ ' GDPR
111
+ gdprConsentStateApi = mpConstants.GDPRConsentState
112
+ gdprConsentState = gdprConsentStateApi.build(False, time.asSeconds())
113
+
114
+ gdprConsentStateApi.setDocument(gdprConsentState, "document_agreement.v2")
115
+ gdprConsentStateApi.setLocation(gdprConsentState, "dtmgbank.com/signup")
116
+ gdprConsentStateApi.setHardwareId(gdprConsentState, "IDFA:a5d934n0-232f-4afc-2e9a-3832d95zc702")
117
+
118
+ consentStateAPI.addGDPRConsentState(consentState, "functional", gdprConsentState)
119
+
120
+ return m.AssertEqual(consentStateAPI.gdpr, gdprConsentState)
121
+ end function
122
+
123
+ ' @Test
124
+ function Test_Media() as string
125
+ customAttributes = { "example custom attribute": "example custom attribute value" }
126
+ mediaSession = mpConstants.MediaSession.build("ABC123", "Space Pilot 3000", mparticleConstants().MEDIA_CONTENT_TYPE.VIDEO, mparticleConstants().MEDIA_STREAM_TYPE.LIVE_STREAM, 1800000)
127
+ m.mp.media.logMediaSessionStart(mediaSession, customAttributes)
128
+
129
+ test1 = m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.contenttype, "Video") and m.AssertEqual(mediaSession.currentplayheadposition, 0) and m.AssertEqual(mediaSession.title, "Space Pilot 3000")
130
+
131
+ print ("Logging session after " + formatjson(test1) + " start: " + formatjson(mediaSession))
132
+
133
+ segment = mpConstants.Segment.build("Chapter 1", 0, 183400)
134
+ mediaSession.segment = segment
135
+ m.mp.media.logSegmentStart(mediaSession, customAttributes)
136
+
137
+ test2 = m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
138
+ print ("Logging session after " + formatjson(test2) + " segment start: " + formatjson(mediaSession))
139
+
140
+ customAttributes = { "Source": "Auto Playback" }
141
+ m.mp.media.logPlay(mediaSession, customAttributes)
142
+
143
+ test3 = m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
144
+ print ("Logging session after " + formatjson(test3) + " play: " + formatjson(mediaSession))
145
+
146
+ mediaSession.currentPlayheadPosition = 1000
147
+ m.mp.media.logPlayheadPosition(mediaSession)
148
+
149
+ test4 = m.AssertEqual(mediaSession.currentplayheadposition, 1000) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
150
+ print ("Logging session after " + formatjson(test4) + " playhead: " + formatjson(mediaSession))
151
+
152
+ mediaSession.currentPlayheadPosition = 1900
153
+ customAttributes = { "Source": "Player Controls" }
154
+ m.mp.media.logPause(mediaSession, customAttributes)
155
+
156
+ test5 = m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
157
+ print ("Logging session after " + formatjson(test5) + " pause: " + formatjson(mediaSession))
158
+
159
+ adBreak = mpConstants.adBreak.build("XYZ123", "Gamer Ad Collection")
160
+ adBreak.duration = 32000
161
+ mediaSession.adBreak = adBreak
162
+ m.mp.media.logAdBreakStart(mediaSession, {})
163
+
164
+ test6 = m.AssertEqual(mediaSession.adBreak.id, "XYZ123") and m.AssertEqual(mediaSession.adBreak.title, "Gamer Ad Collection") and m.AssertEqual(mediaSession.adBreak.duration, 32000) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
165
+ print ("Logging session after " + formatjson(test6) + " adBreak start: " + formatjson(mediaSession))
166
+
167
+ adContent = mpConstants.adContent.build("ABC890", "CP 2077 - Be Cool, Be Anything")
168
+ adContent.duration = 16000
169
+ adContent.position = 0
170
+ adContent.campaign = "CP 2077 Preorder Push"
171
+ mediaSession.adContent = adContent
172
+ m.mp.media.logAdStart(mediaSession, {})
173
+
174
+ test7 = m.AssertEqual(mediaSession.adContent.id, "ABC890") and m.AssertEqual(mediaSession.adContent.title, "CP 2077 - Be Cool, Be Anything") and m.AssertEqual(mediaSession.adContent.duration, 16000) and m.AssertEqual(mediaSession.adBreak.id, "XYZ123") and m.AssertEqual(mediaSession.adBreak.title, "Gamer Ad Collection") and m.AssertEqual(mediaSession.adBreak.duration, 32000) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
175
+ print ("Logging session after " + formatjson(test7) + " ad start: " + formatjson(mediaSession))
176
+
177
+ customAttributes = { "click_timestamp_ms": 1593007533602 }
178
+ m.mp.media.logAdClick(mediaSession, customAttributes)
179
+
180
+ test8 = m.AssertEqual(mediaSession.adContent.id, "ABC890") and m.AssertEqual(mediaSession.adContent.title, "CP 2077 - Be Cool, Be Anything") and m.AssertEqual(mediaSession.adContent.duration, 16000) and m.AssertEqual(mediaSession.adBreak.id, "XYZ123") and m.AssertEqual(mediaSession.adBreak.title, "Gamer Ad Collection") and m.AssertEqual(mediaSession.adBreak.duration, 32000) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
181
+ print ("Logging session after " + formatjson(test8) + " ad click: " + formatjson(mediaSession))
182
+
183
+ m.mp.media.logAdEnd(mediaSession, {})
184
+ mediaSession.adContent = invalid
185
+
186
+ test9 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak.id, "XYZ123") and m.AssertEqual(mediaSession.adBreak.title, "Gamer Ad Collection") and m.AssertEqual(mediaSession.adBreak.duration, 32000) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
187
+ print ("Logging session after " + formatjson(test9) + " ad end: " + formatjson(mediaSession))
188
+
189
+ adContent2 = mpConstants.adContent.build("ABC543", "VtM: B2 - Own the night")
190
+ adContent2.duration = 16000
191
+ adContent2.position = 0
192
+ adContent2.campaign = "VtM: Revival"
193
+ mediaSession.adContent = adContent2
194
+ m.mp.media.logAdStart(mediaSession, {})
195
+
196
+ test10 = m.AssertEqual(mediaSession.adContent.id, "ABC543") and m.AssertEqual(mediaSession.adContent.title, "VtM: B2 - Own the night") and m.AssertEqual(mediaSession.adContent.duration, 16000) and m.AssertEqual(mediaSession.adBreak.id, "XYZ123") and m.AssertEqual(mediaSession.adBreak.title, "Gamer Ad Collection") and m.AssertEqual(mediaSession.adBreak.duration, 32000) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
197
+ print ("Logging session after " + formatjson(test10) + " ad start 2: " + formatjson(mediaSession))
198
+
199
+ m.mp.media.logAdSkip(mediaSession, {})
200
+ mediaSession.adContent = invalid
201
+
202
+ test11 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak.id, "XYZ123") and m.AssertEqual(mediaSession.adBreak.title, "Gamer Ad Collection") and m.AssertEqual(mediaSession.adBreak.duration, 32000) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
203
+ print ("Logging session after " + formatjson(test11) + " ad skip: " + formatjson(mediaSession))
204
+
205
+ m.mp.media.logAdBreakEnd(mediaSession, {})
206
+ mediaSession.adBreak = invalid
207
+
208
+ test12 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
209
+ print ("Logging session after " + formatjson(test12) + " adBreak end: " + formatjson(mediaSession))
210
+
211
+ m.mp.media.logQoS(mediaSession, 120, 3, 1232133, 46, {})
212
+
213
+ test13 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 1") and m.AssertEqual(mediaSession.segment.index, 0) and m.AssertEqual(mediaSession.segment.duration, 183400)
214
+ print ("Logging session after " + formatjson(test13) + " QOS: " + formatjson(mediaSession))
215
+
216
+ m.mp.media.logSegmentEnd(mediaSession, customAttributes)
217
+ mediaSession.segment = invalid
218
+
219
+ test14 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment, invalid)
220
+ print ("Logging session after " + formatjson(test14) + " segment end: " + formatjson(mediaSession))
221
+
222
+ segment2 = mpConstants.Segment.build("Chapter 2", 1, 17500)
223
+ mediaSession.segment = segment2
224
+ m.mp.media.logSegmentStart(mediaSession, customAttributes)
225
+
226
+ test15 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 2") and m.AssertEqual(mediaSession.segment.index, 1) and m.AssertEqual(mediaSession.segment.duration, 17500)
227
+ print ("Logging session after " + formatjson(test15) + " segment start 2: " + formatjson(mediaSession))
228
+
229
+ m.mp.media.logSeekStart(mediaSession, 1900, customAttributes)
230
+
231
+ test16 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 2") and m.AssertEqual(mediaSession.segment.index, 1) and m.AssertEqual(mediaSession.segment.duration, 17500)
232
+ print ("Logging session after " + formatjson(test16) + " seek start: " + formatjson(mediaSession))
233
+
234
+ m.mp.media.logSeekEnd(mediaSession, 45600, {})
235
+
236
+ test17 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment.title, "Chapter 2") and m.AssertEqual(mediaSession.segment.index, 1) and m.AssertEqual(mediaSession.segment.duration, 17500)
237
+ print ("Logging session after " + formatjson(test17) + " seek end: " + formatjson(mediaSession))
238
+
239
+ m.mp.media.logSegmentSkip(mediaSession, customAttributes)
240
+ mediaSession.segment = invalid
241
+
242
+ test18 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment, invalid)
243
+ print ("Logging session after " + formatjson(test18) + " segment skip: " + formatjson(mediaSession))
244
+
245
+ m.mp.media.logBufferStart(mediaSession, 1200, 0.12, 45600, customAttributes)
246
+
247
+ test19 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment, invalid)
248
+ print ("Logging session after " + formatjson(test19) + " buffer start: " + formatjson(mediaSession))
249
+
250
+ m.mp.media.logBufferEnd(mediaSession, 563300, 1.0, 45600, {})
251
+
252
+ test20 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment, invalid)
253
+ print ("Logging session after " + formatjson(test20) + " buffer end: " + formatjson(mediaSession))
254
+
255
+ m.mp.media.logMediaContentEnd(mediaSession, customAttributes)
256
+
257
+ test21 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment, invalid)
258
+ print ("Logging session after " + formatjson(test21) + " media content End: " + formatjson(mediaSession))
259
+
260
+ m.mp.media.logMediaSessionEnd(mediaSession, customAttributes)
261
+
262
+ test22 = m.AssertEqual(mediaSession.adContent, invalid) and m.AssertEqual(mediaSession.adBreak, invalid) and m.AssertEqual(mediaSession.currentplayheadposition, 1900) and m.AssertEqual(mediaSession.contentid, "ABC123") and m.AssertEqual(mediaSession.title, "Space Pilot 3000") and m.AssertEqual(mediaSession.segment, invalid)
263
+ print ("Logging session after " + formatjson(test22) + " End: " + formatjson(mediaSession))
264
+
265
+ return test1 and test2 and test3 and test4 and test5 and test6 and test7 and test8 and test9 and test10 and test11 and test12 and test13 and test14 and test15 and test16 and test71 and test18 and test19 and test20 and test21 and test22
266
+ end function
@@ -0,0 +1,68 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
3
+ EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
4
+ EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
5
+ ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMxMDUwMzA3
6
+ MDAwMFowgbQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
7
+ EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UE
8
+ CxMkaHR0cDovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQD
9
+ EypHbyBEYWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEi
10
+ MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC54MsQ1K92vdSTYuswZLiBCGzD
11
+ BNliF44v/z5lz4/OYuY8UhzaFkVLVat4a2ODYpDOD2lsmcgaFItMzEUz6ojcnqOv
12
+ K/6AYZ15V8TPLvQ/MDxdR/yaFrzDN5ZBUY4RS1T4KL7QjL7wMDge87Am+GZHY23e
13
+ cSZHjzhHU9FGHbTj3ADqRay9vHHZqm8A29vNMDp5T19MR/gd71vCxJ1gO7GyQ5HY
14
+ pDNO6rPWJ0+tJYqlxvTV0KaudAVkV4i1RFXULSo6Pvi4vekyCgKUZMQWOlDxSq7n
15
+ eTOvDCAHf+jfBDnCaQJsY1L6d8EbyHSHyLmTGFBUNUtpTrw700kuH9zB0lL7AgMB
16
+ AAGjggEaMIIBFjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV
17
+ HQ4EFgQUQMK9J47MNIMwojPX+2yz8LQsgM4wHwYDVR0jBBgwFoAUOpqFBxBnKLbv
18
+ 9r0FQW4gwZTaD94wNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v
19
+ b2NzcC5nb2RhZGR5LmNvbS8wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5n
20
+ b2RhZGR5LmNvbS9nZHJvb3QtZzIuY3JsMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEG
21
+ CCsGAQUFBwIBFiVodHRwczovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkv
22
+ MA0GCSqGSIb3DQEBCwUAA4IBAQAIfmyTEMg4uJapkEv/oV9PBO9sPpyIBslQj6Zz
23
+ 91cxG7685C/b+LrTW+C05+Z5Yg4MotdqY3MxtfWoSKQ7CC2iXZDXtHwlTxFWMMS2
24
+ RJ17LJ3lXubvDGGqv+QqG+6EnriDfcFDzkSnE3ANkR/0yBOtg2DZ2HKocyQetawi
25
+ DsoXiWJYRBuriSUBAA/NxBti21G00w9RKpv0vHP8ds42pM3Z2Czqrpv1KrKQ0U11
26
+ GIo/ikGQI31bS/6kA1ibRrLDYGCD+H1QQc7CoZDDu+8CL9IVVO5EFdkKrqeKM+2x
27
+ LXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB
28
+ -----END CERTIFICATE-----
29
+ -----BEGIN CERTIFICATE-----
30
+ MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
31
+ EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
32
+ EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
33
+ ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
34
+ NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
35
+ EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
36
+ AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
37
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
38
+ E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
39
+ /PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
40
+ DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
41
+ GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
42
+ tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
43
+ AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
44
+ FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
45
+ WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
46
+ 9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
47
+ gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
48
+ 2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
49
+ LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
50
+ 4uJEvlz36hz1
51
+ -----END CERTIFICATE-----
52
+ -----BEGIN CERTIFICATE-----
53
+ MIICnjCCAgegAwIBAgIQAOlcuB4VA5KNHpx2RQcMrzANBgkqhkiG9w0BAQUFADBq
54
+ MSswKQYDVQQLDCJDcmVhdGVkIGJ5IGh0dHA6Ly93d3cuZmlkZGxlcjIuY29tMRgw
55
+ FgYDVQQKDA9ET19OT1RfVFJVU1RfQkMxITAfBgNVBAMMGERPX05PVF9UUlVTVF9G
56
+ aWRkbGVyUm9vdDAeFw0xMzEyMTIwMDAwMDBaFw0yMzEyMTkxMTI1NTRaMGoxKzAp
57
+ BgNVBAsMIkNyZWF0ZWQgYnkgaHR0cDovL3d3dy5maWRkbGVyMi5jb20xGDAWBgNV
58
+ BAoMD0RPX05PVF9UUlVTVF9CQzEhMB8GA1UEAwwYRE9fTk9UX1RSVVNUX0ZpZGRs
59
+ ZXJSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6P47ffxB2xJFlYVEZ
60
+ L4KSTORmxI21pUIb6jqkAEGYOeO+In5egCmroZuXbem1YYzTmgkmCelt6OTr0OLa
61
+ ePCkdnxteUDMBs0DpcWutdJW9/9MNE90BfJ2WX1CA4zQx4zFZ9FRpYHntaIE8kf4
62
+ bcts1+CE+VnI1fOPo0PsF6yudQIDAQABo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEB
63
+ MA4GA1UdDwEB/wQEAwICBDAdBgNVHQ4EFgQUouuoWsFXoOzyyW94lTD/apHuos8w
64
+ DQYJKoZIhvcNAQEFBQADgYEAjOW9psxS4AeYgUcIhvNR5pd1BkuEwbdtgd8S0zgf
65
+ jOmkkQNKHPikfOeJurA3jityX3+z9d2zSvtbLU7MYArb7hs5cibAyxalI6NlWSsg
66
+ QGKwfeATxe0gReGYACTf2WIBa3ceQFhAYhyEUYJpDiZsJi8mZkeQMWH/ZanBnL/Q
67
+ gZ4=
68
+ -----END CERTIFICATE-----