private void SaveChanges(string user, MStack mStack) { _cache.Set(user, mStack, new MemoryCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(_timeout) }); }
public void Pop_UserExistsStackIsEmpty_ReturnEmptyStackResult() { var messages = new Stack <string>(); object expectedValue = new MStack { User = _user, Messages = messages }; _memoryCacheMock .Setup(m => m.TryGetValue(It.IsAny <string>(), out expectedValue)) .Returns(true); var mStackService = new MStackService(_memoryCacheMock.Object); var result = mStackService.Pop(_user, out string expectedMessage); Assert.Equal(MStackService.ResultType.EmptyStack, result); Assert.Null(expectedMessage); }
public ResultType Push(string user, string message) { ResultType result; MStack mStack = null; if (!_cache.TryGetValue(user, out mStack)) { mStack = CreateNewMStack(user, message); result = ResultType.UserAdded; } else { mStack.Messages.Push(message); result = ResultType.UserUpdated; } SaveChanges(user, mStack); return(result); }
public void Pop_UserExistsStackNotEmpty_ReturnAppropriateMessage() { var messages = new Stack <string>(); messages.Push(_message); object expectedValue = new MStack { User = _user, Messages = messages }; _memoryCacheMock .Setup(m => m.TryGetValue(It.IsAny <string>(), out expectedValue)) .Returns(true); var mStackService = new MStackService(_memoryCacheMock.Object); var result = mStackService.Pop(_user, out string expectedMessage); Assert.Equal(MStackService.ResultType.PopSuccess, result); Assert.Equal(_message, expectedMessage); }
public void Push_UserAlreadyExists_UpdateMStackForTheUser() { var messages = new Stack <string>(); messages.Push(_message); var mStack = new MStack { User = _user, Messages = messages }; object expectedValue = mStack; _memoryCacheMock .Setup(m => m.TryGetValue(It.IsAny <string>(), out expectedValue)) .Returns(true); var mStackService = new MStackService(_memoryCacheMock.Object); var result = mStackService.Push(_user, _message); Assert.Equal(MStackService.ResultType.UserUpdated, result); _memoryCacheMock.Verify(x => x.CreateEntry(_user)); }
public ResultType Pop(string user, out string message) { message = ""; MStack mStack = null; if (_cache.TryGetValue(user, out mStack)) { if (mStack.Messages.TryPop(out message)) { SaveChanges(user, mStack); return(ResultType.PopSuccess); } else { return(ResultType.EmptyStack); } } else { return(ResultType.NoStack); } }
public void CanCreateANewStack() { MStack _stack = new MStack(); Assert.IsNotNull(_stack); }
public void CanNotCreateANewStackWithLessThanZeroCapacity() { _stack = MStack.create(-1); }
public void WithANewStackCreated() { _stack = MStack.create(3); }