public void CanSetTheValueContainedByAReferenceToAString()
        {
            var reference = new ValueReferenceDefinitionBuilder().WithStartingValue("oldString").Build().CreateValueReference(engine);

            reference.Set("newString");
            Assert.AreEqual(reference.ValueAsString(), "newString");
        }
        public void TheStateOfAValueReferenceContainingANumerCanBeSaved()
        {
            var reference  = new ValueReferenceDefinitionBuilder().WithStartingValue(new BigDouble(100)).Build().CreateValueReference(engine);
            var serialized = reference.GetSnapshot();

            Assert.AreEqual(new ValueReference.Snapshot("1", new BigDouble(100)), serialized);
        }
        public void CanSetTheValueContainedByAReferenceToABool()
        {
            var reference = new ValueReferenceDefinitionBuilder().WithStartingValue(true).Build().CreateValueReference(engine);

            reference.Set(false);
            Assert.IsFalse(reference.ValueAsBool());
        }
        public void TheStateOfAValueReferenceContainingADictionaryCanBeSaved()
        {
            var reference  = new ValueReferenceDefinitionBuilder().WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine);
            var serialized = reference.GetSnapshot();

            Assert.AreEqual(serialized, new ValueReference.Snapshot("1", new Dictionary <string, ValueReference.Snapshot>()));
        }
        public void TheStateOfAValueReferenceContainingAStringCanBeRecursivelySaved()
        {
            var reference = new ValueReferenceDefinitionBuilder().WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()
            {
                { "string", "aString" },
                { "number", new BigDouble(100) },
                { "bool", true },
                { "map", new Dictionary <string, ValueReferenceDefinition>()
                  {
                      { "nestedString", "string" },
                      { "nestedNumber", new BigDouble(10) },
                      { "nestedBool", true }
                  } }
            }).Build().CreateValueReference(engine);
            var serialized = reference.GetSnapshot();

            Assert.AreEqual(new Dictionary <string, ValueReference.Snapshot>()
            {
                { "string", new ValueReference.Snapshot("1", "aString") },
                { "number", new ValueReference.Snapshot("2", new BigDouble(100)) },
                { "bool", new ValueReference.Snapshot("3", true) },
                {
                    "map", new ValueReference.Snapshot("7", new Dictionary <string, ValueReference.Snapshot>()
                    {
                        { "nestedString", new ValueReference.Snapshot("4", "string") },
                        { "nestedNumber", new ValueReference.Snapshot("5", new BigDouble(10)) },
                        { "nestedBool", new ValueReference.Snapshot("6", true) }
                    })
                }
            }, serialized.value);
            Assert.AreEqual(serialized.internalId, reference.Id);
        }
        public void TheStateOfAValueReferenceCanBeRestoredFromABooleanSnapshot()
        {
            var reference = new ValueReferenceDefinitionBuilder().Build().CreateValueReference(engine);

            reference.RestoreFromSnapshot(engine, new ValueReference.Snapshot("1", true));
            Assert.AreEqual(true, reference.ValueAsBool());
        }
        public void TheStateOfAValueReferenceCanBeRestoredFromANumberSnapshot()
        {
            var reference = new ValueReferenceDefinitionBuilder().Build().CreateValueReference(engine);

            reference.RestoreFromSnapshot(engine, new ValueReference.Snapshot("1", new BigDouble(11)));
            Assert.AreEqual(new BigDouble(11), reference.ValueAsNumber());
        }
        public void CanSetTheValueContainedByAReferenceToANumber()
        {
            var reference = new ValueReferenceDefinitionBuilder().WithStartingValue(BigDouble.One).Build().CreateValueReference(engine);

            reference.Set(new BigDouble(2));
            Assert.AreEqual(reference.ValueAsNumber(), new BigDouble(2));
        }
        public void TheStateOfAValueReferenceCanBeRestoredFromAMapSnapshot()
        {
            var reference = new ValueReferenceDefinitionBuilder().Build().CreateValueReference(engine);

            reference.RestoreFromSnapshot(engine, new ValueReference.Snapshot("1", new Dictionary <string, ValueReference.Snapshot>()));
            Assert.AreEqual(new Dictionary <string, ValueReference>(), reference.ValueAsMap());
        }
        public void TheStateOfAValueReferenceContainingAStringCanBeSaved()
        {
            var reference  = new ValueReferenceDefinitionBuilder().WithStartingValue("astring").Build().CreateValueReference(engine);
            var serialized = reference.GetSnapshot();

            Assert.AreEqual(serialized.value, "astring");
            Assert.AreEqual(serialized.internalId, reference.Id);
        }
        public void CanSetTheValueContainedByAReferenceToAMap()
        {
            var initialDictionary = new Dictionary <string, ValueReferenceDefinition>();
            var reference         = new ValueReferenceDefinitionBuilder().WithStartingValue(initialDictionary).Build().CreateValueReference(engine);
            var newDictionary     = new Dictionary <string, ValueReference>();

            reference.Set(newDictionary);
            Assert.AreEqual(reference.ValueAsMap(), newDictionary);
        }
        public void ValueReferenceEqualsComparesUnderlyingValue()
        {
            var ref1 = new ValueReferenceDefinitionBuilder().WithStartingValue(true).Build().CreateValueReference(engine);
            var ref2 = new ValueReferenceDefinitionBuilder().WithStartingValue(true).Build().CreateValueReference(engine);

            Assert.AreEqual(ref1, ref2);
            var ref3 = new ValueReferenceDefinitionBuilder().WithStartingValue("true").Build().CreateValueReference(engine);

            Assert.AreNotEqual(ref1, ref3);
        }
Beispiel #13
0
        public void InstatiatesWithDefaultValueIfNonDefined()
        {
            var definition   = new ValueReferenceDefinitionBuilder().Build();
            var instantiated = definition.CreateValueReference(engine);

            Assert.AreEqual(BigDouble.Zero, instantiated.ValueAsNumber());
            Assert.AreEqual(false, instantiated.ValueAsBool());
            Assert.AreEqual(null, instantiated.ValueAsMap());
            Assert.AreEqual("0", instantiated.ValueAsString());
        }
        public void RawValueReturnsActualValue()
        {
            var booleanReference = new ValueReferenceDefinitionBuilder().WithStartingValue(true).Build().CreateValueReference(engine);
            var numberReference  = new ValueReferenceDefinitionBuilder().WithStartingValue(BigDouble.One).Build().CreateValueReference(engine);
            var stringReference  = new ValueReferenceDefinitionBuilder().WithStartingValue("string").Build().CreateValueReference(engine);
            var mapReference     = new ValueReferenceDefinitionBuilder().WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine);

            Assert.AreEqual(true, booleanReference.ValueAsRaw());
            Assert.AreEqual(BigDouble.One, numberReference.ValueAsRaw());
            Assert.AreEqual("string", stringReference.ValueAsRaw());
            Assert.AreEqual(new Dictionary <string, ValueReference>(), mapReference.ValueAsRaw());
        }
        public void CanWatchANonExistantKeyInAMap()
        {
            var mapReference = new ValueReferenceDefinitionBuilder()
                               .WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine);
            var fooReference        = mapReference.ValueAsMap()["foo"];
            var watchListenerCalled = false;

            fooReference.Watch(newFoo =>
            {
                watchListenerCalled = true;
            });
            Assert.IsTrue(watchListenerCalled);
        }
Beispiel #16
0
        public void CanDefineAnUpdaterAction()
        {
            var definition = new ValueReferenceDefinitionBuilder()
                             .WithUpdater((engine, parent, deltaTime, previousValue) => {
                return((BigDouble)previousValue + BigDouble.One);
            })
                             .Build();
            var instantiated = definition.CreateValueReference(engine);

            Assert.AreEqual(BigDouble.Zero, instantiated.ValueAsNumber());
            instantiated.Update(engine, 1f);
            Assert.AreEqual(BigDouble.One, instantiated.ValueAsNumber());
        }
Beispiel #17
0
        public void CanDefineAPostUpdateHook()
        {
            bool hookCalled = false;
            Action <IdleEngine, float, object> hook = (engine, deltaTime, newValue) =>
            {
                hookCalled = true;
            };
            ValueReference reference = new ValueReferenceDefinitionBuilder()
                                       .WithPostUpdateHook(hook)
                                       .Build().CreateValueReference(engine);

            reference.Update(engine, 0);

            Assert.IsTrue(hookCalled);
        }
        public void AssigningAValueInAMapUpdatesTheParent()
        {
            var mapReference = new ValueReferenceDefinitionBuilder()
                               .WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine);
            var map = mapReference.ValueAsMap();
            int watchListenerCalled = 0;

            mapReference.Watch(updatedMap =>
            {
                watchListenerCalled++;
            });

            map["foo"].Set(BigDouble.One);
            Assert.AreEqual(3, watchListenerCalled);
        }
        public void WatchListenerReceivesMapValueWhenChildUpdates()
        {
            var mapReference = new ValueReferenceDefinitionBuilder()
                               .WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine);
            var map = mapReference.ValueAsMap();
            int watchListenerCalled = 0;

            mapReference.Watch(updatedMap =>
            {
                Assert.IsNotNull(updatedMap as IDictionary <string, ValueReference>);
                watchListenerCalled++;
            });

            map["foo"].Set(BigDouble.One);
            Assert.AreEqual(3, watchListenerCalled);
        }
        public void ToStringDescribesContents()
        {
            var mapReference = new ValueReferenceDefinitionBuilder().WithStartingValue(new Dictionary <string, ValueReferenceDefinition>()).Build().CreateValueReference(engine);

            Assert.AreEqual("Reference(containing map)", mapReference.ToString());

            var stringReference = new ValueReferenceDefinitionBuilder().WithStartingValue("string").Build().CreateValueReference(engine);

            Assert.AreEqual("Reference(containing string)", stringReference.ToString());

            var boolReference = new ValueReferenceDefinitionBuilder().WithStartingValue(true).Build().CreateValueReference(engine);

            Assert.AreEqual("Reference(containing boolean)", boolReference.ToString());

            var numberReference = new ValueReferenceDefinitionBuilder().WithStartingValue(BigDouble.One).Build().CreateValueReference(engine);

            Assert.AreEqual("Reference(containing number)", numberReference.ToString());
        }
        public void ChangingValueOfWatchedValueNotifiesListeners()
        {
            var valueReference = new ValueReferenceDefinitionBuilder().Build().CreateValueReference(engine);
            int calls          = 0;

            valueReference.Watch(newValue =>
            {
                calls++;
                if (calls == 1)
                {
                    Assert.AreEqual(BigDouble.Zero, newValue);
                }
                else
                {
                    Assert.AreEqual(BigDouble.One, newValue);
                }
            });
            valueReference.Set(BigDouble.One);
            Assert.AreEqual(2, calls);
        }
        public void WatchingForChangesReceivesCurrentValueImmediately()
        {
            var valueReference = new ValueReferenceDefinitionBuilder().Build().CreateValueReference(engine);

            valueReference.Watch(newValue => Assert.AreEqual(BigDouble.Zero, newValue));
        }
        public void EqualsComparingValueReferenceToAnyOtherTypeAlwaysFalse()
        {
            var ref1 = new ValueReferenceDefinitionBuilder().WithStartingValue(true).Build().CreateValueReference(engine);

            Assert.AreNotEqual(ref1, new Dictionary <string, string>());
        }