< Summary

Class:BaseVariable[T]
Assembly:BaseVariable
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/DataStore/Variables/BaseVariable.cs
Covered lines:12
Uncovered lines:0
Coverable lines:12
Total lines:41
Line coverage:100% (12 of 12)
Covered branches:0
Total branches:0
Covered methods:7
Total methods:7
Method coverage:100% (7 of 7)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BaseVariable()0%110100%
BaseVariable(...)0%110100%
Get()0%110100%
Set(...)0%110100%
Equals(...)0%110100%
Set(...)0%440100%
OnChangeListenersCount()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/DataStore/Variables/BaseVariable.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3
 4public delegate void Change<T>(T current, T previous);
 5
 6public delegate void ChangeWithSenderInfo<T>(BaseVariable<T> sender, T current, T previous);
 7
 8public class BaseVariable<T> : IBaseVariable<T>, IEquatable<T>
 9{
 10    protected T value;
 11
 4012812    public BaseVariable() => value = default;
 8159613    public BaseVariable(T defaultValue) => value = defaultValue;
 14
 15    public event Change<T> OnChange;
 16
 17842417    public T Get() => value;
 18
 19    public void Set(T newValue) =>
 5827220        Set(newValue, !Equals(newValue));
 21
 22    public virtual bool Equals(T other) =>
 5826823        EqualityComparer<T>.Default.Equals(value, other);
 24
 25    public event ChangeWithSenderInfo<T> OnChangeWithSenderInfo;
 26
 27    public void Set(T newValue, bool notifyEvent)
 28    {
 5869129        var previous = value;
 5869130        value = newValue;
 31
 5869132        if (notifyEvent)
 33        {
 1943234            OnChange?.Invoke(value, previous);
 1943235            OnChangeWithSenderInfo?.Invoke(this, value, previous);
 36        }
 3927337    }
 38
 39    public int OnChangeListenersCount() =>
 240        OnChange == null ? 0 : OnChange.GetInvocationList().Length;
 41}