public void ConditionRatingsData_ConstructsCorrectSizeArray_ForConditionCount() { AddOneOfEachConditionType(m_GameObject); m_GameObject.AddTestFloatCondition(); m_GameObject.AddTestFloatCondition(); m_GameObject.AddComponent <TestConditions.Pose>(); var ratings = new ConditionRatingsData(ProxyConditions.FromGenericIMRObject(m_ConditionsRoot)); Assert.AreEqual(10, ratings.totalConditionCount); Assert.AreEqual(3, ratings[typeof(float)].Count); Assert.AreEqual(2, ratings[typeof(Pose)].Count); Assert.AreEqual(1, ratings[typeof(bool)].Count); Assert.AreEqual(1, ratings[typeof(Vector2)].Count); Assert.AreEqual(1, ratings[typeof(Vector3)].Count); Assert.AreEqual(1, ratings[typeof(int)].Count); Assert.AreEqual(1, ratings[typeof(string)].Count); ratings[typeof(int)].AssertCollectionsCreated(); ratings[typeof(float)].AssertCollectionsCreated(); ratings[typeof(bool)].AssertCollectionsCreated(); ratings[typeof(Vector2)].AssertCollectionsCreated(); ratings[typeof(Vector3)].AssertCollectionsCreated(); ratings[typeof(string)].AssertCollectionsCreated(); ratings[typeof(Pose)].AssertCollectionsCreated(); }
internal static TryBestMatchArguments GetMatchArgs(this GameObject go, Exclusivity exclusivity = Exclusivity.ReadOnly) { var conditionsRoot = go.GetComponent <TestMRObject>(); var conditions = ProxyConditions.FromGenericIMRObject(conditionsRoot); return(new TryBestMatchArguments(conditions, exclusivity)); }
void SetupObject(GameObject go) { var rwo = go.AddComponent <Proxy>(); m_Conditions = ProxyConditions.FromGenericIMRObject(rwo); m_ConditionRatings = new ConditionRatingsData(m_Conditions); m_TraitCache = new CachedTraitCollection(m_Conditions); m_Db.FindTraitCollections(m_Conditions, m_TraitCache); }
static Relations MakeBaseSet(out SetQueryResult result, Dictionary <IMRObject, ChildMatchInfo> childrenExpectedMatchInfo) { var gameObject = new GameObject("Set"); gameObject.AddComponent <ProxyGroup>(); k_ToDestroy.Add(gameObject); // Make child MR objects and give them ordinary relations var children = new Dictionary <IMRObject, SetChildArgs>(); for (var i = 0; i < k_RelationCount + 1; ++i) { var childGameObject = new GameObject("Child" + i); k_ToDestroy.Add(childGameObject); childGameObject.transform.SetParent(gameObject.transform); var conditionsRoot = childGameObject.AddComponent <TestMRObject>(); var expectedMatchInfo = new ChildMatchInfo(); childrenExpectedMatchInfo[conditionsRoot] = expectedMatchInfo; var hasTraitCondition = childGameObject.AddComponent <SemanticTagCondition>(); hasTraitCondition.SetTraitName(k_CommonTrait); expectedMatchInfo.semanticTagTraits.Add(k_CommonTrait, true); var conditions = ProxyConditions.FromGenericIMRObject(conditionsRoot); var childArgs = new SetChildArgs(conditions); children[conditionsRoot] = childArgs; } // Make relations and store the expected trait values that will match them var childrenList = new List <IMRObject>(children.Keys); for (var i = 0; i < k_RelationCount; ++i) { var child1 = childrenList[i]; var child2 = childrenList[i + 1]; var floatRelation = gameObject.AddComponent <FloatRelation>(); floatRelation.Initialize(child1, child2, k_FloatTrait1, k_FloatTrait2); childrenExpectedMatchInfo[child1].floatTraits[floatRelation.child1TraitName] = i; childrenExpectedMatchInfo[child2].floatTraits[floatRelation.child2TraitName] = i + 1f; var vector2Relation = gameObject.AddComponent <Vector2Relation>(); vector2Relation.Initialize(child1, child2, k_Vector2Trait1, k_Vector2Trait2); childrenExpectedMatchInfo[child1].vector2Traits[vector2Relation.child1TraitName] = new Vector2(i, 0f); childrenExpectedMatchInfo[child2].vector2Traits[vector2Relation.child2TraitName] = new Vector2(i + 1f, 0f); } result = new SetQueryResult(QueryMatchID.Generate(), childrenList); var relations = new Relations(gameObject, children); s_SetArgs = new SetQueryArgs { relations = relations }; return(relations); }
ProxyConditions SetupExclusiveSemanticTagTest(int count) { var go = new GameObject("tag matching test"); var conditionsRoot = go.AddComponent <TestMRObject>(); AddSemanticTagCondition(go, TraitNames.Plane); AddSemanticTagCondition(go, k_ExcludedTrait, SemanticTagMatchRule.Exclude); AddSemanticTagToRange(0, TraitNames.Plane, true, count); var conditions = ProxyConditions.FromGenericIMRObject(conditionsRoot); Object.DestroyImmediate(go); return(conditions); }
[TestCase(0.05f, 0.06f, 0.08f, 0.1f, 0.05f, 0.1f)] // 4 near-failures public void GetRatingForId_ImplementsInversePowerReduction( float one, float two, float three, float four, // condition ratings float minBound, float maxBound) // expected boundaries { const int dataId = 3; var rwo = m_GameObject.AddComponent <Proxy>(); m_GameObject.AddTestFloatCondition(); m_GameObject.AddTestFloatCondition(); m_GameObject.AddTestVector2Condition(); m_GameObject.AddSemanticTagCondition(); var conditions = ProxyConditions.FromGenericIMRObject(rwo); var proposal = new ConditionRatingsData(conditions); proposal[typeof(float)][0].Add(dataId, one); proposal[typeof(float)][1].Add(dataId, two); proposal[typeof(Vector2)][0].Add(dataId, three); proposal[typeof(bool)][0].Add(dataId, four); AssertBetween(proposal.RatingForId(dataId), minBound, maxBound); }
public void DisabledConditionComponentsAreIgnored() { var go = new GameObject("ignored conditions test"); var conditionsRoot = go.AddComponent <TestMRObject>(); var tagCondition = go.AddComponent <SemanticTagCondition>(); var ignoredFloatCondition = go.AddComponent <FloatCondition>(); ignoredFloatCondition.enabled = false; var ignoredVector2Condition = go.AddComponent <Vector2Condition>(); ignoredVector2Condition.enabled = false; var newConditions = ProxyConditions.FromGenericIMRObject(conditionsRoot); Object.DestroyImmediate(go); newConditions.TryGetType(out ICondition <float>[] floatConditions); Assert.Zero(floatConditions.Length); newConditions.TryGetType(out ICondition <Vector2>[] vector2Conditions); Assert.Zero(vector2Conditions.Length); newConditions.TryGetType(out ISemanticTagCondition[] semanticTagConditions); Assert.AreEqual(1, semanticTagConditions.Length); }
public void Setup() { m_ConditionsGameObject = new GameObject("test conditions object"); var conditionsRoot = m_ConditionsGameObject.AddComponent <TestMRObject>(); for (var i = 0; i < k_ConditionsPerType; ++i) { var tagCondition = m_ConditionsGameObject.AddComponent <TestSemanticTagCondition>(); tagCondition.Initialize(i); var floatCondition = m_ConditionsGameObject.AddComponent <FloatCondition>(); floatCondition.Initialize(i); var vector2Condition = m_ConditionsGameObject.AddComponent <Vector2Condition>(); vector2Condition.Initialize(i); } m_Conditions = ProxyConditions.FromGenericIMRObject(conditionsRoot); m_QueryMatchId = QueryMatchID.Generate(); m_FloatProvider = new MARSDataProvider <float>(); m_FloatUser = new TestMarsDataUser <float>(); }