public virtual void TestRefresh()
        {
            IExtObjectContainer client1 = OpenNewSession();
            IExtObjectContainer client2 = OpenNewSession();

            TARefreshTestCase.TAItem item1 = QueryRoot(client1);
            TARefreshTestCase.TAItem item2 = QueryRoot(client2);
            TARefreshTestCase.TAItem next1 = item1;
            int value = 10;

            while (next1 != null)
            {
                Assert.AreEqual(value, next1.Value());
                next1 = next1.Next();
                value--;
            }
            TARefreshTestCase.TAItem next2 = item2;
            value = 10;
            while (next2 != null)
            {
                Assert.AreEqual(value, next2.Value());
                next2 = next2.Next();
                value--;
            }
            //update depth = 1
            item1.Value(100);
            item1.Next().Value(200);
            client1.Store(item1, 2);
            client1.Commit();
            AssertItemValue(100, item1);
            AssertItemValue(200, item1.Next());
            AssertItemValue(10, item2);
            AssertItemValue(9, item2.Next());
            //refresh 0
            client2.Refresh(item2, 0);
            AssertItemValue(10, item2);
            AssertItemValue(9, item2.Next());
            //refresh 1
            client2.Refresh(item2, 1);
            AssertItemValue(100, item2);
            AssertItemValue(9, item2.Next());
            //refresh 2
            client2.Refresh(item2, 2);
            AssertItemValue(100, item2);
            AssertItemValue(200, item2.Next());
            next1 = item1;
            value = 1000;
            while (next1 != null)
            {
                next1.Value(value);
                next1 = next1.Next();
                value++;
            }
            client1.Store(item1, 5);
            client1.Commit();
            client2.Refresh(item2, 5);
            next2 = item2;
            for (int i = 1000; i < 1005; i++)
            {
                AssertItemValue(i, next2);
                next2 = next2.Next();
            }
            client1.Close();
            client2.Close();
        }
 private void AssertItemValue(int expectedValue, TARefreshTestCase.TAItem item)
 {
     Assert.AreEqual(expectedValue, item.PassThroughValue());
     Assert.AreEqual(expectedValue, item.Value());
 }