Ejemplo n.º 1
0
        public void ImplementInterface_Should_AppendConditionToVerifier()
        {
            var f   = new FilteredClasses(new [] { _mockClass1.Object });
            var sut = new ClassRule(f, false);

            sut.ImplementInterface().That().HasNameMatching(nameof(IInterfaceOfClass1)).Check();
        }
Ejemplo n.º 2
0
        private ClassRule CreateSystemUnderTest()
        {
            var verifierMock = new Mock <IAssertionVerifier <IClassInfo> >(MockBehavior.Loose);

            verifierMock.Setup(v => v.AppendCondition(It.IsAny <Predicate <IClassInfo> >())).Callback <Predicate <IClassInfo> >(p => _savedPredicate = p);
            var filter = new FilteredClasses(new [] { _mockClass1.Object, _mockClass2.Object });

            verifierMock.SetupGet(v => v.Items).Returns(filter);
            var sut = new ClassRule(verifierMock.Object);

            return(sut);
        }
Ejemplo n.º 3
0
            internal override Rule DoParse()
            {
                // ============ MUST NEVER RETURN NULL ======================


                Rule rule;

                //var w = GetWord();
                switch (CurrentChar)
                {
                case '@':     // media query & other
                {
                    // non cumulative
                    rule = new DirectiveRule
                    {
                        Selector = Parse <DirectiveSelector>(),
                    };
                    break;
                }

                case '{':
                    // meaningless block
                    AddError(ErrorCode.UnexpectedToken, "{");
                    rule = new OrphanBlockRule();
                    break;

                case '}':
                    // unexpected block end
                    Index++;                                            // will throw a block mismatch exception, and resume parsing after it.
                    throw new ParsingException("Unexpected token '}'"); // will never be thrown

                default:                                                // classic selector
                    var sel = Parse <Selector>();
                    if (sel == null)
                    {
                        return(null);
                    }
                    rule = new ClassRule
                    {
                        Selector = sel,
                    };
                    break;
                }

                if (End)
                {
                    AddError(ErrorCode.UnexpectedEnd, "end of rule");
                    return(new NotParsableBlockRule());
                }

                if (rule.ExpectedBodyType == Rule.BodyType.None)
                {
                    if (CurrentChar != ';')
                    {
                        AddError(ErrorCode.ExpectingToken, ";");
                    }
                    else
                    {
                        Index++;
                    }
                    return(rule);
                }

                if (CurrentChar != '{')
                {
                    if (CurrentChar == ';')
                    {
                        Index++;
                    }
                    AddError(ErrorCode.ExpectingBody, "This rule requires a body");
                    return(rule);
                }

                if (rule.ExpectedBodyType == Rule.BodyType.Properties)
                {
                    rule.Properties = ParseBlock <Property>(true);
                }
                else
                {
                    rule.ChildRules = ParseBlock <Rule>(true);
                }

                return(rule);
            }