public void UpdatePrimitiveList()
        {
            // Arrange
            var defaultSerialization = new DefaultSerialization {
                FormatProvider = new CultureInfo("en-US")
            };

            var dummy = new ListDummy
            {
                Number     = 0,
                DoubleList = new List <double> {
                    1.7, 2.5, 3
                },
                EnumList = new List <DummyEnum> {
                    DummyEnum.ValueA, DummyEnum.Unset, DummyEnum.ValueB
                }
            };

            var encoded = EntryConvert.EncodeObject(dummy, defaultSerialization);
            var ent     = encoded.SubEntries[1];
            var ent2    = encoded.SubEntries[2];

            // Act
            encoded.SubEntries[0].Value.Current = "5";
            ent.SubEntries[1].Value.Current     = 12.34d.ToString(defaultSerialization.FormatProvider);
            var newInstance = ent.Prototypes[0].Instantiate();

            newInstance.Value.Current = 133.7d.ToString(defaultSerialization.FormatProvider);
            ent.SubEntries.Add(newInstance);

            ent2.SubEntries[1].Value.Current = "ValueB";
            newInstance = ent2.Prototypes[0].Instantiate();
            newInstance.Value.Current = "ValueA";
            ent2.SubEntries.Add(newInstance);

            EntryConvert.UpdateInstance(dummy, encoded, defaultSerialization);

            // Assert
            Assert.AreEqual(5, dummy.Number);
            Assert.AreEqual(4, dummy.DoubleList.Count);
            Assert.AreEqual(1.7, dummy.DoubleList[0]);
            Assert.AreEqual(12.34, dummy.DoubleList[1]);
            Assert.AreEqual(3.0, dummy.DoubleList[2]);
            Assert.AreEqual(133.7, dummy.DoubleList[3]);

            Assert.AreEqual(4, dummy.EnumList.Count);
            Assert.AreEqual(DummyEnum.ValueA, dummy.EnumList[0]);
            Assert.AreEqual(DummyEnum.ValueB, dummy.EnumList[1]);
            Assert.AreEqual(DummyEnum.ValueB, dummy.EnumList[2]);
            Assert.AreEqual(DummyEnum.ValueA, dummy.EnumList[3]);
        }
        public void EncodeReadonlyCollection()
        {
            // Arrange
            var dummy = new ListDummy();

            // Act
            var encoded = EntryConvert.EncodeObject(dummy);

            // Assert
            var readList = encoded.SubEntries[3];

            Assert.AreEqual(1, readList.SubEntries.Count);
            Assert.IsTrue(readList.Value.IsReadOnly);
            Assert.IsEmpty(readList.Prototypes);
        }