gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] fenfire ./TODO-loom org/fenfire/loom/Cursor.jav...


From: Benja Fallenstein
Subject: [Gzz-commits] fenfire ./TODO-loom org/fenfire/loom/Cursor.jav...
Date: Tue, 04 Mar 2003 05:50:45 -0500

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Changes by:     Benja Fallenstein <address@hidden>      03/03/04 05:50:43

Modified files:
        .              : TODO-loom 
        org/fenfire/loom: Cursor.java Cursor.test Loom.java 
                          NodeView.java SimpleView.java SimpleView.test 
                          WheelView.java WheelView.test 
        org/fenfire/test: test.py 

Log message:
        Fix test framework; show properties

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/TODO-loom.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/Cursor.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/Cursor.test.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/Loom.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/NodeView.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/SimpleView.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/SimpleView.test.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/WheelView.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/WheelView.test.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/test/test.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text

Patches:
Index: fenfire/TODO-loom
diff -u fenfire/TODO-loom:1.5 fenfire/TODO-loom:1.6
--- fenfire/TODO-loom:1.5       Sat Mar  1 14:26:21 2003
+++ fenfire/TODO-loom   Tue Mar  4 05:50:42 2003
@@ -11,7 +11,6 @@
     - adapt Makefile: dependencies, build system, release system
     - draw UML diagrams similar to Gzz "Core APIs"
 
-    - show predicates somehow
     - fix interpolation
     - make mouse work
 
Index: fenfire/org/fenfire/loom/Cursor.java
diff -u fenfire/org/fenfire/loom/Cursor.java:1.1 
fenfire/org/fenfire/loom/Cursor.java:1.2
--- fenfire/org/fenfire/loom/Cursor.java:1.1    Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/Cursor.java        Tue Mar  4 05:50:43 2003
@@ -50,6 +50,28 @@
      */
     public Comparator order;
 
+    /** Compare statements by their subjects.
+     *  <code>subjOrder</code> orders statements by applying
+     *  <code>order</code> to their subjects. 
+     */
+    protected Comparator subjOrder = new Comparator() {
+           public int compare(Object o1, Object o2) {
+               Statement s1 = (Statement)o1, s2 = (Statement)o2;
+               return order.compare(s1.getSubject(), s2.getSubject());
+           }
+       };
+
+    /** Compare statements by their objects.
+     *  <code>objOrder</code> orders statements by applying
+     *  <code>order</code> to their objects. 
+     */
+    protected Comparator objOrder = new Comparator() {
+           public int compare(Object o1, Object o2) {
+               Statement s1 = (Statement)o1, s2 = (Statement)o2;
+               return order.compare(s1.getObject(), s2.getObject());
+           }
+       };
+
     /** Create a new cursor without giving it a position yet.
      */
     public Cursor(Comparator order) {
@@ -72,16 +94,21 @@
     }
 
     /** Set the position of the cursor.
-     *  Ambiguity of <code>rotation</code> (is it posward
-     *  or negward?) might be a problem?
      */
     public void set(Resource focus, int dir, RDFNode rotation) {
        this.focus = focus;
        SortedSet set = getConnections(dir);
-       if(!set.contains(rotation))
-           throw new NoSuchElementException("Rotation: "+rotation);
+       Iterator iter=set.iterator();
+       for(int i=0; iter.hasNext(); i++) {
+           Statement stmt = (Statement)iter.next();
+           RDFNode node = (dir<0) ? stmt.getSubject() : stmt.getObject();
+           if(node.equals(rotation)) {
+               this.rotation = i-(set.size()-1)/2;
+               return;
+           }
+       }
 
-       this.rotation = set.headSet(rotation).size()-(set.size()-1)/2;
+       throw new NoSuchElementException("Rotation: "+rotation);
     }
 
     /** Get <code>rotation</code> from the middle connection.
@@ -96,19 +123,21 @@
      *  in order. XXX refactor-- we need only a subset of all properties,
      *  and recursion... currently slow because we iterate though
      *  ALL triples in the graph.
+     *  <p>
+     *  Returns a set of <em>statements</em>, not a set of nodes.
      */
     public SortedSet getConnections(int dir) {
        try {
-           SortedSet nodes = new TreeSet(order);
+           SortedSet nodes = new TreeSet(dir<0 ? subjOrder : objOrder);
            StmtIterator i = focus.getModel().listStatements();
            for(; i.hasNext();) {
                Statement stmt = i.next();
                if(dir < 0) {
                    if(stmt.getObject().equals(focus)) 
-                       nodes.add(stmt.getSubject());
+                       nodes.add(stmt);
                } else {
                    if(stmt.getSubject().equals(focus))
-                       nodes.add(stmt.getObject());
+                       nodes.add(stmt);
                }
            }
            i.close();
@@ -173,7 +202,8 @@
            // nothing there
            return null;
 
-       return (RDFNode)iter.next();
+       Statement stmt = (Statement)iter.next();
+       return (dir<0) ? stmt.getSubject() : stmt.getObject();
     }
 
     /** Move left/right. XXX
Index: fenfire/org/fenfire/loom/Cursor.test
diff -u fenfire/org/fenfire/loom/Cursor.test:1.2 
fenfire/org/fenfire/loom/Cursor.test:1.3
--- fenfire/org/fenfire/loom/Cursor.test:1.2    Sat Mar  1 04:23:30 2003
+++ fenfire/org/fenfire/loom/Cursor.test        Tue Mar  4 05:50:43 2003
@@ -24,15 +24,6 @@
 from org.fenfire.test.gfx import getvs
 from com.hp.hpl.mesa.rdf import jena
 
-model = jena.mem.ModelMem()
-p = model.createProperty("http://fenfire.org/2003/02/test#";, "test-property")
-n = [model.createResource() for i in range(10)]
-
-n[0].addProperty(p, n[1])
-n[1].addProperty(p, n[2])
-for i in range(3,10):
-    n[2].addProperty(p, n[i])
-
 class Cmp(java.util.Comparator):
     def compare(self, r1, r2):
         if (not r1) or (not r2):
@@ -41,32 +32,51 @@
         # Nodes are compared by order of index:
         # n[4] > n[2], n[7]  > n[4] etc.
         return n.index(r1) - n.index(r2)
-c = gzz.loom.Cursor(Cmp())
 
 def list(set):
     l = []; i = set.iterator()
     while i.hasNext(): l.append(i.next())
     return l
 
+def listObs(set):
+    return [stmt.getObject() for stmt in list(set)]
+
+def listSubs(set):
+    return [stmt.getSubject() for stmt in list(set)]
+
+def setUp():
+    global model, p, n, c
+    
+    model = jena.mem.ModelMem()
+    p = model.createProperty("http://fenfire.org/2003/02/test#";, 
"test-property")
+    n = [model.createResource() for i in range(10)]
+
+    n[0].addProperty(p, n[1])
+    n[1].addProperty(p, n[2])
+    for i in range(3,10):
+        n[2].addProperty(p, n[i])
+
+    c = gzz.loom.Cursor(Cmp())
+
 
 def testGetConnections():
     n[6].addProperty(p, n[1])
     
     c.set(n[0], 1, n[1])
-    assert list(c.getConnections(1)) == [n[1]]
-    assert list(c.getConnections(-1)) == []
+    assert listObs(c.getConnections(1)) == [n[1]]
+    assert listSubs(c.getConnections(-1)) == []
 
     c.set(n[1], 1, n[2])
-    assert list(c.getConnections(1)) == [n[2]]
-    assert list(c.getConnections(-1)) == [n[0], n[6]]
+    assert listObs(c.getConnections(1)) == [n[2]]
+    assert listSubs(c.getConnections(-1)) == [n[0], n[6]]
 
     c.set(n[2], 1, n[3])
-    assert list(c.getConnections(1)) == n[3:]
-    assert list(c.getConnections(-1)) == [n[1]]
+    assert listObs(c.getConnections(1)) == n[3:]
+    assert listSubs(c.getConnections(-1)) == [n[1]]
 
     c.set(n[6], 1, n[1])
-    assert list(c.getConnections(1)) == [n[1]]
-    assert list(c.getConnections(-1)) == [n[2]]
+    assert listObs(c.getConnections(1)) == [n[1]]
+    assert listSubs(c.getConnections(-1)) == [n[2]]
 
 
 def testConnectedTwoWays():
Index: fenfire/org/fenfire/loom/Loom.java
diff -u fenfire/org/fenfire/loom/Loom.java:1.1 
fenfire/org/fenfire/loom/Loom.java:1.2
--- fenfire/org/fenfire/loom/Loom.java:1.1      Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/Loom.java  Tue Mar  4 05:50:43 2003
@@ -43,10 +43,7 @@
  */
 public class Loom {
 
-    protected Class[] viewclasses = {
-       SimpleView.class, 
-       WheelView.class
-    };
+    protected View[] views;
     int viewcur = 0;
 
     public static Model load(String filename) throws RDFException, 
@@ -93,19 +90,31 @@
        final TextStyle style = api.getTextStyle("Serif", 0, 12);
        final NodeView nodeView = new NodeView() {
                public void render(VobScene sc, int into, RDFNode node, 
-                                  int dir) {
+                                  Property prop, int dir) {
                    RectBgVob bg = new RectBgVob();
                    if(node.equals(cursor.getRotationNode(dir))) // if selected
                        bg.addColor(Color.red);
                    if(!(node instanceof Resource)) // if literal
                        bg.addColor(Color.yellow);
                    sc.map.put(bg, into);
+
                    String s = node.toString();
                    if(s.length() > 25) s = s.substring(s.length()-25);
-                   sc.map.put(new TextVob(style, s), 
-                              sc.unitSqCS(into, "text"));
+
+                   int unitSqCs = sc.unitSqCS(into, "text");
+                   int propCs = sc.orthoCS(unitSqCs, "property", 
+                                           0, 0, -.7f, .7f, .7f);
+                   sc.map.put(new TextVob(style, s), unitSqCs);
+
+                   if(prop != null) {
+                       s = prop.toString();
+                       if(s.length() > 25) s = s.substring(s.length()-25);
+                       sc.map.put(new TextVob(style, s), propCs);
+                   }
                }
            };
+       views = new View[] { new SimpleView(nodeView), 
+                            new WheelView(nodeView) };
        final Shower s = new Shower() {
                Screen screen;
                public void setScreen(Screen s) {
@@ -114,17 +123,7 @@
                public VobScene generate() {
                    VobScene sc = this.screen.window.createVobScene();
                    sc.map.put(new SolidBgVob(java.awt.Color.white), 0);
-                   View view;
-                   try {
-                       view = (View) viewclasses[viewcur]
-                           .getConstructor(new Class[] {NodeView.class})
-                           .newInstance(new Object[] {nodeView});
-                   } catch (Exception e) {
-                       e.printStackTrace();
-                       return null;
-                   }
-
-                   view.render(sc, 0, cursor);
+                   views[viewcur].render(sc, 0, cursor);
                    return sc;
                }
                public void chg() {}
@@ -141,10 +140,10 @@
                    else if(s.equals("Right"))
                        cursor.move(1);
                    else if(s.equals("PgUp")) // previous view wanted
-                       viewcur = (viewcur-1+viewclasses.length) 
-                           % viewclasses.length;
+                       viewcur = (viewcur-1+views.length) 
+                           % views.length;
                    else if(s.equals("PgDown")) // next view wanted
-                       viewcur = (viewcur+1) % viewclasses.length;
+                       viewcur = (viewcur+1) % views.length;
 
                    AbstractUpdateManager.chg();
                }
Index: fenfire/org/fenfire/loom/NodeView.java
diff -u fenfire/org/fenfire/loom/NodeView.java:1.1 
fenfire/org/fenfire/loom/NodeView.java:1.2
--- fenfire/org/fenfire/loom/NodeView.java:1.1  Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/NodeView.java      Tue Mar  4 05:50:43 2003
@@ -39,12 +39,16 @@
      *  @param into The coordinate system inside <code>vs</code>
      *         to render the node into.
      *  @param node The node to render.
+     *  @param prop The property through which the node
+     *              is related to the focus (<code>null</code>
+     *              for the focus itself).
      *  @param dir Larger than zero if the node is posward
      *         from the focus; smaller than zero if the node
      *         is negward from the focus; zero if the node
      *         <em>is</em> the focus.
      */
-    void render(VobScene vs, int into, RDFNode node, int dir);
+    void render(VobScene vs, int into, RDFNode node, 
+               Property prop, int dir);
 
     /** Get the default size of a node.
      * @param node The node to get size for, or null for a default size.
Index: fenfire/org/fenfire/loom/SimpleView.java
diff -u fenfire/org/fenfire/loom/SimpleView.java:1.1 
fenfire/org/fenfire/loom/SimpleView.java:1.2
--- fenfire/org/fenfire/loom/SimpleView.java:1.1        Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/SimpleView.java    Tue Mar  4 05:50:43 2003
@@ -61,7 +61,7 @@
        int midx = sc.size.width/2, midy = sc.size.height/2;
        int cs = sc.orthoBoxCS(into, c.focus, 0, midx-sizex/2, midy-sizey/2, 
                               1, 1, sizex, sizey);
-       nodeView.render(sc, cs, c.focus, 0);
+       nodeView.render(sc, cs, c.focus, null, 0);
        
        int before = c.getRotationIndex(1);
        
@@ -69,9 +69,10 @@
            y = midy - sizey/2 - before*(gapy+sizey);
        
        for(Iterator j=c.getConnections(1).iterator(); j.hasNext();) {
-           RDFNode node = (RDFNode)j.next();
+           Statement stmt = (Statement)j.next();
+           RDFNode node = stmt.getObject();
            int cs2 = sc.orthoBoxCS(into, node, 0, x, y, 1, 1, sizex, sizey);
-           nodeView.render(sc, cs2, node, 1);
+           nodeView.render(sc, cs2, node, stmt.getPredicate(), 1);
            sc.map.put(conn, cs, cs2);
            y += sizey + gapy;
        }
@@ -81,9 +82,10 @@
        y = midy - sizey/2 - before*(gapy+sizey);
 
        for(Iterator j=c.getConnections(-1).iterator(); j.hasNext();) {
-           RDFNode node = (RDFNode)j.next();
+           Statement stmt = (Statement)j.next();
+           RDFNode node = stmt.getSubject();
            int cs2 = sc.orthoBoxCS(into, node, 0, x, y, 1, 1, sizex, sizey);
-           nodeView.render(sc, cs2, node, -1);
+           nodeView.render(sc, cs2, node, stmt.getPredicate(), -1);
            sc.map.put(conn, cs2, cs);
            y += sizey + gapy;
        }
Index: fenfire/org/fenfire/loom/SimpleView.test
diff -u fenfire/org/fenfire/loom/SimpleView.test:1.1 
fenfire/org/fenfire/loom/SimpleView.test:1.2
--- fenfire/org/fenfire/loom/SimpleView.test:1.1        Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/SimpleView.test    Tue Mar  4 05:50:43 2003
@@ -21,7 +21,7 @@
 
 import gzz, java
 import jarray
-from test.tools.gfx import getvs
+from org.fenfire.test.gfx import getvs
 from com.hp.hpl.mesa.rdf import jena
 
 model = jena.mem.ModelMem()
@@ -33,12 +33,13 @@
 v = model.createResource()
 w = model.createResource()
 
-nodes, dirs = {}, {}
+nodes, dirs, props = {}, {}, {}
 
 class NodeView(gzz.loom.NodeView):
-    def render(self, vs, cs, node, dir):
+    def render(self, vs, cs, node, prop, dir):
         nodes[node] = cs
         dirs[node] = dir
+        props[node] = prop
 
 class Cmp(java.util.Comparator):
     def compare(self, r1, r2):
@@ -120,3 +121,6 @@
     assert dirs[r] == 0
     assert dirs[s] == dirs[t] == dirs[u] == dirs[v] == 1
     assert dirs[w] == -1
+
+    assert props[r] == None
+    for x in (s,t,u,v,w): assert props[x] == p
Index: fenfire/org/fenfire/loom/WheelView.java
diff -u fenfire/org/fenfire/loom/WheelView.java:1.1 
fenfire/org/fenfire/loom/WheelView.java:1.2
--- fenfire/org/fenfire/loom/WheelView.java:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/WheelView.java     Tue Mar  4 05:50:43 2003
@@ -65,7 +65,7 @@
        int midx = sc.size.width/2, midy = sc.size.height/2;
        int cs = sc.orthoBoxCS(into, c.focus, 0, midx-sizex/2, midy-sizey/2, 
                               1, 1, sizex, sizey);
-       nodeView.render(sc, cs, c.focus, 0);
+       nodeView.render(sc, cs, c.focus, null, 0);
        
        int totpos = c.getConnections(1).size();
        int totneg = c.getConnections(-1).size();
@@ -83,12 +83,13 @@
        int before = c.getRotationIndex(1);     
        double cura = -(before * rota);
        for(Iterator j=c.getConnections(1).iterator(); j.hasNext();) {
-           RDFNode node = (RDFNode)j.next();
+           Statement stmt = (Statement)j.next();
+           RDFNode node = stmt.getObject();
            int cs2 = sc.orthoBoxCS(into, node, Math.abs(before),
                                    midx+x(cura, r)-sizex/2,
                                    midy+y(cura, r)-sizey/2,
                                    1, 1, sizex, sizey);
-           nodeView.render(sc, cs2, node, 1);
+           nodeView.render(sc, cs2, node, stmt.getPredicate(), 1);
            sc.map.put(conn, cs, cs2);    
            cura+=rota;
            before--;
@@ -98,12 +99,13 @@
        before = c.getRotationIndex(-1);        
        cura = Math.PI-(before * rota);
        for(Iterator j=c.getConnections(-1).iterator(); j.hasNext();) {
-           RDFNode node = (RDFNode)j.next();
+           Statement stmt = (Statement)j.next();
+           RDFNode node = stmt.getSubject();
            int cs2 = sc.orthoBoxCS(into, node, Math.abs(before),
                                    midx+x(cura, r)-sizex/2,
                                    midy+y(cura, r)-sizey/2,
                                    1, 1, sizex, sizey);
-           nodeView.render(sc, cs2, node, -1);
+           nodeView.render(sc, cs2, node, stmt.getPredicate(), -1);
            sc.map.put(conn, cs2, cs);
            cura+=rota;
            before--;
Index: fenfire/org/fenfire/loom/WheelView.test
diff -u fenfire/org/fenfire/loom/WheelView.test:1.1 
fenfire/org/fenfire/loom/WheelView.test:1.2
--- fenfire/org/fenfire/loom/WheelView.test:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/WheelView.test     Tue Mar  4 05:50:43 2003
@@ -22,7 +22,7 @@
 import gzz, java
 import jarray
 import math
-from test.tools.gfx import getvs
+from org.fenfire.test.gfx import getvs
 from com.hp.hpl.mesa.rdf import jena
 
 model = jena.mem.ModelMem()
@@ -34,12 +34,13 @@
 v = model.createResource()
 w = model.createResource()
 
-nodes, dirs = {}, {}
+nodes, dirs, props = {}, {}, {}
 
 class NodeView(gzz.loom.NodeView):
-    def render(self, vs, cs, node, dir):
+    def render(self, vs, cs, node, prop, dir):
         nodes[node] = cs
         dirs[node] = dir
+        props[node] = prop
 
 class Cmp(java.util.Comparator):
     def compare(self, r1, r2):
@@ -140,3 +141,6 @@
     assert dirs[r] == 0
     assert dirs[s] == dirs[t] == dirs[u] == dirs[v] == 1
     assert dirs[w] == -1
+
+    assert props[r] == None
+    for x in (s,t,u,v,w): assert props[x] == p
Index: fenfire/org/fenfire/test/test.py
diff -u fenfire/org/fenfire/test/test.py:1.3 
fenfire/org/fenfire/test/test.py:1.4
--- fenfire/org/fenfire/test/test.py:1.3        Mon Mar  3 14:10:02 2003
+++ fenfire/org/fenfire/test/test.py    Tue Mar  4 05:50:43 2003
@@ -53,13 +53,15 @@
         fn = getattr(module, test)
 
         if not fn.__doc__:
-            name = test
+            name = '%s.%s' % (module.__name__, test)
         else:
             lines = fn.__doc__.split('\n')
             if lines[0] == '':
-                name = '%s (%s)' % (test, lines[1].strip())
+                name = '%s.%s (%s)' % (module.__name__, test,
+                                       lines[1].strip())
             else:
-                name = '%s (%s)' % (test, lines[0].strip())
+                name = '%s.%s (%s)' % (module.__name__, test,
+                                       lines[0].strip())
         
         print name + "... ",
 
@@ -102,7 +104,9 @@
 
 
 def load(file):
-    name = os.path.splitext(os.path.basename(file))[0]
+    name = os.path.splitext(file)[0]
+    name = '.'.join(name.split('/'))
+    name = '.'.join(name.split('\\'))
 
     module = imp.new_module(name)
     execfile(file, module.__dict__)
@@ -132,7 +136,7 @@
 
 def main(args):
     global runfail
-    runfail = []
+    runfail = [None]
     
     opts, args = getopt.getopt(args, 
             org.fenfire.test.dbg.short + "f:", 
@@ -163,15 +167,15 @@
 
                 print
 
-                for exc in exceptions:
-                    print 75 * '-'
-                    traceback.print_exception(*exc['exception'])
-
+            for exc in exceptions:
                 print 75 * '-'
-                print
-                print "%s test failures." % len(exceptions)
+                traceback.print_exception(*exc['exception'])
+
+            print 75 * '-'
+            print
+            print "%s test failures." % len(exceptions)
 
-                java.lang.System.exit(exceptions != [])
+            java.lang.System.exit(exceptions != [])
 
     gzz.client.GraphicsAPI.getInstance().startUpdateManager(Starter(dirs))
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]