示例#1
0
        private SampleGroup LoadCategory(SampleSuite suite, string category, string prefix, string fileSourceCode)
        {
            SampleGroup categoryGroup = new SampleGroup(suite, category, null);
            Type        suiteType     = suite.GetType();

            MethodInfo[]      methodsInCategoryArray = suiteType.GetMethods();
            List <MethodInfo> methodsInCategory      = new List <MethodInfo>();

            foreach (MethodInfo c in methodsInCategoryArray)
            {
                if (c.Name.StartsWith(prefix) == true)
                {
                    CategoryAttribute[] attributes = (CategoryAttribute[])c.GetCustomAttributes(typeof(CategoryAttribute), false);
                    if (attributes.Length > 0 && attributes[0].Category == category)
                    {
                        methodsInCategory.Add(c);
                    }
                }
            }

            foreach (MethodInfo mi in methodsInCategory)
            {
                categoryGroup.Children.Add(LoadSample(suite, mi, fileSourceCode));
            }
            return(categoryGroup);
        }
示例#2
0
        private Sample LoadSample(SampleSuite suite, MethodInfo method, string fileSourceCode)
        {
            DescriptionAttribute descriptionAttribute = (DescriptionAttribute)Attribute.GetCustomAttribute(method, typeof(DescriptionAttribute));
            TitleAttribute       titleAttribute       = (TitleAttribute)Attribute.GetCustomAttribute(method, typeof(TitleAttribute));

            return(new Sample(suite, method, (titleAttribute != null) ? titleAttribute.Title : "", (descriptionAttribute != null) ? descriptionAttribute.Description : "", CodeExtractor.GetCodeBlock(fileSourceCode, "void " + method.Name)));
        }
示例#3
0
        public SampleGroup Load(SampleSuite suite)
        {
            Type suiteType = suite.GetType();

            // get attributes attached to suite
            var descriptionAttribute = (DescriptionAttribute)Attribute.GetCustomAttribute(suiteType, typeof(DescriptionAttribute));
            var titleAttribute       = (TitleAttribute)Attribute.GetCustomAttribute(suiteType, typeof(TitleAttribute));
            var prefixAttribute      = (PrefixAttribute)Attribute.GetCustomAttribute(suiteType, typeof(PrefixAttribute));

            if (prefixAttribute == null)
            {
                throw new InvalidOperationException("[Prefix] attribute not specified on " + suiteType.Name);
            }
            string prefix = prefixAttribute.Prefix;

            SampleGroup suiteGroup = new SampleGroup(suite, (titleAttribute != null) ? titleAttribute.Title : "", (descriptionAttribute != null) ? descriptionAttribute.Description : "");
            string      sourceFile = FindSourceFile(suiteType.Name + ".cs");
            string      sourceCode = (sourceFile != null) ? File.ReadAllText(sourceFile) : "";

            var categories = suiteType.GetMethods()
                             .Where(c => c.Name.ToLower().StartsWith(prefix.ToLower()))
                             .Select(c => new { Attributes = (CategoryAttribute[])c.GetCustomAttributes(typeof(CategoryAttribute), false) })
                             .Where(c => c.Attributes.Length > 0)
                             .Select(c => c.Attributes.First().Category)
                             .Distinct();

            foreach (var cat in categories)
            {
                suiteGroup.Children.Add(LoadCategory(suite, cat, prefix, sourceCode));
            }

            return(suiteGroup);
        }
示例#4
0
 protected SampleBase(
     SampleSuite sampleSuite,
     string title,
     string description)
 {
     this._title       = title;
     this._description = description;
     this._sampleSuite = sampleSuite;
 }
示例#5
0
 public Sample(
     SampleSuite sampleSuite,
     MethodInfo method,
     string title,
     string description,
     string sourceCode) : base(sampleSuite, title, description)
 {
     this._method     = method;
     this._sourceCode = sourceCode;
 }
示例#6
0
        public void TestPrintPassFailSummary()
        {
            SampleEpicSuite epicSuite = new SampleEpicSuite();

            epicSuite.PrintPassFailSummary();
            epicSuite.CleanUp();
            SampleSuite sampleSuite = new SampleSuite();

            sampleSuite.PrintPassFailSummary();
            sampleSuite.CleanUp();
        }
示例#7
0
        public SampleGroup Load(SampleSuite suite)
        {
            Type suiteType = suite.GetType();

            // get attributes attached to suite
            DescriptionAttribute descriptionAttribute = (DescriptionAttribute)Attribute.GetCustomAttribute(suiteType, typeof(DescriptionAttribute));
            TitleAttribute       titleAttribute       = (TitleAttribute)Attribute.GetCustomAttribute(suiteType, typeof(TitleAttribute));
            PrefixAttribute      prefixAttribute      = (PrefixAttribute)Attribute.GetCustomAttribute(suiteType, typeof(PrefixAttribute));

            if (prefixAttribute == null)
            {
                throw new InvalidOperationException("[Prefix] attribute not specified on " + suiteType.Name);
            }
            string prefix = prefixAttribute.Prefix;

            SampleGroup suiteGroup = new SampleGroup(suite, (titleAttribute != null) ? titleAttribute.Title : "", (descriptionAttribute != null) ? descriptionAttribute.Description : "");
            string      sourceFile = FindSourceFile(suiteType.Name + ".cs");
            string      sourceCode = (sourceFile != null) ? File.ReadAllText(sourceFile) : "";

            MethodInfo[]  categoriesObj = suiteType.GetMethods();
            List <string> categories    = new List <string>();

            foreach (MethodInfo c in categoriesObj)
            {
                if (c.Name.StartsWith(prefix) == true)
                {
                    CategoryAttribute[] attributes = (CategoryAttribute[])c.GetCustomAttributes(typeof(CategoryAttribute), false);
                    if (attributes.Length > 0)
                    {
                        if (categories.Contains(attributes[0].Category) == false)
                        {
                            categories.Add(attributes[0].Category);
                        }
                    }
                }
            }

            foreach (string cat in categories)
            {
                suiteGroup.Children.Add(LoadCategory(suite, cat, prefix, sourceCode));
            }

            return(suiteGroup);
        }
示例#8
0
        private SampleGroup LoadCategory(SampleSuite suite, string category, string prefix, string fileSourceCode)
        {
            SampleGroup categoryGroup = new SampleGroup(suite, category, null);
            Type        suiteType     = suite.GetType();

            IEnumerable <MethodInfo> methodsInCategory =
                suiteType.GetMethods()
                .Where(c => c.Name.ToLower().StartsWith(prefix.ToLower()))
                .OrderBy(c => c.Name)
                .Select(c => new { Method = c, Attributes = (CategoryAttribute[])c.GetCustomAttributes(typeof(CategoryAttribute), false) })
                .Where(c => c.Attributes.Length > 0 && c.Attributes[0].Category == category)
                .Select(c => c.Method);

            foreach (MethodInfo mi in methodsInCategory)
            {
                categoryGroup.Children.Add(LoadSample(suite, mi, fileSourceCode));
            }
            return(categoryGroup);
        }
 public SampleGroup(SampleSuite sampleSuite, string title, string description)
     : base(sampleSuite, title, description)
 {
 }
 protected SampleBase(SampleSuite sampleSuite, string title, string description)
 {
     _title       = title;
     _description = description;
     _sampleSuite = sampleSuite;
 }