init
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 11cc6192c6cd42d19560cefcf16cd996
|
||||
timeCreated: 1674058607
|
||||
@@ -0,0 +1,111 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using Sirenix.Utilities;
|
||||
using Test.Util;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using VOID.ScriptableObjects;
|
||||
|
||||
namespace Test.EditMode.GameData.Generic
|
||||
{
|
||||
public class AbilityQualityTest
|
||||
{
|
||||
private List<AbilityQuality> _qualities = new();
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void Setup()
|
||||
{
|
||||
AssetDatabase.FindAssets($"t:{nameof(AbilityQuality)}").ForEach(guid =>
|
||||
{
|
||||
var path = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var abilityQuality = AssetDatabase.LoadAssetAtPath<AbilityQuality>(path);
|
||||
|
||||
_qualities.Add(abilityQuality);
|
||||
});
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void Cleanup()
|
||||
{
|
||||
_qualities.Clear();
|
||||
_qualities = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Index_NonNegative()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (quality.index >= 0) return;
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} index must be non negative.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Index_Unique()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
var other = _qualities.FirstOrDefault(other => other != quality && other.index == quality.index);
|
||||
if (!other) return;
|
||||
var otherPath = AssetDatabase.GetAssetPath(other.GetInstanceID());
|
||||
var otherHyperLink = DebugLogUtil.Hyperlink(otherPath);
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} and {otherHyperLink} have same indexes", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisplayName_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (quality.displayName.IsNullOrWhitespace())
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} description is empty.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Color_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (quality.color == default)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} color is not selected.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Background_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!quality.background)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} background is not selected.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Border_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!quality.border)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} background is not selected.", quality);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 332f1ca717d04512abc671d6605b1417
|
||||
timeCreated: 1696349633
|
||||
@@ -0,0 +1,167 @@
|
||||
using System.Collections.Generic;
|
||||
using NUnit.Framework;
|
||||
using Sirenix.Utilities;
|
||||
using Test.Util;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using VOID.Generic.Dict.Ability;
|
||||
using VOID.ScriptableObjects.Abilities;
|
||||
|
||||
namespace Test.EditMode.GameData.Generic
|
||||
{
|
||||
public class BasicAbilityTest
|
||||
{
|
||||
private List<BasicAbility> _abilities = new();
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void Setup()
|
||||
{
|
||||
AssetDatabase.FindAssets($"t:{nameof(BasicAbility)}").ForEach(guid =>
|
||||
{
|
||||
var path = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var ability = AssetDatabase.LoadAssetAtPath<BasicAbility>(path);
|
||||
|
||||
_abilities.Add(ability);
|
||||
});
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void Cleanup()
|
||||
{
|
||||
_abilities.Clear();
|
||||
_abilities = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FileNameSuffix_MatchesAbility()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (assetPath.EndsWith("Ability.asset")) return;
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} does not ends with 'Ability'",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisplayName_IsPresent()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (ability.displayName.IsNullOrWhitespace())
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} display name is empty",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisplayIcon_IsPresent()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!ability.displayIcon)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} display icon is not selected",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Quality_IsPresent()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!ability.quality)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} quality is not selected",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CastingAnimationList_IsPresent()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
if (ability is BasicAttackAbility) return;
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!ability.castingAnimationList && ability.aimingType != AbilityAimingType.Blank)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} casting animation is not selected",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AbilityAnimationList_IsPresent()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!ability.abilityAnimationList && ability.castingType != AbilityCastingType.Instant)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} ability animation is not selected",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Range_MinimalRange()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (ability.range < 1f)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} range cant be lesser than 1",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Range_IsMelee()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!ability.isRanged && ability.range > 1f)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} isRanged=false, range need to be '1'",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CastUsages_AtLeastOne()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (ability.castUsages < 1)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} cast usages cant be lesser than 1",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Projectile_IsPresent()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!ability.projectile)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} projectile is not selected",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e075d9cd598242119cfedeb3ff9c9b9e
|
||||
timeCreated: 1696336275
|
||||
@@ -0,0 +1,60 @@
|
||||
using System.Collections.Generic;
|
||||
using NUnit.Framework;
|
||||
using Sirenix.Utilities;
|
||||
using Test.Util;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using VOID.ScriptableObjects.Abilities;
|
||||
|
||||
namespace Test.EditMode.GameData.Generic
|
||||
{
|
||||
public class BasicAttackAbilityTest
|
||||
{
|
||||
private List<BasicAttackAbility> _abilities = new();
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void Setup()
|
||||
{
|
||||
AssetDatabase.FindAssets($"t:{nameof(BasicAttackAbility)}").ForEach(guid =>
|
||||
{
|
||||
var path = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var ability = AssetDatabase.LoadAssetAtPath<BasicAttackAbility>(path);
|
||||
|
||||
_abilities.Add(ability);
|
||||
});
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void Cleanup()
|
||||
{
|
||||
_abilities.Clear();
|
||||
_abilities = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CastingAnimationList_IsEmpty()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (ability.castingAnimationList)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} casting animation is selected. Basic Attack dont use that",
|
||||
ability);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CastUsages_MustBeOne()
|
||||
{
|
||||
_abilities.ForEach(ability =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(ability.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (ability.castUsages != 1)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} cast usages for basic attack must be 1.", ability);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dbd8ec73e98f42eab056944704f993f3
|
||||
timeCreated: 1696348907
|
||||
@@ -0,0 +1,83 @@
|
||||
using System.Collections.Generic;
|
||||
using NUnit.Framework;
|
||||
using Sirenix.Utilities;
|
||||
using Test.Util;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using VOID.ScriptableObjects;
|
||||
|
||||
namespace Test.EditMode.GameData.Generic
|
||||
{
|
||||
public class BasicStatusTest
|
||||
{
|
||||
private List<BasicStatus> _statuses = new();
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void Setup()
|
||||
{
|
||||
AssetDatabase.FindAssets($"t:{nameof(BasicStatus)}").ForEach(guid =>
|
||||
{
|
||||
var path = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var status = AssetDatabase.LoadAssetAtPath<BasicStatus>(path);
|
||||
|
||||
_statuses.Add(status);
|
||||
});
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void Cleanup()
|
||||
{
|
||||
_statuses.Clear();
|
||||
_statuses = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisplayName_IsPresent()
|
||||
{
|
||||
_statuses.ForEach(status =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(status.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (status.displayName.IsNullOrWhitespace())
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} display name is empty.", status);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisplayIcon_IsPresent()
|
||||
{
|
||||
_statuses.ForEach(status =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(status.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!status.displayIcon)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} display icon is not selected.", status);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Description_IsPresent()
|
||||
{
|
||||
_statuses.ForEach(status =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(status.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (status.description.IsNullOrWhitespace())
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} description is empty.", status);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DurationInTurns_NonNegative()
|
||||
{
|
||||
_statuses.ForEach(status =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(status.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (status.durationInTurns < 0)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} duration cannot be negative.", status);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 406fa6094ae64866a728187659e5c1fe
|
||||
timeCreated: 1696351487
|
||||
@@ -0,0 +1,111 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using Sirenix.Utilities;
|
||||
using Test.Util;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using VOID.ScriptableObjects;
|
||||
|
||||
namespace Test.EditMode.GameData.Generic
|
||||
{
|
||||
public class ItemQualityTest
|
||||
{
|
||||
private List<ItemQuality> _qualities = new();
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void Setup()
|
||||
{
|
||||
AssetDatabase.FindAssets($"t:{nameof(ItemQuality)}").ForEach(guid =>
|
||||
{
|
||||
var path = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var itemQuality = AssetDatabase.LoadAssetAtPath<ItemQuality>(path);
|
||||
|
||||
_qualities.Add(itemQuality);
|
||||
});
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void Cleanup()
|
||||
{
|
||||
_qualities.Clear();
|
||||
_qualities = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Index_NonNegative()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (quality.index >= 0) return;
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} index must be non negative.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Index_Unique()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
var other = _qualities.FirstOrDefault(other => other != quality && other.index == quality.index);
|
||||
if (!other) return;
|
||||
var otherPath = AssetDatabase.GetAssetPath(other.GetInstanceID());
|
||||
var otherHyperLink = DebugLogUtil.Hyperlink(otherPath);
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} and {otherHyperLink} have same indexes", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisplayName_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (quality.displayName.IsNullOrWhitespace())
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} description is empty.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Color_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (quality.color == default)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} color is not selected.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Background_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!quality.background)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} background is not selected.", quality);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Border_IsPresent()
|
||||
{
|
||||
_qualities.ForEach(quality =>
|
||||
{
|
||||
var assetPath = AssetDatabase.GetAssetPath(quality.GetInstanceID());
|
||||
var assetHyperLink = DebugLogUtil.Hyperlink(assetPath);
|
||||
if (!quality.border)
|
||||
Debug.LogError($"ScriptableObject: {assetHyperLink} background is not selected.", quality);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 04cf53f4fd644bd6bacaae68906b6663
|
||||
timeCreated: 1696350570
|
||||
Reference in New Issue
Block a user