예제 #1
0
 public void Push(BasicBlock block)
 {
     if (OnStack.Add(block))
     {
         Stack.Push(block);
     }
 }
예제 #2
0
파일: OnStackUtc.cs 프로젝트: phougatv/dsa
        public void InfixToPrefix_ConvertsAnInfixExpressionToPrefixExpression(
            string infixExp
            , string expectedExp)
        {
            var actualOnStack = new OnStack <char>();

            var actualExp = actualOnStack.InfixToPrefix(infixExp);

            Assert.True(expectedExp == actualExp);
        }
예제 #3
0
 public bool TryPop(out BasicBlock block)
 {
     block = null;
     if (Stack.Count < 1)
     {
         return(false);
     }
     block = Stack.Pop();
     OnStack.Remove(block);
     return(true);
 }
예제 #4
0
파일: OnStackUtc.cs 프로젝트: phougatv/dsa
        public void ReverseUsingRecursion_ReversesStackUsingRecursion(
            string actualStr
            , string expectedStr)
        {
            var actualOnStack   = new OnStack <string>(actualStr.Split(','));
            var expectedOnStack = new OnStack <string>(expectedStr.Split(','));

            actualOnStack.ReverseUsingRecursion();

            AssertTrueExpectedOnStackAndActualOnStack <string>(expectedOnStack, actualOnStack);
        }
예제 #5
0
파일: OnStackUtc.cs 프로젝트: phougatv/dsa
        public void InfixToPostfix_ThrowsArgumentNullException_WhenInfixExpressionDoestNotContainsAnyArithmeticOperator(
            string inputExp)
        {
            var expectedEx    = new ArgumentException(Message.OnStack.ArithmeticOperatorNotFound);
            var actualOnStack = new OnStack <char>();

            var actualEx = Assert.Throws <ArgumentException>(() => actualOnStack.InfixToPostfix(inputExp));

            Assert.True(expectedEx.ParamName == actualEx.ParamName);
            Assert.True(expectedEx.Message == actualEx.Message);
        }
예제 #6
0
파일: OnStackUtc.cs 프로젝트: phougatv/dsa
        public void InfixToPostfix_ThrowsArgumentNullException_WhenInfixExpressionIsNullOrEmpty(
            string inputExp)
        {
            var expectedEx    = new ArgumentNullException(nameof(inputExp));
            var actualOnStack = new OnStack <char>();


            var actualEx = Assert.Throws <ArgumentNullException>(() => actualOnStack.InfixToPostfix(inputExp));

            Assert.True(expectedEx.ParamName == actualEx.ParamName);
            Assert.True(expectedEx.Message == actualEx.Message);
        }
예제 #7
0
파일: OnStackUtc.cs 프로젝트: phougatv/dsa
        public void InsertAtBottomUsingRecursion_InsertsItemAtTheBottomOfTheStack_ForCharStack(
            string actualStr
            , string expectedStr)
        {
            var actualOnStack   = new OnStack <char>();
            var expectedOnStack = new OnStack <char>(expectedStr.ToCharArray());

            for (var i = 0; i < actualStr.Length; i++)
            {
                actualOnStack.InsertAtBottomUsingRecursion(actualStr[i]);
            }

            AssertTrueElementsOfExpectedStackAndActualStack <char>(expectedOnStack.Stack, actualOnStack.Stack);
            AssertTrueZeroAndActualStackCount(actualOnStack.Stack);
        }
예제 #8
0
    public void Stack(Bullet newBullet)
    {
        //Check maxed stacked items

        if (StackedItems < stackLimit)
        {
            BulletNode newNode = new BulletNode(newBullet);

            newNode.nextNode = top;

            top = newNode;

            StackedItems++;

            OnStack?.Invoke(top.storedBullet.bulletNumber);
        }
    }
예제 #9
0
파일: OnStackUtc.cs 프로젝트: phougatv/dsa
 private void AssertTrueExpectedOnStackAndActualOnStack <T>(OnStack <T> expected, OnStack <T> actual)
 {
     AssertTrueElementsOfExpectedStackAndActualStack <T>(expected.Stack, actual.Stack);
     AssertTrueCountOfExpectedStackAndActualStack <T>(expected.Stack, actual.Stack);
 }