View Javadoc
1   /**
2    * 
3    */
4   package org.melati.poem.test;
5   
6   import java.util.Enumeration;
7   import java.util.NoSuchElementException;
8   
9   import org.melati.poem.Persistent;
10  import org.melati.poem.ResultSetEnumeration;
11  import org.melati.poem.RowDisappearedPoemException;
12  import org.melati.poem.User;
13  
14  /**
15   * @author timp
16   * @since 22 Jan 2007
17   *
18   */
19  public class ResultSetEnumerationTest extends PoemTestCase {
20  
21    /**
22     * Constructor.
23     * @param name
24     */
25    public ResultSetEnumerationTest(String name) {
26      super(name);
27    }
28  
29    /**
30     * {@inheritDoc}
31     * @see org.melati.poem.test.PoemTestCase#setUp()
32     */
33    protected void setUp() throws Exception {
34      super.setUp();
35    }
36  
37    /**
38     * {@inheritDoc}
39     * @see org.melati.poem.test.PoemTestCase#tearDown()
40     */
41    protected void tearDown() throws Exception {
42      super.tearDown();
43    }
44  
45    /**
46     * Test method for {@link org.melati.poem.ResultSetEnumeration#
47     *    ResultSetEnumeration(java.sql.ResultSet)}.
48     */
49    public void testResultSetEnumeration() {
50    }
51  
52    /**
53     * Test method for {@link org.melati.poem.ResultSetEnumeration#hasMoreElements()}.
54     */
55    public void testHasMoreElements() {
56      Enumeration<Persistent> rse = getDb().getUserTable().getLoginColumn().selectionWhereEq("_guest_");
57      while (rse.hasMoreElements()) {
58        rse.nextElement();
59      }
60    }
61  
62    /**
63     * Test of deviant useage.
64     * Test method for {@link org.melati.poem.ResultSetEnumeration#nextElement()}.
65     */
66    public void testNextElement() {
67      Enumeration<Persistent> rse = getDb().getUserTable().getLoginColumn().selectionWhereEq("_guest_");
68      rse.nextElement();
69      try { 
70        rse.nextElement();
71        fail("Should have blown up");
72      } catch (NoSuchElementException e) { 
73        e = null;
74      }
75      
76      // FIXME There should be a way to provoke RowDisappearedPoemException
77      User u = new User("tester","tester","tester");
78      getDb().getUserTable().create(u); 
79      Enumeration<Integer> rse2 = getDb().getUserTable().troidSelection(null,null,false);
80      u.delete();
81      try { 
82        while(rse2.hasMoreElements()) { 
83          rse2.nextElement();
84        }
85        //fail("Should have blown up");
86      } catch (RowDisappearedPoemException e) {
87        e = null;
88      }
89    }
90  
91    /**
92     * Test method for {@link org.melati.poem.ResultSetEnumeration#skip()}.
93     */
94    public void testSkip() {
95      ResultSetEnumeration<Persistent> rse = (ResultSetEnumeration<Persistent>)getDb().getUserTable().getLoginColumn().selectionWhereEq("_guest_");
96      rse.skip();
97      try {
98        rse.nextElement();
99        fail("Should have blown up");
100     } catch (NoSuchElementException e) { 
101       e = null;
102     }    
103     rse = (ResultSetEnumeration<Persistent>)getDb().getUserTable().getLoginColumn().selectionWhereEq("_guest_");
104     rse.skip();
105     try { 
106       rse.skip();
107       fail("Should have blown up");
108     } catch (NoSuchElementException e) { 
109       e = null;
110     }    
111   }
112 
113 }