< Summary

Line coverage
100%
Covered lines: 59
Uncovered lines: 0
Coverable lines: 59
Total lines: 135
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
get_HeaderText()100%11100%
get_Vertices()100%11100%
get_ParameterSpaceVertices()100%11100%
get_VertexNormals()100%11100%
get_TextureVertices()100%11100%
get_Points()100%11100%
get_Lines()100%11100%
get_Faces()100%11100%
get_Curves()100%11100%
get_Curves2D()100%11100%
get_Surfaces()100%11100%
get_SurfaceConnections()100%11100%
get_DefaultGroup()100%11100%
get_Groups()100%11100%
get_MergingGroupResolutions()100%11100%
get_MapLibraries()100%11100%
get_MaterialLibraries()100%11100%
get_ShadowObjectFileName()100%11100%
get_TraceObjectFileName()100%11100%
FromFile(...)100%11100%
FromFile(...)100%22100%
FromStream(...)100%11100%
FromStream(...)100%11100%
FromStream(...)100%11100%
WriteTo(...)100%22100%
WriteTo(...)100%22100%

File(s)

https://raw.githubusercontent.com/JeremyAnsel/JeremyAnsel.Media.WavefrontObj/7b5b951766c69f14731a856f32198cdbf1fc6847/JeremyAnsel.Media.WavefrontObj/JeremyAnsel.Media.WavefrontObj/ObjFile.cs

#LineLine coverage
 1// <copyright file="ObjFile.cs" company="Jérémy Ansel">
 2// Copyright (c) 2017, 2019 Jérémy Ansel
 3// </copyright>
 4// <license>
 5// Licensed under the MIT license. See LICENSE.txt
 6// </license>
 7
 8using System.Text;
 9
 10namespace JeremyAnsel.Media.WavefrontObj
 11{
 12    public class ObjFile
 13    {
 143614        public ObjFile()
 15        {
 143616            this.Vertices = new List<ObjVertex>();
 143617            this.ParameterSpaceVertices = new List<ObjVector3>();
 143618            this.VertexNormals = new List<ObjVector3>();
 143619            this.TextureVertices = new List<ObjVector3>();
 143620            this.Points = new List<ObjPoint>();
 143621            this.Lines = new List<ObjLine>();
 143622            this.Faces = new List<ObjFace>();
 143623            this.Curves = new List<ObjCurve>();
 143624            this.Curves2D = new List<ObjCurve2D>();
 143625            this.Surfaces = new List<ObjSurface>();
 143626            this.SurfaceConnections = new List<ObjSurfaceConnection>();
 143627            this.DefaultGroup = new ObjGroup();
 143628            this.Groups = new List<ObjGroup>();
 143629            this.MergingGroupResolutions = new Dictionary<int, float>();
 143630            this.MapLibraries = new List<string>();
 143631            this.MaterialLibraries = new List<string>();
 143632        }
 33
 76834        public string? HeaderText { get; set; }
 35
 316436        public List<ObjVertex> Vertices { get; private set; }
 37
 248838        public List<ObjVector3> ParameterSpaceVertices { get; private set; }
 39
 178440        public List<ObjVector3> VertexNormals { get; private set; }
 41
 181242        public List<ObjVector3> TextureVertices { get; private set; }
 43
 208844        public List<ObjPoint> Points { get; private set; }
 45
 181646        public List<ObjLine> Lines { get; private set; }
 47
 193648        public List<ObjFace> Faces { get; private set; }
 49
 238450        public List<ObjCurve> Curves { get; private set; }
 51
 213252        public List<ObjCurve2D> Curves2D { get; private set; }
 53
 198854        public List<ObjSurface> Surfaces { get; private set; }
 55
 176856        public List<ObjSurfaceConnection> SurfaceConnections { get; private set; }
 57
 204458        public ObjGroup DefaultGroup { get; private set; }
 59
 218460        public List<ObjGroup> Groups { get; private set; }
 61
 149262        public Dictionary<int, float> MergingGroupResolutions { get; private set; }
 63
 175664        public List<string> MapLibraries { get; private set; }
 65
 179666        public List<string> MaterialLibraries { get; private set; }
 67
 35268        public string? ShadowObjectFileName { get; set; }
 69
 32070        public string? TraceObjectFileName { get; set; }
 71
 72        public static ObjFile FromFile(string? path)
 73        {
 874            return FromFile(path, ObjFileReaderSettings.Default);
 75        }
 76
 77        public static ObjFile FromFile(string? path, ObjFileReaderSettings settings)
 78        {
 879            if (path == null)
 80            {
 481                throw new ArgumentNullException(nameof(path));
 82            }
 83
 484            using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
 85            {
 86#if NET6_0_OR_GREATER
 387                return ObjFileReader9.FromStream(stream, settings);
 88#else
 189                return ObjFileReader.FromStream(stream, settings);
 90#endif
 91            }
 492        }
 93
 94        public static ObjFile FromStream(Stream? stream)
 95        {
 3296            return FromStream(stream, ObjFileReaderSettings.Default);
 97        }
 98
 99        public static ObjFile FromStream(Stream? stream, ObjFileReaderSettings settings)
 100        {
 101#if NET6_0_OR_GREATER
 855102            return ObjFileReader9.FromStream(stream, settings);
 103#else
 285104            return ObjFileReader.FromStream(stream, settings);
 105#endif
 106        }
 107
 108        public void WriteTo(string? path)
 109        {
 8110            if (path == null)
 111            {
 4112                throw new ArgumentNullException(nameof(path));
 113            }
 114
 4115            using (var writer = new StreamWriter(path))
 116            {
 4117                ObjFileWriter.Write(this, writer);
 4118            }
 4119        }
 120
 121        public void WriteTo(Stream? stream)
 122        {
 288123            if (stream == null)
 124            {
 4125                throw new ArgumentNullException(nameof(stream));
 126            }
 127
 284128            using (var writer = new StreamWriter(stream, new UTF8Encoding(false, true), 1024, true))
 129            {
 284130                ObjFileWriter.Write(this, writer);
 284131            }
 284132        }
 133    }
 134}
 135