< Summary

Class:Interpolator2DBase
Assembly:bamlab.micromissiles
File(s):/github/workspace/Assets/Scripts/Utils/Interpolator2DBase.cs
Covered lines:18
Uncovered lines:3
Coverable lines:21
Total lines:42
Line coverage:85.7% (18 of 21)
Covered branches:0
Total branches:0
Covered methods:4
Total methods:5
Method coverage:80% (4 of 5)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Interpolator2DBase(...)0%440100%
Interpolator2DBase(...)0%110100%
Interpolate(...)0%2100%
ParseCsvLines(...)0%660100%

File(s)

/github/workspace/Assets/Scripts/Utils/Interpolator2DBase.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using UnityEngine;
 4
 5// Base implementation of a 2D interpolator.
 6public abstract class Interpolator2DBase : IInterpolator2D {
 7  // 2D interpolator data points.
 8  protected readonly List<Interpolator2DDataPoint> _data;
 9
 110  public IReadOnlyList<Interpolator2DDataPoint> Data => _data;
 11
 4812  public Interpolator2DBase(IEnumerable<Interpolator2DDataPoint> data) {
 2413    _data = data?.ToList() ?? new List<Interpolator2DDataPoint>();
 2414  }
 3615  public Interpolator2DBase(string[] csvLines) : this(ParseCsvLines(csvLines)) {}
 16
 17  // Interpolate the value.
 18  public abstract Interpolator2DDataPoint Interpolate(float x, float y);
 019  public Interpolator2DDataPoint Interpolate(in Vector2 coordinates) {
 020    return Interpolate(coordinates.x, coordinates.y);
 021  }
 22
 23  // Parse the CSV lines into 2D data points.
 1224  private static IEnumerable<Interpolator2DDataPoint> ParseCsvLines(IEnumerable<string> lines) {
 1225    var parsedDataPoints = new List<Interpolator2DDataPoint>();
 175826    foreach (string line in lines) {
 57527      if (string.IsNullOrWhiteSpace(line)) {
 128        continue;
 29      }
 57330      string[] values = line.Split(',');
 57331      (bool success, List<float> parsedValues) =
 32          Interpolator2DDataPoint.ValidateAndParseData(values);
 113833      if (success && parsedValues.Count >= 2) {
 56534        parsedDataPoints.Add(new Interpolator2DDataPoint {
 35          Coordinates = new Vector2(parsedValues[0], parsedValues[1]),
 36          Data = parsedValues.Skip(2).ToList(),
 37        });
 56538      }
 57339    }
 1240    return parsedDataPoints;
 1241  }
 42}