예제 #1
0
 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);
             }
         }
     }
 }
예제 #3
0
        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");
        }
예제 #4
0
        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");
        }
예제 #5
0
        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");
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
                    }
                }
            }
        }
예제 #8
0
 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);
     }
 }
예제 #9
0
        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));
                }
            }
        }
예제 #10
0
        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");
        }
예제 #11
0
 partial void BeginLoginButton_TouchUpInside(UIButton sender)
 {
     Crittercism.BeginUserflow("Login");
 }
예제 #12
0
 partial void BeginPaymentButton_TouchUpInside(UIButton sender)
 {
     Crittercism.BeginUserflow("Payment");
 }
예제 #13
0
 public override void StartTimedEvent(string eventName, Hashtable parameters)
 {
     Crittercism.BeginUserflow(eventName);
 }
예제 #14
0
        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();
            };
        }