< Summary

Class:GDX.DataTables.CellValues.EnumIntCellValue
Assembly:GDX
File(s):./Packages/com.dotbunny.gdx/GDX/DataTables/CellValues/EnumIntCellValue.cs
Covered lines:0
Uncovered lines:40
Coverable lines:40
Total lines:151
Line coverage:0% (0 of 40)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:7
Method coverage:0% (0 of 7)

Coverage History

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
EnumIntCellValue(...)0%2100%
Get()0%6200%
GetEnum()0%12300%
GetDataVersion()0%2100%
GetUnsafe()0%2100%
Set(...)0%6200%
GetSupportedType()0%2100%

File(s)

./Packages/com.dotbunny.gdx/GDX/DataTables/CellValues/EnumIntCellValue.cs

#LineLine coverage
 1// Copyright (c) 2020-2024 dotBunny Inc.
 2// dotBunny licenses this file to you under the BSL-1.0 license.
 3// See the LICENSE file in the project root for more information.
 4
 5using System;
 6
 7namespace GDX.DataTables.CellValues
 8{
 9    /// <summary>
 10    ///     A <see cref="DataTableBase" /> <see cref="Enum" /> cell reference.
 11    /// </summary>
 12    [Serializable]
 13    public struct EnumIntCellValue
 14    {
 15        /// <summary>
 16        ///     A cached type for reference at runtime.
 17        /// </summary>
 18        Type m_CachedType;
 19
 20        /// <summary>
 21        ///     The cached value of the referenced <see cref="DataTable" /> cell.
 22        /// </summary>
 23        int m_CachedValue;
 24
 25        /// <summary>
 26        ///     The cached <see cref="DataTable" /> version found when last updating <see cref="m_CachedValue" />.
 27        /// </summary>
 28        ulong m_TableVersion;
 29#pragma warning disable IDE1006
 30        // ReSharper disable InconsistentNaming
 31        /// <summary>
 32        ///     The <see cref="DataTableBase" /> polled for cell data.
 33        /// </summary>
 34        public DataTableBase DataTable;
 35
 36        /// <summary>
 37        ///     The unique column identifier used when accessing the <see cref="DataTable" />.
 38        /// </summary>
 39        public int ColumnIdentifier;
 40
 41        /// <summary>
 42        ///     The unique row identifier used when accessing the <see cref="DataTable" />.
 43        /// </summary>
 44        public int RowIdentifier;
 45        // ReSharper enable InconsistentNaming
 46#pragma warning restore IDE1006
 47
 48        /// <summary>
 49        ///     Creates a <see cref="FloatCellValue" />.
 50        /// </summary>
 51        /// <param name="dataTable">The referenced <see cref="DataTableBase" />.</param>
 52        /// <param name="rowIdentifier">The unique row identifier to use when polling the <paramref name="dataTable" />.
 53        /// <param name="columnIdentifier">The unique column identifier to use when polling the <paramref name="dataTabl
 54        public EnumIntCellValue(DataTableBase dataTable, int rowIdentifier, int columnIdentifier)
 055        {
 056            DataTable = dataTable;
 057            RowIdentifier = rowIdentifier;
 058            ColumnIdentifier = columnIdentifier;
 059            m_TableVersion = 0;
 060            m_CachedValue = default;
 061            m_CachedType = null;
 062            Get();
 063        }
 64
 65        /// <summary>
 66        ///     Get the <see cref="float" /> value referenced from the <see cref="DataTableBase" />.
 67        /// </summary>
 68        /// <remarks>
 69        ///     This will evaluate if the version of the table matches the internally cached version, and will update
 70        ///     the cached reference if necessary.
 71        /// </remarks>
 72        /// <returns>A <see cref="float" /> value.</returns>
 73        public int Get()
 074        {
 075            if (m_TableVersion == DataTable.GetDataVersion())
 076            {
 077                return m_CachedValue;
 78            }
 79
 080            m_CachedValue = DataTable.GetEnumInt(RowIdentifier, ColumnIdentifier);
 081            m_TableVersion = DataTable.GetDataVersion();
 082            return m_CachedValue;
 083        }
 84
 85        /// <summary>
 86        ///     Get the <see cref="Enum" /> value of the <see cref="DataTableBase" /> cell's value.
 87        /// </summary>
 88        /// <remarks>
 89        ///     Values are stored as <see cref="int" />, there are some cases where having the <see cref="Enum" /> could
 90        ///     useful.
 91        /// </remarks>
 92        /// <returns>The transposed value.</returns>
 93        public Enum GetEnum()
 094        {
 095            m_CachedType ??= Type.GetType(DataTable.GetTypeNameForColumn(ColumnIdentifier));
 96
 097            if (m_CachedType != null)
 098            {
 099                return (Enum)Enum.Parse(m_CachedType, Get().ToString());
 100            }
 101
 0102            return null;
 0103        }
 104
 105        /// <summary>
 106        ///     Get the internally cached version of the <see cref="DataTableBase" />'s data version.
 107        /// </summary>
 108        /// <returns>A version number.</returns>
 109        public ulong GetDataVersion()
 0110        {
 0111            return m_TableVersion;
 0112        }
 113
 114        /// <summary>
 115        ///     Get the cached value without a version check.
 116        /// </summary>
 117        /// <remarks>
 118        ///     This can respond with a default value if a <see cref="Get" /> call has not been made yet to populate the
 119        ///     internally cached value.
 120        /// </remarks>
 121        /// <returns>A <see cref="int" /> value.</returns>
 122        public int GetUnsafe()
 0123        {
 0124            return m_CachedValue;
 0125        }
 126
 127        /// <summary>
 128        ///     Sets the cached value of the struct and by default, updates the associated <see cref="DataTableBase" />.
 129        /// </summary>
 130        /// <remarks>Updating the <see cref="DataTableBase" /> will update the cached table version.</remarks>
 131        /// <param name="newValue">A <see cref="float" /> value.</param>
 132        /// <param name="updateTable">Should the value be pushed back to the referenced <see cref="DataTableBase" /> cel
 133        public void Set(int newValue, bool updateTable = true)
 0134        {
 0135            m_CachedValue = newValue;
 0136            if (updateTable)
 0137            {
 0138                m_TableVersion = DataTable.SetEnumInt(RowIdentifier, ColumnIdentifier, newValue);
 0139            }
 0140        }
 141
 142        /// <summary>
 143        ///     Get the <see cref="Serializable.SerializableTypes" /> which this struct supports.
 144        /// </summary>
 145        /// <returns>A <see cref="Serializable.SerializableTypes" />.</returns>
 146        public static Serializable.SerializableTypes GetSupportedType()
 0147        {
 0148            return Serializable.SerializableTypes.EnumInt;
 0149        }
 150    }
 151}