public void When_AllTypeOfMessages_Then_DividedCorrectly()
        {
            var messages = new[]
            {
                // Track
                mixpanelClient.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty),
                mixpanelClient.GetAliasMessage(DistinctId, Alias),

                // Engage
                mixpanelClient.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty),
                mixpanelClient.GetPeopleSetOnceMessage(DistinctId, DictionaryWithStringProperty),
                mixpanelClient.GetPeopleAddMessage(DistinctId, DictionaryWithStringProperty),
                mixpanelClient.GetPeopleAppendMessage(DistinctId, DictionaryWithStringProperty),
                mixpanelClient.GetPeopleUnionMessage(DistinctId, DictionaryWithStringProperty),
                mixpanelClient.GetPeopleRemoveMessage(DistinctId, DictionaryWithStringProperty),
                mixpanelClient.GetPeopleUnsetMessage(DistinctId, StringPropertyArray),
                mixpanelClient.GetPeopleDeleteMessage(DistinctId),
                mixpanelClient.GetPeopleTrackChargeMessage(DistinctId, DecimalPropertyValue)
            };

            var batchMessage = new BatchMessageWrapper(messages);

            // Check track
            Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(1));
            List <MixpanelMessage> trackMessages = batchMessage.TrackMessages.Single();

            Assert.That(trackMessages.Count, Is.EqualTo(2));

            MixpanelMessage trackMessage = trackMessages[0];

            Assert.That(trackMessage.Data["event"], Is.EqualTo(Event));

            MixpanelMessage aliasMessage = trackMessages[1];

            Assert.That(aliasMessage.Data["event"], Is.EqualTo("$create_alias"));

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(1));
            List <MixpanelMessage> engageMessages = batchMessage.EngageMessages.Single();

            Assert.That(engageMessages.Count, Is.EqualTo(9));
        }