Ejemplo n.º 1
0
        public void TryUpdateQueryMatchData_ReturnsUpdatedData()
        {
            var updatedFloats   = new float[k_ConditionsPerType];
            var updatedVector2s = new Vector2[k_ConditionsPerType];

            for (var i = 0; i < k_ConditionsPerType; ++i)
            {
                var updatedFloat   = MatchingFloatForIndex(i) + 1;
                var updatedVector2 = MatchingVector2ForIndex(i) + Vector2.right;

                updatedFloats[i]   = updatedFloat;
                updatedVector2s[i] = updatedVector2;

                m_Db.GetTraitProvider(out MARSTraitDataProvider <float> floatTraits);
                m_FloatTraitProvider.AddOrUpdateTrait(k_DataID, TraitNameForIndex <float>(i), updatedFloat);

                m_Db.GetTraitProvider(out MARSTraitDataProvider <bool> semanticTagTraits);
                semanticTagTraits.AddOrUpdateTrait(k_DataID, TraitNameForIndex(i), true);

                m_Db.GetTraitProvider(out MARSTraitDataProvider <Vector2> vector2Traits);
                vector2Traits.AddOrUpdateTrait(k_DataID, TraitNameForIndex <Vector2>(i), updatedVector2);
            }

            Assert.True(m_Db.TryUpdateQueryMatchData(k_DataID, m_Conditions, m_EmptyTraitRequirements, m_QueryResult));
            for (var i = 0; i < k_ConditionsPerType; ++i)
            {
                var tagTraitName = TraitNameForIndex(i);
                Assert.True(m_QueryResult.TryGetTrait(tagTraitName, out bool tagValue));

                var floatTraitName = TraitNameForIndex <float>(i);
                Assert.True(m_QueryResult.TryGetTrait(floatTraitName, out float floatValue));
                Assert.AreEqual(updatedFloats[i], floatValue, Mathf.Epsilon);

                var vector2TraitName = TraitNameForIndex <Vector2>(i);
                Assert.True(m_QueryResult.TryGetTrait(vector2TraitName, out Vector2 vector2Value));
                Assert.AreEqual(updatedVector2s[i], vector2Value);
            }
        }