public void stateless_stopping_sequence_saves_accuracy_with_correct_values() { UserSessionStateless session = new UserSessionStateless(_user); ITextSample sample = new TextSample() { SourceKey = "http://some_url", SourceType = TextSampleSourceType.Wikipedia, Text = "this is some sample text shown" }; string enteredText = "this is somee SAMple tex shownn"; int elapsedInSec = 5; KeySequence seq = session.StartNewSequence(sample); session.StopSequence(seq.KeySequenceId, enteredText, TimeSpan.FromSeconds(elapsedInSec)); UserSessionHistory history = new UserSessionHistory(); var keySeq = history.GetHistoryDetailsByKeySequence(seq.KeySequenceId); var accuracy = keySeq.KeySequenceAnalysis .Where(ks => ks.AnalysisTypeId == (int)Analytics.AnalyticType.Accuracy) .Select(s => s.AnalysisAccuracy) .FirstOrDefault(); Assert.That(accuracy, Is.Not.Null); Assert.That(accuracy.NumIncorrectChars, Is.EqualTo(3)); Assert.That(accuracy.NumExtraChars, Is.EqualTo(2)); Assert.That(accuracy.NumShortChars, Is.EqualTo(1)); Assert.That(accuracy.NumWords, Is.EqualTo(6)); //TODO: address this... //spaces are not currently counted towards the total number of characters //should they be?!... //Assert.That(accuracy.NumChars, Is.EqualTo(sample.GetText().Length)); //Assert.That(accuracy.NumCorrectChars, Is.EqualTo(sample.GetText().Length - accuracy.NumIncorrectChars)); }
public void stateless_stopping_sequence_saves_speed_with_correct_values() { UserSessionStateless session = new UserSessionStateless(_user); ITextSample sample = new TextSample() { SourceKey = "http://some_url", SourceType = TextSampleSourceType.Wikipedia, Text = "this is some sample text shown" }; string enteredText = "this is some SAMple tex shownn"; int elapsedInSec = 5; KeySequence seq = session.StartNewSequence(sample); session.StopSequence(seq.KeySequenceId, enteredText, TimeSpan.FromSeconds(elapsedInSec)); UserSessionHistory history = new UserSessionHistory(); var keySeq = history.GetHistoryDetailsByKeySequence(seq.KeySequenceId); var speed = keySeq.KeySequenceAnalysis .Where(ks => ks.AnalysisTypeId == (int)Analytics.AnalyticType.Speed) .Select(s => s.AnalysisSpeed) .FirstOrDefault(); Assert.That(speed, Is.Not.Null); Assert.That(speed.TotalTimeInMilliSec, Is.EqualTo(elapsedInSec * 1000)); double charsPerSec = (double)enteredText.Length / (double)elapsedInSec; Assert.That(speed.CharsPerSec, Is.EqualTo(Math.Round(charsPerSec, 2))); int numWords = enteredText.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Length; double wordsPerMin = (double)numWords / (elapsedInSec / (double)60); Assert.That(speed.WordPerMin, Is.EqualTo(wordsPerMin)); }