public void TestEventsBuffered()
{
LogConfig.SetupLogging(logDelegate: msg => System.Diagnostics.Debug.WriteLine(msg),
logLevel: LogLevel.Verbose);
// create the config to start the session
AdjustConfig config = new AdjustConfig("123456789012", AdjustConfig.EnvironmentSandbox);
// buffer events
config.EventBufferingEnabled = true;
// start activity handler with config
ActivityHandler activityHandler = GetActivityHandler(config);
DeviceUtil.Sleep(3000);
// test init values
InitTests(AdjustConfig.EnvironmentSandbox, "Verbose", true);
// test first session start
CheckFirstSession();
// create the first Event
AdjustEvent firstEvent = new AdjustEvent("event1");
// add callback parameters
firstEvent.AddCallbackParameter("keyCall", "valueCall");
firstEvent.AddCallbackParameter("keyCall", "valueCall2");
firstEvent.AddCallbackParameter("fooCall", "barCall");
// add partner paramters
firstEvent.AddPartnerParameter("keyPartner", "valuePartner");
firstEvent.AddPartnerParameter("keyPartner", "valuePartner2");
firstEvent.AddPartnerParameter("fooPartner", "barPartner");
// add revenue
firstEvent.SetRevenue(0.001, "EUR");
// track event
activityHandler.TrackEvent(firstEvent);
// create the second Event
AdjustEvent secondEvent = new AdjustEvent("event2");
// add empty revenue
secondEvent.SetRevenue(0, "USD");
// track second event
activityHandler.TrackEvent(secondEvent);
// create third Event
AdjustEvent thirdEvent = new AdjustEvent("event3");
// track third event
activityHandler.TrackEvent(thirdEvent);
DeviceUtil.Sleep(3000);
// test first event
// check that callback parameter was overwritten
Assert.Warn("key keyCall was overwritten");
// check that partner parameter was overwritten
Assert.Warn("key keyPartner was overwritten");
// check that event package was added
Assert.Test("PackageHandler AddPackage");
// check that event was buffered
Assert.Info("Buffered event (0.00100 EUR, 'event1')");
// and not sent to package handler
Assert.NotTest("PackageHandler SendFirstPackage");
// after tracking the event it should write the activity state
Assert.Debug("Wrote Activity state");
// test second event
// check that event package was added
Assert.Test("PackageHandler AddPackage");
// check that event was buffered
Assert.Info("Buffered event (0.00000 USD, 'event2')");
// and not sent to package handler
Assert.NotTest("PackageHandler SendFirstPackage");
// after tracking the event it should write the activity state
Assert.Debug("Wrote Activity state");
// test third event
// check that event package was added
Assert.Test("PackageHandler AddPackage");
// check that event was buffered
Assert.Info("Buffered event 'event3'");
// and not sent to package handler
Assert.NotTest("PackageHandler SendFirstPackage");
// after tracking the event it should write the activity state
Assert.Debug("Wrote Activity state");
// check the number of activity packages
// 1 session + 3 events
Assert.AreEqual(4, MockPackageHandler.PackageQueue.Count);
ActivityPackage firstSessionPackage = MockPackageHandler.PackageQueue[0];
// create activity package test
TestActivityPackage testFirstSessionPackage = new TestActivityPackage(firstSessionPackage);
// set first session
testFirstSessionPackage.TestSessionPackage(1);
// first event
ActivityPackage firstEventPackage = MockPackageHandler.PackageQueue[1];
// create event package test
TestActivityPackage testFirstEventPackage = new TestActivityPackage(firstEventPackage);
// set event test parameters
testFirstEventPackage.EventCount = "1";
testFirstEventPackage.Suffix = "(0.00100 EUR, 'event1')";
testFirstEventPackage.RevenueString = "0.00100";
testFirstEventPackage.Currency = "EUR";
testFirstEventPackage.CallbackParams = "{\"fooCall\":\"barCall\",\"keyCall\":\"valueCall2\"}";
testFirstEventPackage.PartnerParams = "{\"keyPartner\":\"valuePartner2\",\"fooPartner\":\"barPartner\"}";
// test first event
testFirstEventPackage.TestEventPackage("event1");
// second event
ActivityPackage secondEventPackage = MockPackageHandler.PackageQueue[2];
// create event package test
TestActivityPackage testSecondEventPackage = new TestActivityPackage(secondEventPackage);
// set event test parameters
testSecondEventPackage.EventCount = "2";
testSecondEventPackage.Suffix = "(0.00000 USD, 'event2')";
testSecondEventPackage.RevenueString = "0.00000";
testSecondEventPackage.Currency = "USD";
// test second event
testSecondEventPackage.TestEventPackage("event2");
// third event
ActivityPackage thirdEventPackage = MockPackageHandler.PackageQueue[3];
// create event package test
TestActivityPackage testThirdEventPackage = new TestActivityPackage(thirdEventPackage);
// set event test parameters
testThirdEventPackage.EventCount = "3";
testThirdEventPackage.Suffix = "'event3'";
// test third event
testThirdEventPackage.TestEventPackage("event3");
}