Exemple #1
0
 private void SaveChanges(string user, MStack mStack)
 {
     _cache.Set(user, mStack, new MemoryCacheEntryOptions
     {
         AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(_timeout)
     });
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        public void CanCreateANewStack()
        {
            MStack _stack = new MStack();

            Assert.IsNotNull(_stack);
        }
Exemple #8
0
 public void CanCreateANewStack()
 {
     MStack _stack = new MStack();
     Assert.IsNotNull(_stack);
 }
Exemple #9
0
 public void CanNotCreateANewStackWithLessThanZeroCapacity()
 {
     _stack = MStack.create(-1);
 }
Exemple #10
0
 public void WithANewStackCreated()
 {
     _stack = MStack.create(3);
 }