public void TestMaxUserflowCount() { for (int i = 0; i < 2 * UserflowReporter.MAX_USERFLOW_COUNT; i++) { Crittercism.BeginUserflow(i.ToString()); } Object[] loggedUserflows = UserflowReporter.AllUserflows(); Assert.AreEqual(UserflowReporter.UserflowCount(), UserflowReporter.MAX_USERFLOW_COUNT, String.Format("Expecting userflowCount : {0} to be the maximum count : {1} .", UserflowReporter.UserflowCount(), UserflowReporter.MAX_USERFLOW_COUNT)); Assert.AreEqual(UserflowReporter.UserflowCount(), loggedUserflows.Length, String.Format("Expecting userflowCount : {0} to be the # of userflows : {1} .", UserflowReporter.UserflowCount(), loggedUserflows.Length)); foreach (Userflow userflow in loggedUserflows) { int index = Int32.Parse(userflow.Name()); Assert.IsTrue(((index >= 0) && (index < UserflowReporter.MAX_USERFLOW_COUNT)), String.Format("Expecting userflow name to be an expected value between 0 and" + "MAX_USERFLOW_COUNT ({0}), name was {1}", UserflowReporter.MAX_USERFLOW_COUNT, index)); } }
private void userflowClick(object sender,RoutedEventArgs e) { Button button = sender as Button; if (button != null) { Debug.Assert(button == userflowButton); String label = button.Content.ToString(); if (label == beginUserflowLabel) { App.userflowName = userflowNames[random.Next(0,userflowNames.Length)]; Crittercism.BeginUserflow(App.userflowName); // Broadcast UserflowEvent to all open windows. App.OnUserflowEvent(EventArgs.Empty); } else if (label == endUserflowLabel) { EndUserflowDialog dialog = new EndUserflowDialog(); dialog.Owner = Window.GetWindow(this); dialog.ShowDialog(); Nullable<bool> dialogResult = dialog.DialogResult; if (dialogResult == true) { switch (dialog.Answer) { case "End Userflow": Crittercism.EndUserflow(App.userflowName); break; case "Fail Userflow": Crittercism.FailUserflow(App.userflowName); break; case "Cancel Userflow": Crittercism.CancelUserflow(App.userflowName); break; }; App.userflowName = null; // Broadcast UserflowEvent to all open windows. App.OnUserflowEvent(EventArgs.Empty); } } } }
public void TestStaticAPIFailUserflow() { // Test "Static API" "FailUserflow" string exampleName = "Purchase Crittercism SDK"; // Resulting state of "FailUserflow" is correct. It's required to "Begin" first. Crittercism.BeginUserflow(exampleName); Assert.IsTrue(Userflow.UserflowForName(exampleName).State() == UserflowState.BEGUN, "Confirm BeginUserflow changes state to UserflowState.BEGUN"); Crittercism.FailUserflow(exampleName); Assert.IsNull(Userflow.UserflowForName(exampleName), "Confirm finished userflow no longer accessible"); }
public void TestStaticAPIBeginUserflowWithValue() { // Test "Static API" "BeginUserflow(name,value)" method string exampleName = "Purchase Crittercism SDK"; int exampleValue = 12345678; // Resulting value of "BeginUserflow(name,value)" is correct. Crittercism.BeginUserflow(exampleName, exampleValue); Assert.IsTrue(Crittercism.GetUserflowValue(exampleName) == exampleValue, String.Format("Confirm BeginUserflow changes value to {0} #2", exampleValue)); Crittercism.EndUserflow(exampleName); Assert.IsNull(Userflow.UserflowForName(exampleName), "Confirm finished userflow no longer accessible"); }
public void TestStaticAPIBeginUserflow() { // Test "Static API" "BeginUserflow(name)" method string exampleName = "Purchase Crittercism SDK"; // Resulting value of "BeginUserflow(name)" is correct. Crittercism.BeginUserflow(exampleName); Assert.IsNotNull(Userflow.UserflowForName(exampleName), "Confirm begun userflow is accessible"); Assert.IsTrue(Userflow.UserflowForName(exampleName).State() == UserflowState.BEGUN, "Confirm BeginUserflow changes state to UserflowState.BEGUN"); Crittercism.EndUserflow(exampleName); Assert.IsNull(Userflow.UserflowForName(exampleName), "Confirm finished userflow no longer accessible"); }
public void TestStaticAPIUserflowValueProperty() { // Test "Static API" "GetUserflowValue" and "SetUserflowValue" string exampleName = "Purchase Crittercism SDK"; const int exampleValue = 12345678; // $123456.78 const int value1 = 1234; // $12.34 const int value2 = 9999; // $99.99 Crittercism.BeginUserflow(exampleName, exampleValue); // Set and get the property value. Crittercism.SetUserflowValue(exampleName, value1); Assert.IsTrue(Crittercism.GetUserflowValue(exampleName) == value1, "Expecting Crittercism.GetUserflowValue(exampleName) == {0} #1", value1); // Set and get the property value. Crittercism.SetUserflowValue(exampleName, value2); Assert.IsTrue(Crittercism.GetUserflowValue(exampleName) == value2, "Expecting Crittercism.GetUserflowValue(exampleName) == {0} #2", value2); }
private void userflowButton_Click(object sender, EventArgs e) { Button button = sender as Button; if (button != null) { String label = button.Text; if (label == beginUserflowLabel) { Program.userflowName = userflowNames[random.Next(0, userflowNames.Length)]; Crittercism.BeginUserflow(Program.userflowName); // Broadcast UserflowEvent to all open windows. Program.OnUserflowEvent(EventArgs.Empty); } else if (label == endUserflowLabel) { EndUserflowDialog dialog = new EndUserflowDialog(); dialog.Owner = this; dialog.ShowDialog(); if (dialog.DialogResult == DialogResult.Yes) { switch (dialog.Answer) { case "End Userflow": Crittercism.EndUserflow(Program.userflowName); break; case "Fail Userflow": Crittercism.FailUserflow(Program.userflowName); break; case "Cancel Userflow": Crittercism.CancelUserflow(Program.userflowName); break; } ; Program.userflowName = null; // Broadcast UserflowEvent to all open windows. Program.OnUserflowEvent(EventArgs.Empty); } } } }
private static void UserflowClick(Frame frame, SampleDataItem item) { // Conveniently remembering userflowItem so we can change its Title // back to "Begin Userflow" later on. userflowItem = item; if (item.Title == beginUserflowLabel) { // "Begin Userflow" userflowName = userflowNames[random.Next(0, userflowNames.Length)]; Crittercism.BeginUserflow(userflowName); item.Title = endUserflowLabel; } else { // "End Userflow" // This works because "End Userflow" == UniqueId of Groups[1] frame.Navigate(typeof(SectionPage), item.Title); } }
private void userflowClick(object sender, RoutedEventArgs e) { Button button = sender as Button; if (button != null) { Debug.Assert(button == userflowButton); String label = button.Content.ToString(); if (label == beginUserflowLabel) { Demo.userflowName = userflowNames[random.Next(0, userflowNames.Length)]; Crittercism.BeginUserflow(Demo.userflowName); button.Content = endUserflowLabel; } else if (label == endUserflowLabel) { NavigationService.Navigate(new Uri("/EndUserflow.xaml", UriKind.Relative)); } } }
public void TestStaticAPIInterrupt() { // Test "Static API" "Interrupt" works as expected. string exampleName = "Purchase Crittercism SDK"; // First "Static API" call. Crittercism.BeginUserflow(exampleName); Userflow firstUserflow = Userflow.UserflowForName(exampleName); // Second "Static API" call. Crittercism.BeginUserflow(exampleName); Userflow secondUserflow = Userflow.UserflowForName(exampleName); // Confirm firstUserflow has been "Interrupt"ed. Assert.IsTrue(firstUserflow.State() == UserflowState.CANCELLED, "Confirm BeginUserflow changes state to UserflowState.CANCELLED"); // Confirm secondUserflow has begun Assert.IsTrue(secondUserflow.State() == UserflowState.BEGUN, "Confirm BeginUserflow changes state to UserflowState.BEGUN"); // Finish up. Crittercism.EndUserflow(exampleName); Assert.IsNull(Userflow.UserflowForName(exampleName), "Confirm finished userflow no longer accessible"); }
partial void BeginLoginButton_TouchUpInside(UIButton sender) { Crittercism.BeginUserflow("Login"); }
partial void BeginPaymentButton_TouchUpInside(UIButton sender) { Crittercism.BeginUserflow("Payment"); }
public override void StartTimedEvent(string eventName, Hashtable parameters) { Crittercism.BeginUserflow(eventName); }
protected override void OnCreate(Bundle bundle) { // Initialize Crittercism Crittercism.Init(ApplicationContext, "YOUR APP ID GOES HERE"); base.OnCreate(bundle); SetContentView(Resource.Layout.Main); Button ButtonLeaveBreadcrumb = FindViewById <Button>(Resource.Id.ButtonBreadcrumb); ButtonLeaveBreadcrumb.Click += delegate(object sender, EventArgs e) { Crittercism.LeaveBreadcrumb("My Breadcrumb"); }; Button ButtonSetUserName = FindViewById <Button>(Resource.Id.ButtonSetUserName); ButtonSetUserName.Click += delegate { Crittercism.SetUserName("MrsCritter"); }; Button ButtonSetMetadata = FindViewById <Button>(Resource.Id.ButtonSetMetadata); ButtonSetMetadata.Click += delegate { Crittercism.SetMetadata("Game Level", "5"); }; Button ButtonCrash = FindViewById <Button>(Resource.Id.ButtonCrash); ButtonCrash.Click += delegate(object sender, EventArgs e) { CrashInnerException(); //CrashDivideByZero(); //CrashNullReference(); //CrashIndexOutOfRange(); //CrashCustomException(); }; Button ButtonHandledException = FindViewById <Button>(Resource.Id.ButtonHandledException); ButtonHandledException.Click += delegate(object sender, EventArgs e) { try { CrashInnerException(); } catch (System.Exception error) { Crittercism.LogHandledException(error); } }; Button ButtonLogNetworkRequest = FindViewById <Button>(Resource.Id.ButtonLogNetworkRequest); ButtonLogNetworkRequest.Click += delegate(object sender, EventArgs e) { Random random = new Random(); string[] methods = { "GET", "POST", "HEAD" }; string method = methods[random.Next(methods.Length)]; string[] urls = { "http://www.critterwebservice.com", "http://www.crittersearchengine.com/?ilove=critters", "http://www.critterdatingservice.com/nutlovers", "http://www.crittergourmetfood.com/nutsandberries.htm", "http://www.critterworldnews.com/summerfun", "http://www.crittermoviereviews.com/starring=mrscritter", "http://www.critterburrowdecor.com" }; string url = urls[random.Next(urls.Length)]; int[] responseCodes = { 200, 202, 400, 404 }; int responseCode = responseCodes[random.Next(responseCodes.Length)]; Crittercism.LogNetworkRequest( method, url, (long)(1000 * random.NextDouble()), random.Next(10000), random.Next(1000), responseCode, 0); }; Button ButtonBeginTransaction = FindViewById <Button>(Resource.Id.ButtonBeginTransaction); ButtonBeginTransaction.Click += delegate(object sender, EventArgs e) { Crittercism.BeginUserflow("Exercise"); }; Button ButtonEndTransaction = FindViewById <Button>(Resource.Id.ButtonEndTransaction); ButtonEndTransaction.Click += delegate(object sender, EventArgs e) { Crittercism.EndUserflow("Exercise"); }; Button ButtonFailTransaction = FindViewById <Button>(Resource.Id.ButtonFailTransaction); ButtonFailTransaction.Click += delegate(object sender, EventArgs e) { Crittercism.FailUserflow("Exercise"); }; Button ButtonSetTransactionValue = FindViewById <Button>(Resource.Id.ButtonSetTransactionValue); Button ButtonGetTransactionValue = FindViewById <Button>(Resource.Id.ButtonGetTransactionValue); ButtonSetTransactionValue.Click += delegate(object sender, EventArgs e) { Random random = new Random(); Crittercism.SetUserflowValue("Exercise", random.Next(1000)); }; ButtonGetTransactionValue.Click += delegate(object sender, EventArgs e) { int value = Crittercism.GetUserflowValue("Exercise"); ButtonGetTransactionValue.Text = value.ToString(); }; }