diff --git a/Assets/Scripts/HeroPartySO.cs b/Assets/Scripts/HeroPartySO.cs index 4a47ae9..9017a62 100644 --- a/Assets/Scripts/HeroPartySO.cs +++ b/Assets/Scripts/HeroPartySO.cs @@ -12,4 +12,5 @@ public class HeroPartySO : ScriptableObject public void Add(HeroUnit unit) { unitList.Add(unit); } public void Remove(HeroUnit unit) { unitList.Remove(unit); } + public int Count => unitList.Count; } diff --git a/Assets/Scripts/HeroUnit.cs b/Assets/Scripts/HeroUnit.cs index c446e4c..1814441 100644 --- a/Assets/Scripts/HeroUnit.cs +++ b/Assets/Scripts/HeroUnit.cs @@ -2,6 +2,9 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("TestsPlaymode")] + /// /// Component that makes a duder a duder. /// Manages class, skills, level, attrs, and AI. @@ -25,4 +28,9 @@ public class HeroUnit : MonoBehaviour { party.Remove(this); } + + internal HeroPartySO getParty() + { + return party; + } } diff --git a/Assets/TestsPlaymode.meta b/Assets/TestsPlaymode.meta new file mode 100644 index 0000000..cf17503 --- /dev/null +++ b/Assets/TestsPlaymode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 761a28b9566afe848955bfe8200ff125 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestsPlaymode/HeroPartyTest.cs b/Assets/TestsPlaymode/HeroPartyTest.cs new file mode 100644 index 0000000..77bdd10 --- /dev/null +++ b/Assets/TestsPlaymode/HeroPartyTest.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; + +public class HeroPartyTest +{ + [UnityTest] + public IEnumerator HeroPartyGetsAllTheHeroes() + { + var prefab = AssetDatabase.LoadAssetAtPath("Assets/Prefabs/Hero.prefab"); + Assert.IsNotNull(prefab); + var instance = Object.Instantiate(prefab); + var hero = instance.GetComponent(); + var party = hero.getParty(); + yield return null; + Assert.AreEqual(1, party.Count); + Object.Destroy(instance); + yield return null; + Assert.IsEmpty(party.UnitList); + } +} diff --git a/Assets/TestsPlaymode/HeroPartyTest.cs.meta b/Assets/TestsPlaymode/HeroPartyTest.cs.meta new file mode 100644 index 0000000..020ccb9 --- /dev/null +++ b/Assets/TestsPlaymode/HeroPartyTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12e575ff764956245a428c77cced4e48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestsPlaymode/TestsPlaymode.asmdef b/Assets/TestsPlaymode/TestsPlaymode.asmdef new file mode 100644 index 0000000..ff95e3f --- /dev/null +++ b/Assets/TestsPlaymode/TestsPlaymode.asmdef @@ -0,0 +1,22 @@ +{ + "name": "TestsPlaymode", + "rootNamespace": "", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner", + "IdleSurvivors" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/TestsPlaymode/TestsPlaymode.asmdef.meta b/Assets/TestsPlaymode/TestsPlaymode.asmdef.meta new file mode 100644 index 0000000..2f5420f --- /dev/null +++ b/Assets/TestsPlaymode/TestsPlaymode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da0ac170c269d9342b202cf3000da737 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..5e97f83 --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file