Exemplo n.º 1
0
        public void RealmValue_WhenManaged_BoolNotificationTests(int intValue, bool boolValue)
        {
            var notifiedPropertyNames = new List <string>();

            var handler = new PropertyChangedEventHandler((sender, e) =>
            {
                notifiedPropertyNames.Add(e.PropertyName);
            });

            var rvo = new RealmValueObject();

            _realm.Write(() =>
            {
                _realm.Add(rvo);
            });

            rvo.PropertyChanged += handler;

            _realm.Write(() =>
            {
                rvo.RealmValueProperty = intValue;
            });

            _realm.Refresh();

            Assert.That(notifiedPropertyNames, Is.EquivalentTo(new[] { nameof(RealmValueObject.RealmValueProperty) }));

            _realm.Write(() =>
            {
                rvo.RealmValueProperty = boolValue;
            });

            _realm.Refresh();

            Assert.That(notifiedPropertyNames, Is.EquivalentTo(new[]
            {
                nameof(RealmValueObject.RealmValueProperty),
                nameof(RealmValueObject.RealmValueProperty)
            }));

            _realm.Write(() =>
            {
                rvo.RealmValueProperty = intValue;
            });

            _realm.Refresh();

            Assert.That(notifiedPropertyNames, Is.EquivalentTo(new[]
            {
                nameof(RealmValueObject.RealmValueProperty),
                nameof(RealmValueObject.RealmValueProperty),
                nameof(RealmValueObject.RealmValueProperty)
            }));
        }
Exemplo n.º 2
0
        public void Query_Filter()
        {
            var rvo1 = new RealmValueObject {
                Id = 1, RealmValueProperty = 11
            };
            var rvo2 = new RealmValueObject {
                Id = 2, RealmValueProperty = 15.0f
            };
            var rvo3 = new RealmValueObject {
                Id = 3, RealmValueProperty = 15.0d
            };
            var rvo4 = new RealmValueObject {
                Id = 4, RealmValueProperty = 31.0m
            };
            var rvo5 = new RealmValueObject {
                Id = 5, RealmValueProperty = DateTimeOffset.Now.AddDays(-1)
            };
            var rvo6 = new RealmValueObject {
                Id = 6, RealmValueProperty = DateTimeOffset.Now.AddDays(1)
            };
            var rvo7 = new RealmValueObject {
                Id = 7, RealmValueProperty = "42"
            };

            _realm.Write(() =>
            {
                _realm.Add(new[] { rvo1, rvo2, rvo3, rvo4, rvo5, rvo6, rvo7 });
            });

            var f1 = _realm.All <RealmValueObject>().Filter("RealmValueProperty > 20").OrderBy(r => r.Id).ToList();

            Assert.That(f1, Is.EquivalentTo(new[] { rvo4 }));

            var f2 = _realm.All <RealmValueObject>().Filter("RealmValueProperty < 20").OrderBy(r => r.Id).ToList();

            Assert.That(f2, Is.EquivalentTo(new[] { rvo1, rvo2, rvo3 }));

            var f3 = _realm.All <RealmValueObject>().Filter("RealmValueProperty >= 15").OrderBy(r => r.Id).ToList();

            Assert.That(f3, Is.EquivalentTo(new[] { rvo2, rvo3, rvo4 }));

            var f4 = _realm.All <RealmValueObject>().Filter("RealmValueProperty <= 15").OrderBy(r => r.Id).ToList();

            Assert.That(f4, Is.EquivalentTo(new[] { rvo1, rvo2, rvo3 }));

            var f5 = _realm.All <RealmValueObject>().Filter("RealmValueProperty < $0", DateTimeOffset.Now).OrderBy(r => r.Id).ToList();

            Assert.That(f5, Is.EquivalentTo(new[] { rvo5 }));

            var f6 = _realm.All <RealmValueObject>().Filter("RealmValueProperty > $0", DateTimeOffset.Now).OrderBy(r => r.Id).ToList();

            Assert.That(f6, Is.EquivalentTo(new[] { rvo6 }));
        }
Exemplo n.º 3
0
        public void RealmValue_WhenUnmanaged_ObjectType()
        {
            RealmValue rv = new InternalObject {
                IntProperty = 10, StringProperty = "brown"
            };
            var managedObject = new RealmValueObject {
                RealmValueProperty = rv
            };

            Assert.That(managedObject.RealmValueProperty.ObjectType, Is.EqualTo(nameof(InternalObject)));

            managedObject.RealmValueProperty = "string";

            Assert.That(managedObject.RealmValueProperty.ObjectType, Is.Null);
        }
Exemplo n.º 4
0
        public void RealmValue_Reference_IsChangedCorrectly()
        {
            var rvo = new RealmValueObject();

            rvo.RealmValueProperty = 10;

            _realm.Write(() =>
            {
                _realm.Add(rvo);
            });

            var savedValue = rvo.RealmValueProperty;

            _realm.Write(() =>
            {
                rvo.RealmValueProperty = "abc";
            });

            Assert.That(rvo.RealmValueProperty != savedValue);
            Assert.That(savedValue == 10);
        }
Exemplo n.º 5
0
        public void RealmValue_WhenManaged_CanChangeType()
        {
            var rvo = new RealmValueObject();

            rvo.RealmValueProperty = 10;

            _realm.Write(() =>
            {
                _realm.Add(rvo);
            });

            Assert.That(rvo.RealmValueProperty == 10);

            _realm.Write(() =>
            {
                rvo.RealmValueProperty = "abc";
            });

            Assert.That(rvo.RealmValueProperty == "abc");

            var guidValue = Guid.NewGuid();

            _realm.Write(() =>
            {
                rvo.RealmValueProperty = guidValue;
            });

            Assert.That(rvo.RealmValueProperty == guidValue);

            _realm.Write(() =>
            {
                rvo.RealmValueProperty = RealmValue.Null;
            });

            Assert.That(rvo.RealmValueProperty == RealmValue.Null);
        }
Exemplo n.º 6
0
        public void Query_Numeric()
        {
            var rvo1 = new RealmValueObject {
                Id = 1, RealmValueProperty = 1
            };
            var rvo2 = new RealmValueObject {
                Id = 2, RealmValueProperty = 1.0f
            };
            var rvo3 = new RealmValueObject {
                Id = 3, RealmValueProperty = 1.0d
            };
            var rvo4 = new RealmValueObject {
                Id = 4, RealmValueProperty = 1.0m
            };
            var rvo5 = new RealmValueObject {
                Id = 5, RealmValueProperty = 1.1
            };
            var rvo6 = new RealmValueObject {
                Id = 6, RealmValueProperty = true
            };
            var rvo7 = new RealmValueObject {
                Id = 7, RealmValueProperty = "1"
            };

            _realm.Write(() =>
            {
                _realm.Add(new[] { rvo1, rvo2, rvo3, rvo4, rvo5, rvo6, rvo7 });
            });

            // Numeric values are converted when possible
            var n1 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty == 1).OrderBy(r => r.Id).ToList();
            var n2 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty == 1.0f).OrderBy(r => r.Id).ToList();
            var n3 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty == 1.0d).OrderBy(r => r.Id).ToList();
            var n4 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty == 1.0m).OrderBy(r => r.Id).ToList();
            var n5 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty == 1.1d).OrderBy(r => r.Id).ToList();

            Assert.That(n1, Is.EquivalentTo(n2));
            Assert.That(n1, Is.EquivalentTo(n3));
            Assert.That(n1, Is.EquivalentTo(n4));
            Assert.That(n1, Is.EquivalentTo(new[] { rvo1, rvo2, rvo3, rvo4 }));
            Assert.That(n1, Is.Not.EquivalentTo(n5));
            Assert.That(n5, Is.EquivalentTo(new[] { rvo5 }));

            // Bool values are not compared with numbers
            var b1 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty == true).OrderBy(r => r.Id).ToList();

            Assert.That(b1, Is.EquivalentTo(new List <RealmValueObject> {
                rvo6
            }));

            // String values are not compared with numbers
            var s1 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty == "1").OrderBy(r => r.Id).ToList();

            Assert.That(s1, Is.EquivalentTo(new List <RealmValueObject> {
                rvo7
            }));

            // Types are correctly assessed
            var t1 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty.Type == RealmValueType.Int).OrderBy(r => r.Id).ToList();
            var t2 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty.Type == RealmValueType.Float).OrderBy(r => r.Id).ToList();
            var t3 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty.Type == RealmValueType.Double).OrderBy(r => r.Id).ToList();
            var t4 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty.Type == RealmValueType.Decimal128).OrderBy(r => r.Id).ToList();
            var t5 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty.Type == RealmValueType.Bool).OrderBy(r => r.Id).ToList();
            var t6 = _realm.All <RealmValueObject>().Where(r => r.RealmValueProperty.Type == RealmValueType.String).OrderBy(r => r.Id).ToList();

            var f1 = _realm.All <RealmValueObject>().Filter("RealmValueProperty.@type == 'int'").OrderBy(r => r.Id).ToList();
            var f2 = _realm.All <RealmValueObject>().Filter("RealmValueProperty.@type == 'float'").OrderBy(r => r.Id).ToList();
            var f3 = _realm.All <RealmValueObject>().Filter("RealmValueProperty.@type == 'double'").OrderBy(r => r.Id).ToList();
            var f4 = _realm.All <RealmValueObject>().Filter("RealmValueProperty.@type == 'decimal'").OrderBy(r => r.Id).ToList();
            var f5 = _realm.All <RealmValueObject>().Filter("RealmValueProperty.@type == 'bool'").OrderBy(r => r.Id).ToList();
            var f6 = _realm.All <RealmValueObject>().Filter("RealmValueProperty.@type == 'string'").OrderBy(r => r.Id).ToList();

            Assert.That(t1, Is.EquivalentTo(new[] { rvo1 }));
            Assert.That(t2, Is.EquivalentTo(new[] { rvo2 }));
            Assert.That(t3, Is.EquivalentTo(new[] { rvo3, rvo5 }));
            Assert.That(t4, Is.EquivalentTo(new[] { rvo4 }));
            Assert.That(t5, Is.EquivalentTo(new[] { rvo6 }));
            Assert.That(t6, Is.EquivalentTo(new[] { rvo7 }));

            Assert.That(f1, Is.EquivalentTo(t1));
            Assert.That(f2, Is.EquivalentTo(t2));
            Assert.That(f3, Is.EquivalentTo(t3));
            Assert.That(f4, Is.EquivalentTo(t4));
            Assert.That(f5, Is.EquivalentTo(t5));
            Assert.That(f6, Is.EquivalentTo(t6));
        }