public void TestResetData() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); var continuousActionBuffer = new[] { 0f, 1f, 2f, 3f, 4f, 5f }; manager.UpdateActions(new ActionBuffers(continuousActionBuffer, Array.Empty <int>())); Assert.IsTrue(manager.StoredActions.ContinuousActions.SequenceEqual(continuousActionBuffer)); Assert.IsTrue(manager.NumContinuousActions == 6); manager.ResetData(); Assert.IsTrue(manager.StoredActions.ContinuousActions.SequenceEqual(new[] { 0f, 0f, 0f, 0f, 0f, 0f })); }
public void FilenameMatch() { var config = ScriptableObject.CreateInstance <ProjectAuditorConfig>(); config.AnalyzeEditorCode = false; var projectAuditor = new Unity.ProjectAuditor.Editor.ProjectAuditor(config); var projectReport = projectAuditor.Audit(); var issues = projectReport.GetIssues(IssueCategory.Code); var stringFilter = new TextFilter { matchCase = false, searchDependencies = false, searchText = "FilterTests.cs" }; var filteredIssues = issues.Where(i => stringFilter.Match(i)); Assert.AreEqual(1, filteredIssues.Count()); }
public bool Run(BuildPipeline.BuildContext context) { using (var tmpWorld = new World(ConfigurationScene.Guid.ToString("N"))) { var configEntity = CopyEntity(context.WorldManager.GetConfigEntity(), context.World, tmpWorld); // Insert asset scene before all other startup scenes, if there's any asset if (AssetEnumerator.GetAllReferencedAssets(context.Project).Count > 0) { Assert.IsTrue(tmpWorld.EntityManager.HasComponent <StartupScenes>(configEntity)); var startupScenes = tmpWorld.EntityManager.GetBuffer <StartupScenes>(configEntity).Reinterpret <Guid>(); if (startupScenes.Length == 0) { Debug.LogWarning($"Project {context.Project.Name} contains no startup scenes."); } startupScenes.Insert(0, AssetsScene.Guid); } // Make sure components not owned by the users are removed if their assemblies are missing var configArchetype = context.Session.GetManager <IArchetypeManager>().Config; var componentsToRemove = GetAllComponentTypes(configArchetype).Where(t => !DomainCache.IsIncludedInProject(context.Project, t.GetManagedType())); tmpWorld.EntityManager.RemoveComponent(tmpWorld.EntityManager.UniversalQuery, new ComponentTypes(componentsToRemove.ToArray())); // Export configuration scene var outputFile = context.DataDirectory.GetFile(tmpWorld.Name); if (!ExportWorld(outputFile, context.Project, ConfigurationScene.Path, tmpWorld)) { return(false); } // Update manifest context.Manifest.Add(ConfigurationScene.Guid, ConfigurationScene.Path, outputFile.AsEnumerable()); // Dump debug file var debugFile = context.DataDirectory.GetFile(".debug.txt"); var debugLines = context.Manifest.Assets.OrderBy(x => x.Value).Select(x => $"{x.Key.ToString("N")} = {x.Value.DoubleQuoted()}"); debugFile.WriteAllLines(debugLines.ToArray()); } return(true); }
public IEnumerator MultipleScenes() { SceneManager.LoadScene("PoolingTestScene"); yield return(new WaitForSeconds(.1f)); var instance = Object.FindObjectOfType <BlockPooler>(); Assert.IsNotNull(instance); Assert.AreEqual(instance.transform.childCount, 100); var request = BlockPooler.Request(); Assert.AreEqual(instance.transform.childCount, 100); request.transform.SetParent(null); Assert.AreEqual(instance.transform.childCount, 99); request.transform.SetParent(instance.transform); Assert.AreEqual(instance.transform.childCount, 100); Assert.IsNotNull(request); BlockPooler.Return(request); Assert.AreEqual(instance.transform.childCount, 100); yield return(null); SceneManager.LoadScene("PoolingTestScene2"); instance = Object.FindObjectOfType <BlockPooler>(); Assert.IsNotNull(instance); Assert.AreEqual(instance.transform.childCount, 100); Assert.IsNotNull(BlockPooler.Request()); yield return(null); SceneManager.LoadScene("PoolingTestScene"); instance = Object.FindObjectOfType <BlockPooler>(); Assert.IsNotNull(instance); Assert.AreEqual(instance.transform.childCount, 100); Assert.IsNotNull(BlockPooler.Request()); yield return(null); }
public void TileData_RemoveFlag() { _tileData.Initialize(); // 何もしてないときは 0(None)のはず Assert.AreEqual(_tileData.Flag, TileFlag.None, "何もしてないときはNone"); _tileData.AddFlag(TileFlag.Wall); _tileData.RemoveFlag(TileFlag.Wall); // Removeしたので 0のはず Assert.AreEqual(_tileData.Flag, TileFlag.None, "RemoveしたのでNone"); _tileData.AddFlag(TileFlag.Wall); _tileData.AddFlag(TileFlag.StepUp); _tileData.RemoveFlag(TileFlag.Wall); Assert.IsTrue(_tileData.HasFlag(TileFlag.StepUp), "WallをRemoveしたがStepUpはある"); Assert.IsFalse(_tileData.HasFlag(TileFlag.Wall), "WallをRemoveしたので無い"); }
public void 自作Subjectテスト() { var mySubject = new MySubject <int>(); var sampleObserver = new SampleObserver(); var disposable = mySubject.Subscribe(sampleObserver); mySubject.OnNext(1); Assert.AreEqual(1, sampleObserver.Value, "受け取れてること"); // 破棄 disposable.Dispose(); mySubject.OnNext(2); Assert.AreEqual(1, sampleObserver.Value, "破棄しているので更新されない"); mySubject.OnCompleted(); mySubject.Dispose(); }
public void LoadAssetWithNameAndTypeTest() { #if UNITY_EDITOR AssetBundleSettings.SimulateAssetBundleInEditor = true; #endif ResKit.Init(); var resLoader = ResLoader.Allocate(); var audioClip = resLoader.LoadSync <AudioClip>("coin_get1"); Assert.IsTrue(audioClip); var gameObj = resLoader.LoadSync <GameObject>("coin_get1"); Assert.IsTrue(gameObj); resLoader.Recycle2Cache(); resLoader = null; }
public IEnumerator MergeResultObservableTest() { int count = 0; bool finished = false; var subject = new Subject <int>(); subject // IObservable<int>からIObservable<IObservable<int>>に変換 .Select(i => Observable.IntervalFrame(1).Take(2).Select(_ => 1)) // IObservable<IObservable<T>>からIObservabel<T>へマージ .Merge() .Subscribe(num => count += num, () => finished = true); subject.OnNext(1); subject.OnCompleted(); yield return(new WaitUntil(() => finished)); Assert.AreEqual(2, count, "MergeによってIObservabvle<IObservabvle<T>>からIObservavble<T>にマージされた"); }
public IEnumerator DelayIgnore() => UniTask.ToCoroutine(async() => { var time = Time.realtimeSinceStartup; Time.timeScale = 0.01f; try { await UniTask.Delay(TimeSpan.FromSeconds(1), ignoreTimeScale: true); var elapsed = Time.realtimeSinceStartup - time; // MidpointRounding は数値の丸め処理を行うメソッドで、処理する方法を決める // ToEvanは数値が2つの数値の中間に位置するときに最も近い偶数方向に丸められる Assert.AreEqual(1, (int)Math.Round(TimeSpan.FromSeconds(elapsed).TotalSeconds, MidpointRounding.ToEven)); } finally { Time.timeScale = 1.0f; } });
public IEnumerator IntegrationTest() { SceneManager.LoadScene(SCENE_NAME); yield return(null); var helper = Object.FindObjectOfType <ProductionTestHelper>(); var resourceManager = Object.FindObjectOfType <ResourceManager>(); Assert.IsNotNull(helper); Assert.IsNotNull(resourceManager); var unit = helper.NormalFactory.ProduceUnit(0); unit.GetComponent <UnitMovementController>().MoveToPoint(helper.Scrapyard.GetComponent <Node>().UnitSlots[0].transform.position); yield return(new WaitForSeconds(5.0f)); helper.Scrapyard.ScrapUnit(unit); yield return(null); Assert.IsNull(unit); }
private static void OnGenericWork(ref SGenericWorkItem item) { Chunk chunk = item.Chunk; // Perform the action item.Action(); int cnt = Interlocked.Decrement(ref chunk.m_genericWorkItemsLeftToProcess); if (cnt <= 0) { // Something is very wrong if we go below zero Assert.IsTrue(cnt == 0); // All generic work is done lock (chunk.m_lock) { OnGenericWorkDone(chunk); } } }
public void SetParentOfTransforms() { GameObject parent = new GameObject("Parent"); Transform parentT = parent.transform; List <Transform> children = new List <Transform>(); for (int i = 0; i < 10; ++i) { GameObject child = new GameObject($"Child-{i}"); children.Add(child.transform); } children.SetParent(parentT); foreach (Transform t in children) { Assert.IsNotNull(t); Assert.AreEqual(parentT, t.parent); } }
public void WhenDispatchRestartGameSignal_RestartKeyboard() { SignalDelegate callback = null; _eventDispatcherService .When(service => service.Subscribe <RestartGameSignal>(Arg.Any <SignalDelegate>())) .Do(info => callback = info.Arg <SignalDelegate>()); var inGamePresenter = new InGamePresenter(_inGameViewModel, _eventDispatcherService); _keyButtonViewModel.Color.Value = ""; _keyButtonViewModel.IsEnabled.Value = false; _colorObserver.ClearReceivedCalls(); _isKetEnabledObserver.ClearReceivedCalls(); Assert.AreNotEqual(InGameViewModel.DefaultColor, _keyButtonViewModel.Color.Value); Assert.AreNotEqual(true, _keyButtonViewModel.IsEnabled.Value); callback(new RestartGameSignal()); _colorObserver.Received().OnNext(InGameViewModel.DefaultColor); _isKetEnabledObserver.Received().OnNext(true); }
public void ShouldRaiseBoolGameEvent() { var tester = new GameEventTester < BoolGameEventListener, BoolGameEvent, BoolEvent, bool >(); tester.SetActive(true); tester.RaiseGameEvent(true); Assert.AreEqual(true, tester.GetLastEventValue()); Assert.AreEqual(1, tester.GetEventCount()); tester.Clear(); tester.SetActive(false); tester.RaiseGameEvent(true); Assert.AreEqual(0, tester.GetEventCount()); }
public IEnumerator ObservableTimerTest() { bool isSubscribed = false; Observable.Timer(System.TimeSpan.FromSeconds(0.1)) .Subscribe(_ => isSubscribed = true); yield return(new WaitUntil(() => isSubscribed)); Assert.IsTrue(isSubscribed, "指定秒数後Subscribeされた"); // 1秒おきにメッセージ発行 int count = 0; Observable.Timer(System.TimeSpan.FromSeconds(0.1), System.TimeSpan.FromSeconds(0.1)) .Subscribe(_ => count++); yield return(new WaitUntil(() => count >= 2)); Assert.AreEqual(2, count, "0.1秒置きにイベントが呼び出された"); }
public void EmptyStringMatchesAllIssues() { var projectAuditor = new Unity.ProjectAuditor.Editor.ProjectAuditor(); // disabling stripEngineCode will be reported as an issue PlayerSettings.stripEngineCode = false; var projectReport = projectAuditor.Audit(); var stringFilter = new TextFilter { matchCase = true, searchDependencies = false, searchText = string.Empty }; var issues = projectReport.GetIssues(IssueCategory.ProjectSettings); var filteredIssues = issues.Where(i => stringFilter.Match(i)); Assert.AreEqual(issues.Length, filteredIssues.Count()); }
public void ShouldRaiseFloatGameEvent() { var tester = new GameEventTester < FloatGameEventListener, FloatGameEvent, FloatEvent, float >(); tester.SetActive(true); tester.RaiseGameEvent(10f); Assert.AreEqual(10f, tester.GetLastEventValue()); Assert.AreEqual(1, tester.GetEventCount()); tester.Clear(); tester.SetActive(false); tester.RaiseGameEvent(10f); Assert.AreEqual(0, tester.GetEventCount()); }
public void FoundExpectedFeatureSets() { InitializeFeatureSets(false); string[] expectedFeatureSets = new string[] { KnownFeatureSetsContent.s_MicrosoftFeatureSetId }; var featureSets = FeatureSetsForBuildTarget(BuildTargetGroup.Standalone); Assert.IsNotNull(featureSets); Assert.AreEqual(expectedFeatureSets.Length, featureSets.Count); foreach (var featureSet in featureSets) { if (Array.IndexOf(expectedFeatureSets, featureSet.featureSetId) == -1) { Assert.IsTrue(false, $"Found unexpected feature set id {featureSet.featureSetId}!"); } } }
public void ShouldRaiseStringGameEventListener() { var tester = new GameEventTester < StringGameEventListener, StringGameEvent, StringEvent, string >(); tester.SetActive(true); tester.RaiseGameEvent("foo"); Assert.AreEqual("foo", tester.GetLastEventValue()); Assert.AreEqual(1, tester.GetEventCount()); tester.Clear(); tester.SetActive(false); tester.RaiseGameEvent("foo"); Assert.AreEqual(0, tester.GetEventCount()); }
public void ShouldRaiseVector3EventListener() { var tester = new GameEventTester < Vector3GameEventListener, Vector3GameEvent, Vector3Event, UnityEngine.Vector3 >(); tester.SetActive(true); tester.RaiseGameEvent(UnityEngine.Vector3.one); Assert.AreEqual(UnityEngine.Vector3.one, tester.GetLastEventValue()); Assert.AreEqual(1, tester.GetEventCount()); tester.Clear(); tester.SetActive(false); tester.RaiseGameEvent(UnityEngine.Vector3.one); Assert.AreEqual(0, tester.GetEventCount()); }
public void ShouldRaiseIntGameEventListener() { var tester = new GameEventTester < IntGameEventListener, IntGameEvent, IntEvent, int >(); tester.SetActive(true); tester.RaiseGameEvent(10); Assert.AreEqual(10, tester.GetLastEventValue()); Assert.AreEqual(1, tester.GetEventCount()); tester.Clear(); tester.SetActive(false); tester.RaiseGameEvent(10); Assert.AreEqual(0, tester.GetEventCount()); }
public void ReactiveCollectionTest() { int count = 0; var collection = new ReactiveCollection <int>(); collection .ObserveAdd() .Subscribe(num => count += num.Value); collection .ObserveRemove() .Subscribe(num => count -= num.Value); collection.Add(1); collection.Add(1); Assert.AreEqual(2, count, "Add呼び出し時にSubscribeが呼び出されて2"); collection.Remove(1); Assert.AreEqual(1, count, "removeが呼び出されて1"); }
public void SaveFileTest() { Graph <NavGraphNode, GraphEdge> graph = new Graph <NavGraphNode, GraphEdge>(); AddNodesAndEdgesToGraph(graph); string path = Application.streamingAssetsPath + "/testSaveFile.txt"; graph.SaveToFile(path); Graph <NavGraphNode, GraphEdge> loadedGraph = Graph <NavGraphNode, GraphEdge> .LoadGraphFromFile(path); Assert.AreEqual(graph.GetNodesQuantity(), loadedGraph.GetNodesQuantity()); for (int i = 0; i < graph.GetNodesQuantity(); i++) { CheckNodes(graph, loadedGraph, i); CheckEdges(graph, loadedGraph, i); } File.Delete(path); }
public void ErrorTest() { int counter = 0; bool error = false; var subject = new Subject <string>(); subject .Select(str => int.Parse(str)) .Subscribe( x => { Debug.Log(x); counter++; }, ex => { Debug.LogWarning("例外が発生しました:" + ex.Message); error = true; }, () => Debug.Log("OnCOmpleted")); subject.OnNext("1"); subject.OnNext("2"); // int.Parseに失敗して例外が発生する subject.OnNext("Three"); Assert.IsTrue(error, "エラーが発行されたのでカウンタが1"); // OnErrorメッセージ発生により購読は終了済み subject.OnNext("4"); Assert.AreNotEqual(counter, 3, "終了しているのでカウントされない"); // ただしSubject自体が例外出したわけじゃないのでSubjectは正常稼働中 // そのため再購読すれば利用ができる counter = 0; subject.Subscribe( x => { Debug.Log(x); counter = 1; }, () => Debug.Log("Completed")); subject.OnNext("Hellor"); subject.OnCompleted(); subject.Dispose(); Assert.AreEqual(1, counter, "再購読したらカウントが 1 になった"); }
public unsafe void RigidBodyCastColliderTest() { Physics.RigidBody rigidbody = Unity.Physics.RigidBody.Zero; const float size = 1.0f; const float convexRadius = 0.0f; const float sphereRadius = 1.0f; var rayStartOK = new float3(-10, -10, -10); var rayEndOK = new float3(10, 10, 10); var rayStartFail = new float3(-10, 10, -10); var rayEndFail = new float3(10, 10, 10); rigidbody.Collider = (Collider *)BoxCollider.Create(float3.zero, quaternion.identity, new float3(size), convexRadius).GetUnsafePtr(); var colliderCastInput = new ColliderCastInput(); var closestHit = new ColliderCastHit(); var allHits = new NativeList <ColliderCastHit>(Allocator.Temp); // OK case : Sphere hits the box collider float3 rayDir = rayEndOK - rayStartOK; colliderCastInput.Position = rayStartOK; colliderCastInput.Direction = rayDir; colliderCastInput.Collider = (Collider *)SphereCollider.Create(float3.zero, sphereRadius).GetUnsafePtr(); Assert.IsTrue(rigidbody.CastCollider(colliderCastInput)); Assert.IsTrue(rigidbody.CastCollider(colliderCastInput, out closestHit)); Assert.IsTrue(rigidbody.CastCollider(colliderCastInput, ref allHits)); // Fail case : wrong direction rayDir = rayEndFail - rayStartFail; colliderCastInput.Position = rayStartFail; colliderCastInput.Direction = rayDir; Assert.IsFalse(rigidbody.CastCollider(colliderCastInput)); Assert.IsFalse(rigidbody.CastCollider(colliderCastInput, out closestHit)); Assert.IsFalse(rigidbody.CastCollider(colliderCastInput, ref allHits)); }
public IEnumerator DisableObject() { var boundsControl = InstantiateSceneAndDefaultBoundsControl(); yield return(VerifyInitialBoundsCorrect(boundsControl)); Vector3 initialScale = boundsControl.transform.localScale; const int numHandSteps = 1; Vector3 initialHandPosition = new Vector3(0, 0, 0.5f); var frontRightCornerPos = boundsControl.gameObject.transform.Find("rigRoot/corner_3").position; // front right corner is corner 3 TestHand hand = new TestHand(Handedness.Right); // Hands grab object at initial position yield return(hand.Show(initialHandPosition)); yield return(hand.SetGesture(ArticulatedHandPose.GestureId.OpenSteadyGrabPoint)); yield return(hand.MoveTo(frontRightCornerPos, numHandSteps)); yield return(hand.SetGesture(ArticulatedHandPose.GestureId.Pinch)); // Verify that scale works before deactivating yield return(hand.Move(Vector3.right * 0.2f, numHandSteps)); Vector3 afterTransformScale = boundsControl.transform.localScale; Assert.AreNotEqual(initialScale, afterTransformScale); // Deactivate object and ensure that we don't scale boundsControl.gameObject.SetActive(false); yield return(null); boundsControl.gameObject.SetActive(true); yield return(hand.Move(Vector3.right * 0.2f, numHandSteps)); Assert.AreEqual(afterTransformScale, boundsControl.transform.localScale); }
public IEnumerator WhenAllTest() { int count = 0; bool isFinished = false; IEnumerator CoroutineA(IObserver <int> observer) { yield return(new WaitForSeconds(0.1f)); observer.OnNext(1); observer.OnCompleted(); } IEnumerator CoroutineB(IObserver <int> observer) { yield return(new WaitForSeconds(0.1f)); observer.OnNext(1); observer.OnCompleted(); } // コルーチンAとBを同時に起動して終了を待つ Observable.WhenAll( Observable.FromCoroutine <int>(o => CoroutineA(o)), Observable.FromCoroutine <int>(o => CoroutineB(o)) ).Subscribe(xi => { foreach (var x in xi) { count += x; } }, () => isFinished = true); yield return(new WaitUntil(() => isFinished)); Assert.AreEqual(2, count, "WhenAllで2つのコルーチンの終了処理をした。内部でOnNextが呼び出されたので2"); }
public IEnumerator ScaleViaNearInteration() { const int numSteps = 2; var bbox = InstantiateSceneAndDefaultBbox(); bbox.ScaleHandleSize = 0.1f; yield return(null); var bounds = bbox.GetComponent <BoxCollider>().bounds; Assert.AreEqual(new Vector3(0, 0, 1.5f), bounds.center); Assert.AreEqual(new Vector3(.5f, .5f, .5f), bounds.size); var inputSimulationService = PlayModeTestUtilities.GetInputSimulationService(); // front right corner is corner 3 var frontRightCornerPos = bbox.ScaleCorners[3].transform.position; TestHand rightHand = new TestHand(Handedness.Right); yield return(rightHand.Show(new Vector3(0, 0, 0.5f))); var delta = new Vector3(0.1f, 0.1f, 0f); yield return(rightHand.MoveTo(frontRightCornerPos, numSteps)); yield return(rightHand.SetGesture(ArticulatedHandPose.GestureId.Pinch)); yield return(rightHand.Move(delta, numSteps)); var endBounds = bbox.GetComponent <BoxCollider>().bounds; TestUtilities.AssertAboutEqual(endBounds.center, new Vector3(0.033f, 0.033f, 1.467f), "endBounds incorrect center"); TestUtilities.AssertAboutEqual(endBounds.size, Vector3.one * .567f, "endBounds incorrect size"); GameObject.Destroy(bbox.gameObject); // Wait for a frame to give Unity a change to actually destroy the object yield return(null); }
public void DisableFeatureSetDisabledFeatures() { OpenXRFeatureSetManager.InitializeFeatureSets(true); var extInfo = FeatureHelpersInternal.GetAllFeatureInfo(BuildTargetGroup.Standalone); foreach (var ext in extInfo.Features) { Assert.IsFalse(ext.Feature.enabled); } var foundFeatureSet = OpenXRFeatureSetManager.GetFeatureSetInfoWithId(BuildTargetGroup.Standalone, k_TestFeatureSetId); Assert.IsNotNull(foundFeatureSet); foundFeatureSet.isEnabled = true; foundFeatureSet.wasChanged = true; OpenXRFeatureSetManager.SetFeaturesFromEnabledFeatureSets(BuildTargetGroup.Standalone); foreach (var ext in extInfo.Features) { if (String.Compare(ext.Attribute.FeatureId, MicrosoftHandInteraction.featureId, true) == 0) { Assert.IsTrue(ext.Feature.enabled); } else { Assert.IsFalse(ext.Feature.enabled); } } foundFeatureSet.isEnabled = false; foundFeatureSet.wasChanged = true; OpenXRFeatureSetManager.SetFeaturesFromEnabledFeatureSets(BuildTargetGroup.Standalone); foreach (var ext in extInfo.Features) { Assert.IsFalse(ext.Feature.enabled); } }
public void FoundExpectedFeatureSets() { string[] expectedFeatuerSets = new string[] { k_TestFeatureSetId, KnownFeatureSetsContent.s_MicrosoftFeatureSetId, #if USE_MOCK_FEATURE_SET "com.unity.openxr.featureset.mockruntime", #endif //USE_MOCK_FEATURE_SET }; var featureSets = OpenXRFeatureSetManager.FeatureSetsForBuildTarget(BuildTargetGroup.Standalone); Assert.IsNotNull(featureSets); Assert.AreEqual(expectedFeatuerSets.Length, featureSets.Count); foreach (var featureSet in featureSets) { if (Array.IndexOf(expectedFeatuerSets, featureSet.featureSetId) == -1) { Assert.IsTrue(false, $"Found unexpected feature set id {featureSet.featureSetId}!"); } } }