Ejemplo n.º 1
0
        /// <summary>
        /// Uses the specified assembly to locate a documentation file alongside the assembly by
        /// changing the extension to ".xml". If the file is found, it will be read and all
        /// found members will contain extended reflection information in the <see cref="Member.Info"/>
        /// property.
        /// </summary>
        /// <param name="assembly">The assembly to read the documentation from.</param>
        /// <param name="documentationFilename">Path to the documentation file.</param>
        /// <returns>All documented members found in the given file, together with the reflection metadata
        /// association from the assembly.</returns>
        /// <exception cref="System.IO.FileNotFoundException">Could not find documentation file to load.</exception>
        public static AssemblyMembers Read(Assembly assembly, string documentationFilename)
        {
            var fileName = documentationFilename;

            if (string.IsNullOrEmpty(fileName))
            {
                fileName = Path.ChangeExtension(assembly.Location, ".xml");
            }

            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException("Could not find documentation file to load. Expected: " + fileName, fileName);
            }

            var doc = XDocument.Load(fileName, LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);
            var map = new MemberIdMap();

            map.Add(assembly);

            return(new AssemblyMembers(assembly, map, doc, doc.Root.Element("members").Elements("member")
                                       .Where(element => element.Attribute("name") != null)
                                       //.OrderBy(e => e.Attribute("name").Value)
                                       .Select(element => CreateMember(element.Attribute("name").Value, element, ReadContent(element)))
                                       .Select(member => ReplaceExtensionMethods(member, map))
                                       .Select(member => ReplaceTypes(member, map))
                                       .Select(member => SetInfo(member, map))));
        }
Ejemplo n.º 2
0
        public void when_mapping_generic_method_on_non_generic_type_then_matches_xml_format()
        {
            var expected = "M:Demo.Sample.Do``1(System.Func{``0})";
            var map = new MemberIdMap();
            map.Add(typeof(Sample));

            var actual = map.FindId(typeof(Sample).GetMethods().Single(m => m.IsGenericMethod));

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 3
0
        public void when_documenting_generic_method_then_sets_info()
        {
            var map = new MemberIdMap();
            map.Add(assembly);
            var typeId = map.FindId(typeof(Sample).GetMethods().Single(m => m.IsGenericMethod));
            var member = DocReader.Read(assembly).Elements.OfType<Method>().Where(c => c.Id == typeId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
        }
Ejemplo n.º 4
0
        public void when_mapping_generic_method_on_generic_type_then_matches_xml_format()
        {
            var expected = "M:Demo.SampleGeneric`2.Do``1(System.Func{`0,`1,``0})";
            var map      = new MemberIdMap();

            map.Add(typeof(SampleGeneric <,>));

            var actual = map.FindId(typeof(SampleGeneric <,>).GetMethods().Single(m => m.IsGenericMethod));

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 5
0
        public void when_mapping_generic_type_then_matches_xml_format()
        {
            var expected = "T:Demo.SampleGeneric`2";
            var map      = new MemberIdMap();

            map.Add(typeof(SampleGeneric <,>));

            var actual = map.FindId(typeof(SampleGeneric <,>));

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 6
0
        public void when_mapping_type_then_can_retrieve_from_ids_or_members()
        {
            var map = new MemberIdMap();

            map.Add(typeof(Sample));

            var id = map.FindId(typeof(Sample));

            Assert.Contains(id, map.Ids);
            Assert.Contains(typeof(Sample), map.Members);
        }
Ejemplo n.º 7
0
        public void when_documenting_generic_method_on_generic_type_then_sets_info()
        {
            var map = new MemberIdMap();

            map.Add(typeof(SampleGeneric <,>));
            var typeId = map.FindId(typeof(SampleGeneric <,>).GetMethods()[0]);
            var member = DocReader.Read(assembly).Elements.OfType <Method>().Where(c => c.Id == typeId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
        }
Ejemplo n.º 8
0
        public void when_reading_provider_then_reads_remarks()
        {
            var map = new MemberIdMap();

            map.Add(assembly);

            var id = map.FindId(typeof(Provider));

            Assert.NotNull(id);

            var member = DocReader.Read(typeof(Provider).Assembly).Elements.OfType <Member>().FirstOrDefault(x => x.Id == id);

            Assert.NotNull(member);

            var element = member.Elements.OfType <Remarks>().FirstOrDefault();

            Assert.NotNull(element);

            var children = element.Elements.ToList();

            Assert.Equal(3, children.Count);

            Assert.IsType <Text>(children[0]);
            Assert.IsType <Example>(children[1]);
            Assert.IsType <List>(children[2]);

            Assert.Equal("Remarks.", ((Text)children[0]).Content);
            Assert.Equal("Example with code:", ((Example)children[1]).Elements.OfType <Text>().First().Content);
            Assert.Equal(@"var code = new Code();
var length = code.Length + 1;", ((Example)children[1]).Elements.OfType <Code>().First().Content);

            Assert.Equal("inline code", ((Example)children[1]).Elements.OfType <Para>().First().Elements.OfType <C>().First().Content);

            Assert.Equal("Term", ((List)children[2])
                         .Elements.OfType <ListHeader>().First()
                         .Elements.OfType <Term>().First().Elements.OfType <Text>().First().Content);
            Assert.Equal("Description", ((List)children[2])
                         .Elements.OfType <ListHeader>().First()
                         .Elements.OfType <Description>().First().Elements.OfType <Text>().First().Content);
            Assert.NotNull(((List)children[2]).Header.Term);
            Assert.NotNull(((List)children[2]).Header.Description);

            Assert.Equal("ItemTerm", ((List)children[2])
                         .Elements.OfType <Item>().First()
                         .Elements.OfType <Term>().First().Elements.OfType <Text>().First().Content);

            Assert.NotNull(((List)children[2]).Items.First().Term);
            Assert.NotNull(((List)children[2]).Items.First().Description);

            Assert.Equal("ItemDescription", ((List)children[2])
                         .Elements.OfType <Item>().First()
                         .Elements.OfType <Description>().First().Elements.OfType <Text>().First().Content);
        }
Ejemplo n.º 9
0
        public void when_parsing_empty_code_then_removes_empty_text()
        {
            var map = new MemberIdMap();

            map.Add(typeof(IProvider));
            var typeId = map.FindId(typeof(IProvider));
            var member = DocReader.Read(assembly).Elements.OfType <Interface>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType <Remarks>().Single().Elements.OfType <Code>().Single();

            Assert.Equal(0, element.Content.Length);
        }
Ejemplo n.º 10
0
        public void when_parsing_property_then_reads_value_tag()
        {
            var map = new MemberIdMap();

            map.Add(typeof(Sample));
            var typeId = map.FindId(typeof(Sample).GetProperties()[0]);
            var member = DocReader.Read(assembly).Elements.OfType <Property>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType <Value>().Single();

            Assert.Equal("The id of this sample.", element.ToText());
        }
Ejemplo n.º 11
0
        public void when_parsing_empty_summary_then_removes_empty_text()
        {
            var map = new MemberIdMap();

            map.Add(typeof(Provider));
            var typeId = map.FindId(typeof(Provider));
            var member = DocReader.Read(assembly).Elements.OfType <Class>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType <Summary>().Single();

            Assert.Empty(element.ToText());
        }
Ejemplo n.º 12
0
        public void when_parsing_unknown_element_then_reads_inner_content()
        {
            var map = new MemberIdMap();

            map.Add(typeof(IProvider));
            var typeId = map.FindId(typeof(IProvider));
            var member = DocReader.Read(assembly).Elements.OfType <TypeDeclaration>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType <Summary>().Single();

            Assert.True(element.Elements.OfType <UnknownElement>().Any());
            Assert.True(element.Elements.OfType <UnknownElement>().Single().Elements.OfType <Text>().Any());
        }
Ejemplo n.º 13
0
        public void when_rendering_see_then_renders_cref()
        {
            var map = new MemberIdMap();

            map.Add(typeof(SampleExtensions));
            var id = map.FindId(typeof(SampleExtensions));

            var member = DocReader.Read(typeof(SampleExtensions).Assembly).Elements.OfType <Class>().Single(x => x.Id == id);

            var actual   = member.Elements.OfType <Summary>().First().ToText();
            var expected = "Extension class for Demo.Sample.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 14
0
        public void when_documenting_generic_type_then_can_match_with_mapper()
        {
            var map = new MemberIdMap();
            map.Add(assembly);
            var typeId = map.FindId(typeof(SampleGeneric<,>));

            var member = DocReader.Read(assembly).Elements.OfType<Class>().Where(c => c.Id == typeId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(SampleGeneric<,>), member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Class));
            Assert.True(member.Kind.HasFlag(MemberKinds.Type));
        }
Ejemplo n.º 15
0
        public void when_reading_from_assembly_then_provides_event_info()
        {
            var map = new MemberIdMap();

            map.Add(assembly);
            var providerId = map.FindId(typeof(Provider));

            var member = DocReader.Read(assembly).Elements.OfType <Event>().FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(Provider).GetEvents()[0], member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Event));
        }
Ejemplo n.º 16
0
        public void when_reading_from_assembly_then_provides_nested_type_info()
        {
            var map = new MemberIdMap();

            map.Add(assembly);
            var providerId = map.FindId(typeof(Sample.NestedType));

            var member = DocReader.Read(assembly).Elements.OfType <TypeDeclaration>().Where(c => c.Id == providerId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(Sample.NestedType), member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Type));
        }
Ejemplo n.º 17
0
        public void when_rendering_paramref_then_renders_param_name()
        {
            var map = new MemberIdMap();

            map.Add(typeof(Sample));
            var id = map.FindId(typeof(Sample).GetMethod("GetValue"));

            var member = DocReader.Read(typeof(SampleStruct).Assembly).Elements.OfType <Method>().Single(x => x.Id == id);

            var actual   = member.Elements.OfType <Summary>().First().ToText();
            var expected = "Gets the value for the given id.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 18
0
        public void when_rendering_c_then_renders_text()
        {
            var map = new MemberIdMap();

            map.Add(typeof(SampleStruct));
            var id = map.FindId(typeof(SampleStruct));

            var member = DocReader.Read(typeof(SampleStruct).Assembly).Elements.OfType <Struct>().Single(x => x.Id == id);

            var actual   = member.Elements.OfType <Summary>().First().ToText();
            var expected = "Sample struct.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 19
0
        public void when_rendering_typeparamref_then_renders_type_param_name()
        {
            var map = new MemberIdMap();

            map.Add(typeof(SampleGeneric <,>));
            var id = map.FindId(typeof(SampleGeneric <,>));

            var member = DocReader.Read(typeof(Sample).Assembly).Elements.OfType <Class>().Single(x => x.Id == id);

            var actual   = member.Elements.OfType <Summary>().First().ToText();
            var expected = "Sample with generic type T.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 20
0
        public void when_reading_from_assembly_then_provides_struct_info()
        {
            var map = new MemberIdMap();

            map.Add(assembly);
            var typeId = map.FindId(typeof(SampleStruct));

            var member = DocReader.Read(assembly).Elements.OfType <Struct>().Where(c => c.Id == typeId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(SampleStruct), member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Struct));
            Assert.True(member.Kind.HasFlag(MemberKinds.Type));
        }
Ejemplo n.º 21
0
        public void when_documenting_generic_type_then_can_match_with_mapper()
        {
            var map = new MemberIdMap();

            map.Add(assembly);
            var typeId = map.FindId(typeof(SampleGeneric <,>));

            var member = DocReader.Read(assembly).Elements.OfType <Class>().Where(c => c.Id == typeId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(SampleGeneric <,>), member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Class));
            Assert.True(member.Kind.HasFlag(MemberKinds.Type));
        }
Ejemplo n.º 22
0
        public void when_rendering_code_then_renders_text()
        {
            var map = new MemberIdMap();
            map.Add(typeof(SampleStruct));
            var id = map.FindId(typeof(SampleStruct));

            var member = DocReader.Read(typeof(SampleStruct).Assembly).Elements.OfType<Struct>().Single(x => x.Id == id);

            var actual = member.Elements.OfType<Remarks>().First().ToText();
            var expected = @"Code:
            var code = new Code();
            var new = code.New();
            cool!";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 23
0
        public void when_rendering_paragraph_then_renders_wrapping_new_lines()
        {
            var map = new MemberIdMap();

            map.Add(typeof(ProviderType));
            var id = map.FindId(typeof(ProviderType));

            var member = DocReader.Read(typeof(ProviderType).Assembly).Elements.OfType <Enum>().Single(x => x.Id == id);

            var actual   = member.Elements.OfType <Summary>().First().ToText();
            var expected = @"The type of provider.
With a paragraph
Or two.
And then some.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 24
0
        public void when_rendering_code_then_renders_text()
        {
            var map = new MemberIdMap();

            map.Add(typeof(SampleStruct));
            var id = map.FindId(typeof(SampleStruct));

            var member = DocReader.Read(typeof(SampleStruct).Assembly).Elements.OfType <Struct>().Single(x => x.Id == id);

            var actual   = member.Elements.OfType <Remarks>().First().ToText();
            var expected = @"Code:
var code = new Code();
var new = code.New();
cool!";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 25
0
        public void when_documenting_method_then_parses_type_param_and_ref()
        {
            var map = new MemberIdMap();

            map.Add(typeof(SampleGeneric <,>));
            var typeId = map.FindId(typeof(SampleGeneric <,>).GetMethods()[0]);
            var member = DocReader.Read(assembly).Elements.OfType <Method>().Where(c => c.Id == typeId).Single();

            var paramRef = member.Elements.OfType <Summary>().Single().Elements.OfType <ParamRef>().FirstOrDefault();

            Assert.NotNull(paramRef);
            Assert.Equal("func", paramRef.Name);

            var param = member.Elements.OfType <Param>().FirstOrDefault();

            Assert.NotNull(param);
            Assert.Equal("func", param.Name);
        }
Ejemplo n.º 26
0
        public void when_reading_provider_then_reads_exception()
        {
            var map = new MemberIdMap();

            map.Add(assembly);

            var providerId = map.FindId(typeof(Provider));

            Assert.NotNull(providerId);

            var member = DocReader.Read(typeof(Provider).Assembly).Elements.OfType <Member>().FirstOrDefault(x => x.Id == providerId);

            Assert.NotNull(member);

            var element = member.Elements.OfType <Exception>().FirstOrDefault();

            Assert.NotNull(element);
            Assert.Equal(providerId, element.Cref);
        }
Ejemplo n.º 27
0
        public void when_adding_assembly_then_adds_all_ids_from_used_types()
        {
            var map = new MemberIdMap();
            map.Add(typeof(Sample).Assembly);

            Assert.NotNull(map.FindId(typeof(Provider)));
            Assert.NotNull(map.FindId(typeof(Provider).GetConstructors()[0]));
            Assert.NotNull(map.FindId(typeof(SampleExtensions)));
            Assert.NotNull(map.FindId(Reflect.GetMethod(() => SampleExtensions.Do(null))));

            Assert.NotNull(map.FindId(typeof(Sample)));
            Assert.NotNull(map.FindId(typeof(Sample).GetConstructors()[0]));
            Assert.NotNull(map.FindId(Reflect<Sample>.GetMethod(x => x.GetValue(0))));
            Assert.NotNull(map.FindId(Reflect<Sample>.GetProperty(x => x.Id)));

            Assert.NotNull(map.FindId(typeof(Sample.NestedType)));
            Assert.NotNull(map.FindId(typeof(Sample.NestedType).GetConstructors()[0]));
            Assert.NotNull(map.FindId(Reflect<Sample.NestedType>.GetProperty(x => x.NestedTypeProperty)));
            Assert.NotNull(map.FindId(typeof(Sample).GetNestedTypes(BindingFlags.NonPublic).Single()));
        }
Ejemplo n.º 28
0
        public void when_adding_assembly_then_adds_all_ids_from_used_types()
        {
            var map = new MemberIdMap();

            map.Add(typeof(Sample).Assembly);

            Assert.NotNull(map.FindId(typeof(Provider)));
            Assert.NotNull(map.FindId(typeof(Provider).GetConstructors()[0]));
            Assert.NotNull(map.FindId(typeof(SampleExtensions)));
            Assert.NotNull(map.FindId(Reflect.GetMethod(() => SampleExtensions.Do(null))));

            Assert.NotNull(map.FindId(typeof(Sample)));
            Assert.NotNull(map.FindId(typeof(Sample).GetConstructors()[0]));
            Assert.NotNull(map.FindId(Reflect <Sample> .GetMethod(x => x.GetValue(0))));
            Assert.NotNull(map.FindId(Reflect <Sample> .GetProperty(x => x.Id)));

            Assert.NotNull(map.FindId(typeof(Sample.NestedType)));
            Assert.NotNull(map.FindId(typeof(Sample.NestedType).GetConstructors()[0]));
            Assert.NotNull(map.FindId(Reflect <Sample.NestedType> .GetProperty(x => x.NestedTypeProperty)));
            Assert.NotNull(map.FindId(typeof(Sample).GetNestedTypes(BindingFlags.NonPublic).Single()));
        }
Ejemplo n.º 29
0
        public void when_reading_provider_type_then_reads_summary()
        {
            var map = new MemberIdMap();

            map.Add(assembly);

            var id = map.FindId(typeof(ProviderType));

            Assert.NotNull(id);

            var member = DocReader.Read(typeof(ProviderType).Assembly).Elements.OfType <Member>().FirstOrDefault(x => x.Id == id);

            Assert.NotNull(member);

            var element = member.Elements.OfType <Summary>().FirstOrDefault();

            Assert.NotNull(element);
            Assert.Equal(4, element.Elements.Count());
            Assert.True(element.Elements.OfType <Text>().Any());
            Assert.Equal("The type of provider.", element.Elements.OfType <Text>().First().Content);
            Assert.Equal("And then some.", element.Elements.OfType <Text>().Last().Content);
        }
Ejemplo n.º 30
0
        public void when_rendering_paramref_then_renders_param_name()
        {
            var map = new MemberIdMap();
            map.Add(typeof(Sample));
            var id = map.FindId(typeof(Sample).GetMethod("GetValue"));

            var member = DocReader.Read(typeof(SampleStruct).Assembly).Elements.OfType<Method>().Single(x => x.Id == id);

            var actual = member.Elements.OfType<Summary>().First().ToText();
            var expected = "Gets the value for the given id.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 31
0
        public void when_parsing_unknown_element_then_reads_inner_content()
        {
            var map = new MemberIdMap();
            map.Add(typeof(IProvider));
            var typeId = map.FindId(typeof(IProvider));
            var member = DocReader.Read(assembly).Elements.OfType<TypeDeclaration>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType<Summary>().Single();

            Assert.True(element.Elements.OfType<UnknownElement>().Any());
            Assert.True(element.Elements.OfType<UnknownElement>().Single().Elements.OfType<Text>().Any());
        }
Ejemplo n.º 32
0
        public void when_rendering_typeparamref_then_renders_type_param_name()
        {
            var map = new MemberIdMap();
            map.Add(typeof(SampleGeneric<,>));
            var id = map.FindId(typeof(SampleGeneric<,>));

            var member = DocReader.Read(typeof(Sample).Assembly).Elements.OfType<Class>().Single(x => x.Id == id);

            var actual = member.Elements.OfType<Summary>().First().ToText();
            var expected = "Sample with generic type T.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 33
0
        public void when_rendering_see_then_renders_cref()
        {
            var map = new MemberIdMap();
            map.Add(typeof(SampleExtensions));
            var id = map.FindId(typeof(SampleExtensions));

            var member = DocReader.Read(typeof(SampleExtensions).Assembly).Elements.OfType<Class>().Single(x => x.Id == id);

            var actual = member.Elements.OfType<Summary>().First().ToText();
            var expected = "Extension class for Demo.Sample.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 34
0
        public void when_rendering_paragram_then_renders_wrapping_new_lines()
        {
            var map = new MemberIdMap();
            map.Add(typeof(ProviderType));
            var id = map.FindId(typeof(ProviderType));

            var member = DocReader.Read(typeof(ProviderType).Assembly).Elements.OfType<Enum>().Single(x => x.Id == id);

            var actual = member.Elements.OfType<Summary>().First().ToText();
            var expected = @"The type of provider.
            With a paragraph
            Or two.
            And then some.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 35
0
        public void when_rendering_c_then_renders_text()
        {
            var map = new MemberIdMap();
            map.Add(typeof(SampleStruct));
            var id = map.FindId(typeof(SampleStruct));

            var member = DocReader.Read(typeof(SampleStruct).Assembly).Elements.OfType<Struct>().Single(x => x.Id == id);

            var actual = member.Elements.OfType<Summary>().First().ToText();
            var expected = "Sample struct.";

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 36
0
        public void when_documenting_generic_type_then_parses_type_param_and_ref()
        {
            var map = new MemberIdMap();
            map.Add(assembly);
            var typeId = map.FindId(typeof(SampleGeneric<,>));
            var member = DocReader.Read(assembly).Elements.OfType<Class>().Where(c => c.Id == typeId).Single();

            var paramRef = member.Elements.OfType<Summary>().Single().Elements.OfType<TypeParamRef>().FirstOrDefault();

            Assert.NotNull(paramRef);
            Assert.Equal("T", paramRef.Name);

            var param = member.Elements.OfType<TypeParam>().FirstOrDefault();

            Assert.NotNull(param);
            Assert.Equal("T", param.Name);
        }
Ejemplo n.º 37
0
        public void when_reading_from_assembly_then_provides_struct_info()
        {
            var map = new MemberIdMap();
            map.Add(assembly);
            var typeId = map.FindId(typeof(SampleStruct));

            var member = DocReader.Read(assembly).Elements.OfType<Struct>().Where(c => c.Id == typeId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(SampleStruct), member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Struct));
            Assert.True(member.Kind.HasFlag(MemberKinds.Type));
        }
Ejemplo n.º 38
0
        public void when_mapping_generic_type_then_matches_xml_format()
        {
            var expected = "T:Demo.SampleGeneric`2";
            var map = new MemberIdMap();
            map.Add(typeof(SampleGeneric<,>));

            var actual = map.FindId(typeof(SampleGeneric<,>));

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 39
0
        public void when_parsing_empty_summary_then_removes_empty_text()
        {
            var map = new MemberIdMap();
            map.Add(typeof(Provider));
            var typeId = map.FindId(typeof(Provider));
            var member = DocReader.Read(assembly).Elements.OfType<Class>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType<Summary>().Single();
            Assert.Empty(element.ToText());
        }
Ejemplo n.º 40
0
        public void when_reading_provider_type_then_reads_summary()
        {
            var map = new MemberIdMap();
            map.Add(assembly);

            var id = map.FindId(typeof(ProviderType));
            Assert.NotNull(id);

            var member = DocReader.Read(typeof(ProviderType).Assembly).Elements.OfType<Member>().FirstOrDefault(x => x.Id == id);
            Assert.NotNull(member);

            var element = member.Elements.OfType<Summary>().FirstOrDefault();

            Assert.NotNull(element);
            Assert.Equal(4, element.Elements.Count());
            Assert.True(element.Elements.OfType<Text>().Any());
            Assert.Equal("The type of provider.", element.Elements.OfType<Text>().First().Content);
            Assert.Equal("And then some.", element.Elements.OfType<Text>().Last().Content);
        }
Ejemplo n.º 41
0
        public void when_reading_provider_then_reads_seealso()
        {
            var map = new MemberIdMap();
            map.Add(assembly);

            var providerId = map.FindId(typeof(Provider));
            Assert.NotNull(providerId);

            var member = DocReader.Read(typeof(Provider).Assembly).Elements.OfType<Member>().FirstOrDefault(x => x.Id == providerId);
            Assert.NotNull(member);

            var element = member.Elements.OfType<SeeAlso>().FirstOrDefault();

            Assert.NotNull(element);
            Assert.Equal(providerId, element.Cref);
        }
Ejemplo n.º 42
0
        public void when_reading_provider_then_reads_remarks()
        {
            var map = new MemberIdMap();
            map.Add(assembly);

            var id = map.FindId(typeof(Provider));
            Assert.NotNull(id);

            var member = DocReader.Read(typeof(Provider).Assembly).Elements.OfType<Member>().FirstOrDefault(x => x.Id == id);
            Assert.NotNull(member);

            var element = member.Elements.OfType<Remarks>().FirstOrDefault();

            Assert.NotNull(element);

            var children = element.Elements.ToList();
            Assert.Equal(3, children.Count);

            Assert.IsType<Text>(children[0]);
            Assert.IsType<Example>(children[1]);
            Assert.IsType<List>(children[2]);

            Assert.Equal("Remarks.", ((Text)children[0]).Content);
            Assert.Equal("Example with code:", ((Example)children[1]).Elements.OfType<Text>().First().Content);
            Assert.Equal(@"var code = new Code();
            var length = code.Length + 1;", ((Example)children[1]).Elements.OfType<Code>().First().Content);

            Assert.Equal("inline code", ((Example)children[1]).Elements.OfType<Para>().First().Elements.OfType<C>().First().Content);

            Assert.Equal("Term", ((List)children[2])
                .Elements.OfType<ListHeader>().First()
                .Elements.OfType<Term>().First().Elements.OfType<Text>().First().Content);
            Assert.Equal("Description", ((List)children[2])
                .Elements.OfType<ListHeader>().First()
                .Elements.OfType<Description>().First().Elements.OfType<Text>().First().Content);
            Assert.NotNull(((List)children[2]).Header.Term);
            Assert.NotNull(((List)children[2]).Header.Description);

            Assert.Equal("ItemTerm", ((List)children[2])
                .Elements.OfType<Item>().First()
                .Elements.OfType<Term>().First().Elements.OfType<Text>().First().Content);

            Assert.NotNull(((List)children[2]).Items.First().Term);
            Assert.NotNull(((List)children[2]).Items.First().Description);

            Assert.Equal("ItemDescription", ((List)children[2])
                .Elements.OfType<Item>().First()
                .Elements.OfType<Description>().First().Elements.OfType<Text>().First().Content);
        }
Ejemplo n.º 43
0
        public void when_parsing_property_then_reads_value_tag()
        {
            var map = new MemberIdMap();
            map.Add(typeof(Sample));
            var typeId = map.FindId(typeof(Sample).GetProperties()[0]);
            var member = DocReader.Read(assembly).Elements.OfType<Property>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType<Value>().Single();
            Assert.Equal("The id of this sample.", element.ToText());
        }
Ejemplo n.º 44
0
        public void when_reading_from_assembly_then_provides_event_info()
        {
            var map = new MemberIdMap();
            map.Add(assembly);
            var providerId = map.FindId(typeof(Provider));

            var member = DocReader.Read(assembly).Elements.OfType<Event>().FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(Provider).GetEvents()[0], member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Event));
        }
Ejemplo n.º 45
0
        public void when_mapping_type_then_can_retrieve_from_ids_or_members()
        {
            var map = new MemberIdMap();
            map.Add(typeof(Sample));

            var id = map.FindId(typeof(Sample));

            Assert.True(map.Ids.Contains(id));
            Assert.True(map.Members.Contains(typeof(Sample)));
        }
Ejemplo n.º 46
0
        public void when_reading_from_assembly_then_provides_nested_type_info()
        {
            var map = new MemberIdMap();
            map.Add(assembly);
            var providerId = map.FindId(typeof(Sample.NestedType));

            var member = DocReader.Read(assembly).Elements.OfType<TypeDeclaration>().Where(c => c.Id == providerId).FirstOrDefault();

            Assert.NotNull(member);
            Assert.NotNull(member.Info);
            Assert.Same(typeof(Sample.NestedType), member.Info);
            Assert.True(member.Kind.HasFlag(MemberKinds.Type));
        }
Ejemplo n.º 47
0
        public void when_parsing_empty_code_then_removes_empty_text()
        {
            var map = new MemberIdMap();
            map.Add(typeof(IProvider));
            var typeId = map.FindId(typeof(IProvider));
            var member = DocReader.Read(assembly).Elements.OfType<Interface>().Where(c => c.Id == typeId).Single();

            var element = member.Elements.OfType<Remarks>().Single().Elements.OfType<Code>().Single();
            Assert.Equal(0, element.Content.Length);
        }
Ejemplo n.º 48
0
        /// <summary>
        /// Uses the specified assembly to locate a documentation file alongside the assembly by 
        /// changing the extension to ".xml". If the file is found, it will be read and all 
        /// found members will contain extended reflection information in the <see cref="Member.Info"/> 
        /// property.
        /// </summary>
        /// <param name="assembly">The assembly to read the documentation from.</param>
        /// <param name="documentationFilename">Path to the documentation file.</param>
        /// <returns>All documented members found in the given file, together with the reflection metadata 
        /// association from the assembly.</returns>
        /// <exception cref="System.IO.FileNotFoundException">Could not find documentation file to load.</exception>
        public static AssemblyMembers Read(Assembly assembly, string documentationFilename)
        {
            var fileName = documentationFilename;

            if (string.IsNullOrEmpty(fileName))
                fileName = Path.ChangeExtension(assembly.Location, ".xml");

            if (!File.Exists(fileName))
                throw new FileNotFoundException("Could not find documentation file to load. Expected: " + fileName, fileName);

            var doc = XDocument.Load(fileName, LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);
            var map = new MemberIdMap();
            map.Add(assembly);

            return new AssemblyMembers(assembly, map, doc, doc.Root.Element("members").Elements("member")
                .Where(element => element.Attribute("name") != null)
                //.OrderBy(e => e.Attribute("name").Value)
                .Select(element => CreateMember(element.Attribute("name").Value, element, ReadContent(element)))
                .Select(member => ReplaceExtensionMethods(member, map))
                .Select(member => ReplaceTypes(member, map))
                .Select(member => SetInfo(member, map)));
        }