< 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/636b700b450d7d3262bf9218a7cc67966be4ced8/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    {
 142014        public ObjFile()
 15        {
 142016            this.Vertices = new List<ObjVertex>();
 142017            this.ParameterSpaceVertices = new List<ObjVector3>();
 142018            this.VertexNormals = new List<ObjVector3>();
 142019            this.TextureVertices = new List<ObjVector3>();
 142020            this.Points = new List<ObjPoint>();
 142021            this.Lines = new List<ObjLine>();
 142022            this.Faces = new List<ObjFace>();
 142023            this.Curves = new List<ObjCurve>();
 142024            this.Curves2D = new List<ObjCurve2D>();
 142025            this.Surfaces = new List<ObjSurface>();
 142026            this.SurfaceConnections = new List<ObjSurfaceConnection>();
 142027            this.DefaultGroup = new ObjGroup();
 142028            this.Groups = new List<ObjGroup>();
 142029            this.MergingGroupResolutions = new Dictionary<int, float>();
 142030            this.MapLibraries = new List<string>();
 142031            this.MaterialLibraries = new List<string>();
 142032        }
 33
 75234        public string? HeaderText { get; set; }
 35
 314036        public List<ObjVertex> Vertices { get; private set; }
 37
 247238        public List<ObjVector3> ParameterSpaceVertices { get; private set; }
 39
 176840        public List<ObjVector3> VertexNormals { get; private set; }
 41
 179642        public List<ObjVector3> TextureVertices { get; private set; }
 43
 206444        public List<ObjPoint> Points { get; private set; }
 45
 180046        public List<ObjLine> Lines { get; private set; }
 47
 192048        public List<ObjFace> Faces { get; private set; }
 49
 236850        public List<ObjCurve> Curves { get; private set; }
 51
 211652        public List<ObjCurve2D> Curves2D { get; private set; }
 53
 197254        public List<ObjSurface> Surfaces { get; private set; }
 55
 175256        public List<ObjSurfaceConnection> SurfaceConnections { get; private set; }
 57
 202458        public ObjGroup DefaultGroup { get; private set; }
 59
 216860        public List<ObjGroup> Groups { get; private set; }
 61
 147662        public Dictionary<int, float> MergingGroupResolutions { get; private set; }
 63
 174064        public List<string> MapLibraries { get; private set; }
 65
 174466        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
 843102            return ObjFileReader9.FromStream(stream, settings);
 103#else
 281104            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