예제 #1
0
        public void Set_WhenObjectIsManaged_ShouldWork()
        {
            var container   = new ContainerObject();
            var objectToSet = new IntPropertyObject
            {
                Int = 42
            };

            _realm.Write(() =>
            {
                _realm.Add(container);
                container.Items.Add(new IntPropertyObject
                {
                    Int = -1
                });

                _realm.Add(objectToSet);
            });

            _realm.Write(() => container.Items[0] = objectToSet);

            Assert.That(container.Items.Count, Is.EqualTo(1));
            Assert.That(container.Items[0], Is.EqualTo(objectToSet));
            Assert.That(container.Items[0].Int, Is.EqualTo(42));
        }
예제 #2
0
        public void ThreadSafeReference_WhenObjectIsDeleted_ShouldFail()
        {
            var obj = new IntPropertyObject();

            _realm.Write(() => _realm.Add(obj));
            _realm.Write(() => _realm.Remove(obj));

            Assert.That(() => ThreadSafeReference.Create(obj), Throws.InstanceOf <RealmException>().And.Message.Contains("invalidated object"));
        }
예제 #3
0
        private ThreadSafeReference.Object <IntPropertyObject> SetupObjectReference()
        {
            var obj = new IntPropertyObject {
                Int = 12
            };

            _realm.Write(() => _realm.Add(obj));

            return(ThreadSafeReference.Create(obj));
        }
예제 #4
0
        public void Insert_WhenIndexIsEqualToCount_ShouldWork()
        {
            var container = new ContainerObject();

            _realm.Write(() => _realm.Add(container));

            var toInsert1 = new IntPropertyObject();

            _realm.Write(() => container.Items.Insert(0, toInsert1));
            Assert.That(container.Items.Count, Is.EqualTo(1));
            Assert.That(container.Items[0], Is.EqualTo(toInsert1));

            var toInsert2 = new IntPropertyObject();

            _realm.Write(() => container.Items.Insert(1, toInsert2));
            Assert.That(container.Items.Count, Is.EqualTo(2));
            Assert.That(container.Items[1], Is.EqualTo(toInsert2));
        }
예제 #5
0
        public void ObjectReference_ResolveDeletedObject_ShouldReturnNull()
        {
            TestHelpers.RunAsyncTest(async() =>
            {
                var obj = new IntPropertyObject {
                    Int = 12
                };
                _realm.Write(() => _realm.Add(obj));

                var objReference = ThreadSafeReference.Create(obj);

                _realm.Write(() => _realm.Remove(obj));

                await Task.Run(() =>
                {
                    using var otherRealm = GetRealm(_realm.Config);
                    var otherObj         = otherRealm.ResolveReference(objReference);
                    Assert.That(otherObj, Is.Null);
                });
            });
        }
예제 #6
0
        public void ThreadSafeReference_WhenAnObjectIsUnmanaged_ShouldFail()
        {
            var obj = new IntPropertyObject();

            Assert.That(() => ThreadSafeReference.Create(obj), Throws.InstanceOf <RealmException>().And.Message.Contains("unmanaged object"));
        }