public void EventChangedRemoveTest()
        {
            // Arrange
            _currencies.Add(_gold, 10f);
            int callCount = 0;
            CurrencyChangedResult <double> eventResult = null;

            _currencies.OnCurrencyChanged += (sender, result) =>
            {
                eventResult = result;
                callCount++;
            };

            // Act
            var remove = _currencies.Remove(_gold, 2);

            // Assert
            Assert.IsNull(remove.error);
            Assert.IsTrue(remove.result);

            Assert.AreEqual(1, callCount);
            Assert.AreEqual(_gold, eventResult.currency);
            Assert.AreEqual(10f, eventResult.amountBefore);
            Assert.AreEqual(8f, eventResult.amountAfter);
        }
 private void OnCurrencyChanged(object sender, CurrencyChangedResult <double> currencyChangedResult)
 {
     for (var i = 0; i < _repaintCurrencies.Length; i++)
     {
         if (_repaintCurrencies[i].Equals(currencyChangedResult.currency))
         {
             RepaintOrQueue(i);
             return;
         }
     }
 }
        public void EventChangedSetTest()
        {
            // Arrange
            _currencies.Add(_gold, 10f);
            int callCount = 0;
            CurrencyChangedResult <double> eventResult = null;

            _currencies.OnCurrencyChanged += (sender, result) =>
            {
                eventResult = result;
                callCount++;
            };

            // Act
            _currencies.Set(_gold, 2f);

            // Assert
            Assert.AreEqual(1, callCount);
            Assert.AreEqual(_gold, eventResult.currency);
            Assert.AreEqual(10f, eventResult.amountBefore);
            Assert.AreEqual(2f, eventResult.amountAfter);
        }
        public void EventClearTest()
        {
            // Arrange
            _currencies.Set(_gold, 10f);
            _currencies.Set(_silver, 5f);

            int callCount = 0;
            CurrencyChangedResult <double> eventResult1 = null;
            CurrencyChangedResult <double> eventResult2 = null;

            _currencies.OnCurrencyChanged += (sender, result) =>
            {
                if (eventResult1 == null)
                {
                    eventResult1 = result;
                }
                else
                {
                    eventResult2 = result;
                }

                callCount++;
            };

            // Act
            _currencies.Clear();

            // Assert
            Assert.AreEqual(2, callCount);
            Assert.AreEqual(_gold, eventResult1.currency);
            Assert.AreEqual(10f, eventResult1.amountBefore);
            Assert.AreEqual(0f, eventResult1.amountAfter);

            Assert.AreEqual(_silver, eventResult2.currency);
            Assert.AreEqual(5f, eventResult2.amountBefore);
            Assert.AreEqual(0f, eventResult2.amountAfter);
        }