| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- using qdr.fnd.core.test.Object.Fake;
- using Quadarax.Foundation.Core.Object.Dynamic;
- namespace qdr.fnd.core.test.Object
- {
- class DynaTests
- {
- private const string PROP_A = "A";
- private const string PROP_B = "B";
- [Test(TestOf = typeof(Dyna))]
- public void DynaConstructorsCollectionOk()
- {
- var props = CreateProperties();
- var dyna = new Dyna(CreateProperties());
- Assert.That(dyna.Properties.Length, Is.EqualTo(props.Count()));
- }
- [Test(TestOf = typeof(Dyna))]
- public void DynaConstructorsTypeOk()
- {
- var dyna = new Dyna(typeof(IDinaFake));
- Assert.That(dyna.Properties.Length, Is.EqualTo(2));
- }
- [Test(TestOf = typeof(Dyna))]
- public void DynaSetGetPropertyStringOk()
- {
- var props = CreateProperties();
- var dyna = new Dyna(CreateProperties());
- dyna[PROP_A] = PROP_A;
- Assert.That(dyna.GetValue<string>(PROP_A), Is.EqualTo(PROP_A));
- Assert.That(dyna.GetValue<int?>(PROP_B), Is.EqualTo(null));
- }
- [Test(TestOf = typeof(Dyna))]
- public void DynaSetGetPropertyStringFail()
- {
- var props = CreateProperties();
- var dyna = new Dyna(CreateProperties());
- // ReSharper disable once ObjectCreationAsStatement
- Assert.Throws<ArgumentOutOfRangeException>(() => dyna[PROP_A + PROP_B] = PROP_A);
- }
- [Test(TestOf = typeof(Dyna))]
- public void DynaClearOk()
- {
- var props = CreateProperties();
- var dyna = new Dyna(CreateProperties());
- dyna[PROP_A] = PROP_A;
- Assert.That(dyna.GetValue<string>(PROP_A), Is.EqualTo(PROP_A));
- dyna.Clear();
- Assert.That(dyna.GetValue<int?>(PROP_A), Is.EqualTo(null));
- }
- [Test(TestOf = typeof(Dyna))]
- public void DynaTrackingOk()
- {
- var props = CreateProperties();
- var dyna = new Dyna(CreateProperties());
- dyna[PROP_A] = PROP_A;
- Assert.That(dyna.ChangedProperties.Length, Is.EqualTo(1));
- Assert.That(dyna.ChangedProperties.First(), Is.EqualTo(PROP_A));
- dyna[PROP_A] = null;
- Assert.That(dyna.ChangedProperties.Length, Is.EqualTo(0));
- dyna[PROP_A] = PROP_A;
- dyna[PROP_A] = PROP_B;
- Assert.That(dyna.ChangedProperties.Length, Is.EqualTo(1));
- Assert.That(dyna.ChangedProperties.First(), Is.EqualTo(PROP_A));
- dyna[PROP_A] = PROP_A;
- dyna.TrackChanges();
- Assert.That(dyna.ChangedProperties.Length, Is.EqualTo(0));
- dyna[PROP_A] = PROP_B;
- dyna[PROP_A] = PROP_A;
- Assert.That(dyna.ChangedProperties.Length, Is.EqualTo(0));
- dyna.Clear();
- Assert.That(dyna.ChangedProperties.Length, Is.EqualTo(0));
- }
- [Test(TestOf = typeof(Dyna))]
- public void DynaCloneOk()
- {
- var props = CreateProperties();
- var dynaSrc = new Dyna(CreateProperties());
- dynaSrc[PROP_A] = PROP_A;
- dynaSrc[PROP_B] = PROP_B;
- var dynaClone = dynaSrc.Clone() as Dyna;
- Assert.That(dynaClone.ChangedProperties.Length, Is.EqualTo(0));
- Assert.That(dynaClone[PROP_A], Is.EqualTo(PROP_A));
- Assert.That(dynaClone[PROP_B], Is.EqualTo(PROP_B));
- Assert.That(dynaClone.IsEquals(dynaSrc), Is.True);
- }
- [Test(TestOf = typeof(Dyna))]
- public void DynaCopyToOk()
- {
- var props = CreateProperties();
- var dynaSrc = new Dyna(CreateProperties());
- dynaSrc[PROP_A] = PROP_A;
- dynaSrc[PROP_B] = PROP_B;
- var dynaClone = new Dyna(CreateProperties());
- dynaClone[PROP_A] = PROP_B;
- dynaClone[PROP_B] = PROP_A;
- dynaClone.CopyTo(dynaSrc);
- Assert.That(dynaClone[PROP_A], Is.EqualTo(PROP_B));
- Assert.That(dynaClone[PROP_B], Is.EqualTo(PROP_A));
- Assert.That(dynaClone.IsSame(dynaSrc), Is.True);
- }
- private IEnumerable<Dyna.DynaProperty> CreateProperties()
- {
- var proCol = new List<Dyna.DynaProperty>();
- proCol.Add(new Dyna.DynaProperty(PROP_A, typeof(string), DynaPropertyAccessability.Public, DynaPropertyAccessability.Public));
- proCol.Add(new Dyna.DynaProperty(PROP_B, typeof(int), DynaPropertyAccessability.Public, DynaPropertyAccessability.Public));
- return proCol;
- }
- }
- }
|