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();
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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>();
        }