Example #1
0
        private static SkippableFactDiscoverer GetDiscoverer()
        {
            var diagnosticMessageSink = new NullMessageSink();
            var retval = new SkippableFactDiscoverer(diagnosticMessageSink);

            return(retval);
        }
Example #2
0
        /// <summary>
        /// Get the traits from a method.
        /// </summary>
        /// <param name="member">The member (method, field, etc.) to get the traits for.</param>
        /// <returns>A list of traits that are defined on the method.</returns>
        public static IReadOnlyList<KeyValuePair<string, string>> GetTraits(MemberInfo member)
        {
            var messageSink = new NullMessageSink();
            var result = new List<KeyValuePair<string, string>>();

            foreach (var traitAttributeData in member.CustomAttributes)
            {
                var traitAttributeType = traitAttributeData.AttributeType;
                if (!typeof(ITraitAttribute).GetTypeInfo().IsAssignableFrom(traitAttributeType.GetTypeInfo()))
                    continue;

                var discovererAttributeData = FindDiscovererAttributeType(traitAttributeType.GetTypeInfo());
                if (discovererAttributeData == null)
                    continue;

                var discoverer = ExtensibilityPointFactory.GetTraitDiscoverer(messageSink, Reflector.Wrap(discovererAttributeData));
                if (discoverer == null)
                    continue;

                var traits = discoverer.GetTraits(Reflector.Wrap(traitAttributeData));
                if (traits != null)
                    result.AddRange(traits);
            }

            return result;
        }
Example #3
0
        /// <summary>
        /// Get the traits from a method.
        /// </summary>
        /// <param name="member">The member (method, field, etc.) to get the traits for.</param>
        /// <returns>A list of traits that are defined on the method.</returns>
        public static IReadOnlyList <KeyValuePair <string, string> > GetTraits(MemberInfo member)
        {
            var messageSink = new NullMessageSink();
            var result      = new List <KeyValuePair <string, string> >();

            foreach (var traitAttributeData in member.CustomAttributes)
            {
                var traitAttributeType = traitAttributeData.AttributeType;
                if (!typeof(ITraitAttribute).GetTypeInfo().IsAssignableFrom(traitAttributeType.GetTypeInfo()))
                {
                    continue;
                }

                var discovererAttributeData = traitAttributeType.GetTypeInfo().CustomAttributes.FirstOrDefault(cad => cad.AttributeType == typeof(TraitDiscovererAttribute));
                if (discovererAttributeData == null)
                {
                    continue;
                }

                var discoverer = ExtensibilityPointFactory.GetTraitDiscoverer(messageSink, Reflector.Wrap(discovererAttributeData));
                if (discoverer == null)
                {
                    continue;
                }

                var traits = discoverer.GetTraits(Reflector.Wrap(traitAttributeData));
                if (traits != null)
                {
                    result.AddRange(traits);
                }
            }

            return(result);
        }
        public ScenarioExpectationDiscovererTests()
        {
            DiagnosticsMessageSink = new NullMessageSink();
            Discoverer             = new TestableScenarioExpectationDiscoverer(DiagnosticsMessageSink);

            ExpectThatAttribute = XunitMocks.ExpectThatAttribute();
            Options             = new TestFrameworkOptions();
        }
Example #5
0
 public MettleTestCase()
 {
     // No way for us to get access to the message sink on the execution deserialization path, but that should
     // be okay, because we assume all the issues were reported during discovery.
     DiagnosticMessageSink = new NullMessageSink();
 }
Example #6
0
        public static bool CanPrintAsNumber(UString textValue, Symbol typeMarker)
        {
            int la0;

            // Check if the typeMarker is potentially acceptable for printing as a number
            // line 26
            if (typeMarker.Name.TryGet(0, '\0') != '_' || !IsNormalIdentifier(typeMarker.Name))
            {
                return(false);
            }
            // line 28
            char firstTMChar = typeMarker.Name.TryGet(1, '\0');

            // line 29
            if (firstTMChar == 'e' || firstTMChar == 'E' || firstTMChar == 'p' || firstTMChar == 'P')
            {
                return(false);
            }

            // Prepare LexerSource needed by LLLPG, and our error counter
            // line 33
            if (src == null)
            {
                src           = new LexerSource <UString>(textValue, "", 0, false);
                src.ErrorSink = msgCounter = new NullMessageSink();
            }
            else
            {
                src.Reset(textValue, "", 0, false);                     // re-use old object
                msgCounter.ResetCountersToZero();
            }

            // Find out whether textValue is in numeric format
            // line 42
            bool isHex = false;

            // Line 44: ([−])?
            do
            {
                la0 = src.LA0;
                if (la0 == '−')
                {
                    src.Skip();
                }
                else if (la0 == -1 || la0 == '.' || la0 >= '0' && la0 <= '9')
                {
                    ;
                }
                else
                {
                    src.Error(0, "In rule 'CanPrintAsNumber', expected one of: [\\$.0-9−]");
                }
            } while (false);
            // Line 45: ( BinNumber / HexNumber / DecNumber )
            la0 = src.LA0;
            if (la0 == '0')
            {
                switch (src.LA(1))
                {
                case 'B':
                case 'b':
                    BinNumber();
                    break;

                case 'X':
                case 'x':
                {
                    HexNumber();
                    // line 46
                    isHex = true;
                }
                break;

                case -1:
                case '\'':
                case '.':
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                case 'E':
                case '_':
                case 'e':
                    DecNumber();
                    break;

                default:
                    src.Error(1, "In rule 'CanPrintAsNumber', expected one of: [\\$'.0-9BEX_bex]");
                    break;
                }
            }
            else if (la0 == '.' || la0 >= '1' && la0 <= '9')
            {
                DecNumber();
            }
            else
            {
                src.Error(0, "In rule 'CanPrintAsNumber', expected one of: [.0-9]");
            }
            src.Match(-1);
            // line 50
            return(msgCounter.ErrorCount == 0 &&
                   !(isHex && (firstTMChar >= 'a' && firstTMChar <= 'f' || firstTMChar >= 'A' && firstTMChar <= 'F')));
        }