1 21 package com.db4o.db4ounit.common.assorted; 22 23 import com.db4o.ObjectSet; 24 import com.db4o.query.Query; 25 26 import db4ounit.Assert; 27 import db4ounit.extensions.AbstractDb4oTestCase; 28 29 30 public class LongLinkedListTestCase extends AbstractDb4oTestCase{ 31 32 private static final int COUNT = 1000; 33 34 public static class LinkedList{ 35 36 public LinkedList _next; 37 38 public int _depth; 39 40 } 41 42 private static LinkedList newLongCircularList(){ 43 LinkedList head = new LinkedList(); 44 LinkedList tail = head; 45 for (int i = 1; i < COUNT; i++) { 46 tail._next = new LinkedList(); 47 tail = tail._next; 48 tail._depth = i; 49 } 50 tail._next = head; 51 return head; 52 } 53 54 public static void main(String [] args) throws Exception { 55 new LongLinkedListTestCase().runSolo(); 56 } 57 58 protected void store() throws Exception { 59 store(newLongCircularList()); 60 } 61 62 public void test(){ 63 Query q = newQuery(LinkedList.class); 64 q.descend("_depth").constrain(new Integer (0)); 65 ObjectSet objectSet = q.execute(); 66 Assert.areEqual(1, objectSet.size()); 67 LinkedList head = (LinkedList) objectSet.next(); 68 db().activate(head, Integer.MAX_VALUE); 69 assertListIsComplete(head); 70 db().deactivate(head, Integer.MAX_VALUE); 71 db().activate(head, Integer.MAX_VALUE); 72 assertListIsComplete(head); 73 db().deactivate(head, Integer.MAX_VALUE); 74 db().refresh(head, Integer.MAX_VALUE); 75 assertListIsComplete(head); 76 77 83 } 84 85 private void assertListIsComplete(LinkedList head){ 86 int count = 1; 87 LinkedList tail = head._next; 88 while (tail != head){ 89 count++; 90 tail = tail._next; 91 } 92 Assert.areEqual(COUNT, count); 93 } 94 95 } 96 | Popular Tags |