public void TestValidate() { var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/AnimatorComponentMaxCountRule", true); var rule = new AnimatorComponentMaxCountRule("AnimatorComponent使用数検出", ANIMATOR_LIMIT_COUNT); var result = rule.Validate(target); var issues = result.Issues; Assert.That(result.RuleName, Is.EqualTo("AnimatorComponent使用数検出")); Assert.That(issues.Count, Is.EqualTo(ANIMATOR_LIMIT_COUNT + 1)); for (int i = 0; i < issues.Count; i++) { Assert.That(issues[i].level, Is.EqualTo(IssueLevel.Error)); if (i == 0) { Assert.That(result.Issues[i].target.name, Is.EqualTo(string.Format("AnimatorObject"))); } else { Assert.That(issues[i].target.name, Is.EqualTo(string.Format("AnimatorObject ({0})", i))); } //Assert.That(issues[i].message, Is.EqualTo(string.Format("Animatorコンポーネントの使用数が{0}個を超えています。({1}個)", ANIMATOR_LIMIT_COUNT, 51))); //Assert.That(issues[i].solution, Is.EqualTo("Animatorコンポーネントの使用数を減らしてください。")); Assert.That(issues[i].solutionURL, Is.Empty); } }
public void TestBySampleData() { var testData = "Assets/VitDeck/Validator/Tests/Data/MissingReferenceRule"; var rule = new MissingReferenceRule("missing検出ルール"); var target = new ValidationTargetFinder().Find(testData, true); var result = rule.Validate(target); Assert.That(result.Issues.Count, Is.EqualTo(5)); Assert.NotNull(result.Issues.Find(issue => issue.message == "missingプレハブが含まれています!(Missing Prefab)" && issue.target == GameObject.Find("Missing Prefab"))); Assert.NotNull(result.Issues.Find(issue => issue.message == "missingコンポーネントが含まれています!(MissingScriptObject)" && issue.target == GameObject.Find("MissingScriptObject"))); Assert.NotNull(result.Issues.Find(issue => issue.message == "missingフィールドが含まれています!(MissingTestMaterial > _MainTex)" && issue.target == AssetDatabase.LoadMainAssetAtPath(testData + "/MissingTestMaterial.mat"))); Assert.NotNull(result.Issues.Find(issue => issue.message == "missingフィールドが含まれています!(RecursiveMissingTestPrefabChild > EventTrigger > Target)" && issue.target == AssetDatabase.LoadMainAssetAtPath(testData + "/RecursiveMissingTestPrefabChild.prefab"))); Assert.NotNull(result.Issues.Find(issue => issue.message == "missingコンポーネントが含まれています!(RecursiveMissingTestPrefabChild)" && issue.target == AssetDatabase.LoadMainAssetAtPath(testData + "/RecursiveMissingTestPrefabChild.prefab"))); }
public void TestValidate() { var grupeName = "カメラ"; var rule = new ComponentBlacklistRule("コンポーネントブラックリストルール", new ComponentReference[] { new ComponentReference("ライティング", new string[] { "UnityEngine.Light" }, ValidationLevel.ALLOW), new ComponentReference(grupeName, new string[] { "UnityEngine.Camera" }, ValidationLevel.NEGOTIABLE), new ComponentReference("Jointの使用禁止", new string[] { "UnityEngine.CharacterJoint", "UnityEngine.ConfigurableJoint", "UnityEngine.FixedJoint", "UnityEngine.HingeJoint", "UnityEngine.SpringJoint" }, ValidationLevel.DISALLOW) }); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/B03_ComponentBlacklistRule", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo("コンポーネントブラックリストルール")); Assert.That(result.Issues.Count, Is.EqualTo(2)); Assert.That(result.Issues[0].level, Is.EqualTo(IssueLevel.Warning)); Assert.That(result.Issues[0].target.name, Is.EqualTo("Main Camera")); Assert.That(result.Issues[0].message, Is.EqualTo(string.Format("{0}:Cameraを使用する場合は事前に運営に問い合わせてください。", grupeName))); Assert.That(result.Issues[0].solution, Is.Empty); Assert.That(result.Issues[0].solutionURL, Is.Empty); Assert.That(result.Issues[1].level, Is.EqualTo(IssueLevel.Error)); Assert.That(result.Issues[1].target.name, Is.EqualTo("GameObjectWithJoint")); }
public void TestValidateErrorDetail( LightType type, LightmapBakeType[] bakeTypes, float minRange, float maxRange, float minIntensity, float maxIntensity, float minBounceIntensity, float maxBounceIntensity) { var rule = new LightConfigRule(string.Format("{0}Lightの設定が制限に従っていることを検証するルール", type), type, bakeTypes, minRange, maxRange, minIntensity, maxIntensity, minBounceIntensity, maxBounceIntensity); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/LightConfigRule", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo(string.Format("{0}Lightの設定が制限に従っていることを検証するルール", type))); Debug.Log(string.Format("{0}Lightの設定が制限に従っていることを検証するルール", type)); Assert.That(result.Issues.Count, Is.EqualTo(4)); var obj = result.Issues[0].target as GameObject; Assert.That(obj.name, Does.EndWith("_NG")); var light = obj.GetComponent <Light>(); var bakeTypeListString = string.Join(", ", bakeTypes.Select(x => x.ToString()).ToArray()); Assert.That(result.Issues[0].level, Is.EqualTo(IssueLevel.Error)); //Assert.That(result.Issues[0].message, Is.EqualTo(string.Format("{0}LightのModeが{1}以外に設定されています。({2})", // type, bakeTypeListString, light.lightmapBakeType))); //Assert.That(result.Issues[0].solution, Is.EqualTo(string.Format("Modeを{0}に設定して下さい。", bakeTypeListString))); Debug.Log(result.Issues[0].message); Debug.Log(result.Issues[0].solution); obj = result.Issues[1].target as GameObject; Assert.That(obj.name, Does.EndWith("_NG")); light = obj.GetComponent <Light>(); Assert.That(result.Issues[1].level, Is.EqualTo(IssueLevel.Error)); //Assert.That(result.Issues[1].message, Is.EqualTo(string.Format("{0}LightのRangeが{1}~{2}の範囲を超えています。(設定値:{3})", // type, minRange, maxRange, light.range))); //Assert.That(result.Issues[1].solution, Is.EqualTo("Rangeを範囲内になるように設定して下さい。")); Debug.Log(result.Issues[1].message); Debug.Log(result.Issues[1].solution); obj = result.Issues[2].target as GameObject; Assert.That(obj.name, Does.EndWith("_NG")); light = obj.GetComponent <Light>(); Assert.That(result.Issues[2].level, Is.EqualTo(IssueLevel.Error)); //Assert.That(result.Issues[2].message, Is.EqualTo(string.Format("{0}LightのIntensityが{1}~{2}の範囲を超えています。(設定値:{3})", // type, minIntensity, maxIntensity, light.intensity))); //Assert.That(result.Issues[2].solution, Is.EqualTo("Intensityを範囲内になるように設定して下さい。")); Debug.Log(result.Issues[2].message); Debug.Log(result.Issues[2].solution); obj = result.Issues[3].target as GameObject; Assert.That(obj.name, Does.EndWith("_NG")); light = obj.GetComponent <Light>(); Assert.That(result.Issues[3].level, Is.EqualTo(IssueLevel.Error)); //Assert.That(result.Issues[3].message, Is.EqualTo(string.Format("{0}LightのIndirect Multiplierが{1}~{2}の範囲を超えています。(設定値:{3})", // type, minBounceIntensity, maxBounceIntensity, light.bounceIntensity))); //Assert.That(result.Issues[3].solution, Is.EqualTo("Indirect Multiplierを範囲内になるように設定して下さい。")); Debug.Log(result.Issues[3].message); Debug.Log(result.Issues[3].solution); }
public void TestValidate() { var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/B04_ErrorShaderRule", true); var rule = new ErrorShaderRule("エラーシェーダー検出"); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo("エラーシェーダー検出")); Assert.That(result.Issues.Count, Is.EqualTo(3)); Assert.That(result.Issues[0].level, Is.EqualTo(IssueLevel.Error)); Assert.That(result.Issues[0].target.name, Is.EqualTo("HiddenInternalErrorShaderObject")); Assert.That(result.Issues[0].message, Is.EqualTo(string.Format("オブジェクトのマテリアルで正しいシェーダーが参照されていません。", "HiddenInternalErrorShaderObject"))); Assert.That(result.Issues[0].solution, Is.Empty); Assert.That(result.Issues[0].solutionURL, Is.Empty); Assert.That(result.Issues[1].level, Is.EqualTo(IssueLevel.Error)); Assert.That(result.Issues[1].target.name, Is.EqualTo("ErrorShaderObject")); Assert.That(result.Issues[1].message, Is.EqualTo(string.Format("オブジェクトでシェーダーエラーが検出されました。", "ErrorShaderObject"))); Assert.That(result.Issues[1].solution, Is.Empty); Assert.That(result.Issues[1].solutionURL, Is.Empty); Assert.That(result.Issues[2].level, Is.EqualTo(IssueLevel.Info)); Assert.That(result.Issues[2].target.name, Is.EqualTo("NoneMaterialObject")); Assert.That(result.Issues[2].message, Is.EqualTo(string.Format("オブジェクトのRendererにマテリアルの参照がありません。", "NoneMaterialObject"))); Assert.That(result.Issues[2].solution, Is.Empty); Assert.That(result.Issues[2].solutionURL, Is.Empty); }
public void DisableAlwaysAnimateTest() { var target = new ValidationTargetFinder().Find("Assets/VitDeck/Validator/Tests/Data/AnimationComponentRule/DisableAlwaysAnimate", true); var issues = new AnimationComponentRule("").Validate(target).Issues; Assert.That(issues.Count, Is.EqualTo(0)); }
public void EnableAlwaysAnimateTest() { var target = new ValidationTargetFinder().Find("Assets/VitDeck/Validator/Tests/Data/AnimationComponentRule/EnableAlwaysAnimate", true); var issues = new AnimationComponentRule("").Validate(target).Issues; Assert.That(issues.Count, Is.EqualTo(1)); Assert.That(issues[0].level, Is.EqualTo(IssueLevel.Warning)); }
public void SetAlwaysMotionTest() { var target = new ValidationTargetFinder().Find(BaseFolder + "SetAlwaysAnimate", true); var issues = new AnimatorComponentRule("", new System.Type[] { }).Validate(target).Issues; Assert.That(issues.Count, Is.EqualTo(1)); Assert.That(issues[0].level, Is.EqualTo(IssueLevel.Warning)); }
public void TestFindInvalid() { var testFolder = "Invalid"; var finder = new ValidationTargetFinder(); Assert.That(() => finder.Find(testFolder), Throws.Exception.TypeOf <FatalValidationErrorException>() .And.Message.EqualTo("正しいベースフォルダを指定してください。:Invalid")); }
public void WithAnyComponentTest() { // ここでは例としてBoxColliderをmustUseSeparatelyComponentsに設定 var target = new ValidationTargetFinder().Find(BaseFolder + "WithBoxColliderComponent", true); var issues = new AnimatorComponentRule("", new System.Type[] { typeof(BoxCollider) }).Validate(target).Issues; Assert.That(issues.Count, Is.EqualTo(1)); Assert.That(issues[0].level, Is.EqualTo(IssueLevel.Error)); }
public void TestFindScenes() { var testFolder = "Assets/VitDeck/Validator/Tests/ValidationTargetFinder"; var finder = new ValidationTargetFinder(); var scenes = finder.FindScenes(testFolder, true); //New Scene Assert.That(scenes.Length, Is.EqualTo(1)); Assert.That(Array.Exists(scenes, scene => scene.path == "Assets/VitDeck/Validator/Tests/ValidationTargetFinder/New Scene.unity"), Is.True); }
public void TestValidateNoObject() { var rule = new AssetGuidBlacklistRule("AssetGuidBlacklistRule", new string[] { "740112f6e77ca914d9c26eef5d68accd", "ae68339621fb41b4f9905188526120ea" }); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/ValidationTargetFinderNoObject", true); var result = rule.Validate(target); Assert.That(result.Issues.Count, Is.EqualTo(0)); }
public void TestValidate(LightType type, LightmapBakeType[] unusableBakeTypes) { var rule = new UseLightModeRule("特定のLightのModeについて検証するルール", type, unusableBakeTypes); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/UseLightModeRule", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo("特定のLightのModeについて検証するルール")); Assert.That(result.Issues.Count, Is.Zero); }
public void TestNoIssues() { var rule = new NoneMeshRule("メッシュ未設定検出ルール"); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/ValidationTargetFinderNoObject", true); var result = rule.Validate(target); var issues = result.Issues; Assert.That(issues.Count, Is.EqualTo(0)); }
public void TestFindNoObject() { var testFolder = "Assets/VitDeck/Validator/Tests/ValidationTargetFinderNoObject"; var finder = new ValidationTargetFinder(); var rootObjects = finder.FindRootObjects(testFolder, true); Assert.That(rootObjects.Length, Is.EqualTo(0)); var allObjects = finder.FindAllObjects(testFolder, true); Assert.That(allObjects.Length, Is.EqualTo(0)); }
public void TestValidate() { var rule = new ContainMatOrTexInAssetRule("アセット内のMaterialやTextureの埋め込みを検証するルール"); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/ContainMatOrTexInAssetRule/OK", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo("アセット内のMaterialやTextureの埋め込みを検証するルール")); Assert.That(result.Issues.Count, Is.Zero); }
public void TestValidate(LightType type, LightmapBakeType[] bakeTypes) { var rule = new LightConfigRule(string.Format("{0}Lightの設定が制限に従っていることを検証するルール", type), type, bakeTypes); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/LightConfigRule", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo(string.Format("{0}Lightの設定が制限に従っていることを検証するルール", type))); Debug.Log(string.Format("{0}Lightの設定が制限に従っていることを検証するルール", type)); Assert.That(result.Issues.Count, Is.EqualTo(0)); }
public void TestUnderLimit() { var limit = 4; var guids = new string[] { "c4bb7970c870834499aba4a950dd3d73" }; var rule = new PrefabLimitRule("", guids, limit); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/PrefabLimitRule", true); var result = rule.Validate(target); Assert.That(result.Issues.Count, Is.Zero); }
public void TestFindRootObjects() { var testFolder = "Assets/VitDeck/Validator/Tests/ValidationTargetFinder"; var finder = new ValidationTargetFinder(); var rootObjects = finder.FindRootObjects(testFolder, true); //New Scene Assert.That(rootObjects.Length, Is.EqualTo(3)); Assert.That(Array.Exists(rootObjects, obj => obj.name == "Cube(main)"), Is.True); Assert.That(Array.Exists(rootObjects, obj => obj.name == "Directional Light"), Is.True); Assert.That(Array.Exists(rootObjects, obj => obj.name == "Main Camera"), Is.True); }
public void TestInvalidPath() { var finder = new ValidationTargetFinder(); var path = "invalidPath"; Assert.That(finder.FindAssetPaths(path), Is.Null); Assert.That(finder.FindAssetGuids(path), Is.Null); Assert.That(finder.FindAssetObjects(path), Is.Null); Assert.That(finder.FindScenes(path), Is.Null); Assert.That(finder.FindRootObjects(path), Is.Null); Assert.That(finder.FindAllObjects(path), Is.Null); }
public void TestValidate() { var limit = 5; var rule = new VRCTriggerCountLimitRule("VRC_Triggerコンポーネントの数が制限を超えていることを検出するルール", limit); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/VRCTriggerCountLimitRule", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo("VRC_Triggerコンポーネントの数が制限を超えていることを検出するルール")); Assert.That(result.Issues.Count, Is.EqualTo(0)); }
public void TestValidateInvalidSetting() { var invalidRule = new ComponentBlacklistRule(null, new ComponentReference[] { null }); var invalidRule2 = new ComponentBlacklistRule("コンポーネントブラックリストルール", null); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/ComponentBlacklistRule", true); var result = invalidRule.Validate(target); Assert.That(result.Issues.Count, Is.EqualTo(0)); var failResult = invalidRule2.Validate(target); Assert.That(failResult.Issues.Count, Is.EqualTo(0)); }
public void TestValidateInvalidSetting() { var invalidRule = new UsableComponentListRule(null, new ComponentReference[] { null }); var invalidRule2 = new UsableComponentListRule("", null); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/UsableComponentListRule", true); var result = invalidRule.Validate(target); Assert.That(result.Issues.Count, Is.Zero); var failResult = invalidRule2.Validate(target); Assert.That(failResult.Issues.Count, Is.Zero); }
public void TestFindObjects() { var testFolder = "Assets/VitDeck/Validator/Tests/ValidationTargetFinder"; var finder = new ValidationTargetFinder(); var allObjects = finder.FindAllObjects(testFolder, true); //New Scene Assert.That(allObjects.Length, Is.AtLeast(4)); Assert.That(Array.Exists(allObjects, obj => obj.name == "Cube(main)"), Is.True); Assert.That(Array.Exists(allObjects, obj => obj.name == "Cube(child)"), Is.True); Assert.That(Array.Exists(allObjects, obj => obj.name == "Capsule"), Is.True); Assert.That(Array.Exists(allObjects, obj => obj.name == "Audio Source"), Is.True); }
public void TestValidate(LightType type, int limit) { var rule = new LightCountLimitRule( string.Format("{0}Lightの個数が制限を超えていることを検出するルール", type), type, limit); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/LightCountLimitRule", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo(string.Format("{0}Lightの個数が制限を超えていることを検出するルール", type))); Assert.That(result.Issues.Count, Is.EqualTo(0)); }
public void TestFindAssetPaths() { var testFolder = "Assets/VitDeck/Validator/Tests/ValidationTargetFinder"; var finder = new ValidationTargetFinder(); var assetPaths = finder.FindAssetPaths(testFolder); Assert.That(Array.Exists(assetPaths, path => path == testFolder), Is.True); Assert.That(Array.Exists(assetPaths, path => path == (testFolder + "/Sample_object.fbx")), Is.True); Assert.That(Array.Exists(assetPaths, path => path == (testFolder + "/New Scene.unity")), Is.True); Assert.That(Array.Exists(assetPaths, path => path == (testFolder + "/Sub Folder")), Is.True); Assert.That(Array.Exists(assetPaths, path => path == (testFolder + "/Sub Folder/New Prefab in sub folder.prefab")), Is.True); //FBXのサブアセットによりパスが重複取得されない Assert.That(assetPaths.Length, Is.EqualTo(assetPaths.Distinct().Count())); }
public void TestValidate() { var rule = new UseMeshColliderRule("MeshColliderの使用を検証するルール"); var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/UseMeshColliderRule", true); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo("MeshColliderの使用を検証するルール")); Assert.That(result.Issues.Count, Is.AtLeast(1)); Assert.That(result.Issues[0].level, Is.EqualTo(IssueLevel.Warning)); //Assert.That(result.Issues[0].message, Is.EqualTo("MeshColliderは非推奨です。")); //Assert.That(result.Issues[0].solution, Is.EqualTo("他のColliderを使用してください。")); Assert.That(result.Issues[0].solutionURL, Is.Empty); }
public void TestFind() { var testFolder = "Assets/VitDeck/Validator/Tests/ValidationTargetFinder"; var finder = new ValidationTargetFinder(); var validationTarget = finder.Find(testFolder, true); Assert.That(validationTarget.GetBaseFolderPath(), Is.EqualTo(testFolder)); Assert.That(validationTarget.GetAllAssetPaths(), Is.Not.Null); Assert.That(validationTarget.GetAllAssetGuids(), Is.Not.Null); Assert.That(validationTarget.GetAllAssets(), Is.Not.Null); Assert.That(validationTarget.GetScenes(), Is.Not.Null); Assert.That(validationTarget.GetRootObjects(), Is.Not.Null); Assert.That(validationTarget.GetAllObjects(), Is.Not.Null); }
public void TestBySampleData() { var testData = "Assets/VitDeck/Validator/Tests/Data/NoneMeshRule"; var rule = new NoneMeshRule("メッシュ未設定検出ルール"); var target = new ValidationTargetFinder().Find(testData, true); var result = rule.Validate(target); var issues = result.Issues; Assert.That(issues.Count, Is.EqualTo(4)); Assert.NotNull(issues.Find(issue => issue.message == "NoneMeshFilterObject (UnityEngine.MeshFilter)にメッシュが設定されていません。")); Assert.NotNull(issues.Find(issue => issue.message == "NoneMeshColliderObject (UnityEngine.MeshCollider)にメッシュが設定されていません。")); Assert.NotNull(issues.Find(issue => issue.message == "NoneSkinnedMeshRendererObject (UnityEngine.SkinnedMeshRenderer)にメッシュが設定されていません。")); Assert.NotNull(issues.Find(issue => issue.message == "NoneMeshShapeParticleSystem (UnityEngine.ParticleSystem)/Shapeがメッシュに依存する設定であるにも関わらず、メッシュが設定されていません。")); }
public void TestValidate() { var finder = new ValidationTargetFinder(); var target = finder.Find("Assets/VitDeck/Validator/Tests/Data/GlobalIlluminationBakedRule", true); var rule = new GlobalIlluminationBakedRule("Global IlluminationのBakedチェックルール"); var result = rule.Validate(target); Assert.That(result.RuleName, Is.EqualTo("Global IlluminationのBakedチェックルール")); Assert.That(result.Issues.Count, Is.EqualTo(1)); Assert.That(result.Issues[0].level, Is.EqualTo(IssueLevel.Error)); Assert.That(result.Issues[0].target.name, Is.EqualTo("Cube_GINotBaked")); //Assert.That(result.Issues[0].message, Is.EqualTo(string.Format("アセット{0}でGlobal IlluminationがBakedに設定されていません。", "Cube_GINotBaked (UnityEngine.GameObject)"))); //Assert.That(result.Issues[0].solution, Is.EqualTo("Standard ShaderでEmissionを利用する場合はGlobal Illuminationの設定をBakedにしてください。")); Assert.That(result.Issues[0].solutionURL, Is.Empty); }