objectdb_t.java

来自「SRI international 发布的OAA框架软件」· Java 代码 · 共 88 行

JAVA
88
字号
package com.sri.test.javanetbridge;

import junit.framework.TestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
import com.sri.sedc.javanetbridge.ObjectNotFoundException;
import com.sri.oaa2.icl.IclList;
import com.sri.oaa2.icl.IclStruct;
import com.sri.oaa2.icl.IclInt;
import com.sri.sedc.javanetbridge.JavaNetBridgeFactory;
import com.sri.sedc.javanetbridge.ObjectDB;

/**
 * Unit tests for ObjectDB.
 */
public class ObjectDB_T  extends TestCase {
    public ObjectDB_T(String name) {
        super(name);
    }

    protected void debug(String msg) {
        System.out.println(msg);
    }

    public static void main(String[] args) {
        junit.textui.TestRunner.run(suite());
    }

    public static Test suite() {
        return new TestSuite(ObjectDB_T.class);
    }

    public void doTestForObj(Object newObj) throws Exception {
        ObjectDB db = JavaNetBridgeFactory.getFactory().newObjectDB();
        try {
            Object ret = db.getObjFromId(12);
            assertTrue("Retrieved object from empty db = " + ret, false);
        } catch (ObjectNotFoundException e) {
            // OK
        }
        int id = db.addObjRef(newObj);
        Object ret = db.getObjFromId(id);
        // Use == to make sure the objects themselves are equivalent
        assertTrue(ret == newObj);
        db.addObjRef(ret);
        db.addObjRef(ret);
        int refCount = db.releaseObjRef(id);
        assertTrue("refCount should be 2 but is " + refCount, refCount == 2);
        assertTrue(db.releaseObjRef(newObj) == 1);
        assertTrue(db.releaseObjRef(id) == 0);
    }

    public void testOne() throws Exception {
        doTestForObj(new Object());
        doTestForObj("");
        doTestForObj(new IclList());
        doTestForObj(new IclStruct("testStruct", new IclInt()));
    }

    public void testMultiple() throws Exception {
        ObjectDB db = JavaNetBridgeFactory.getFactory().newObjectDB();
        Object obj1 = null, obj2 = null, obj3 = null, obj4 = null;
        int id1 = db.addObjRef(obj1 = new Object());
        int id2 = db.addObjRef(obj2 = "");
        int id3 = db.addObjRef(obj3 = new IclList());
        int id4 = db.addObjRef(obj4 = new IclStruct("testStruct", new IclInt()));
        db.getObjFromId(id1);
        db.getObjFromId(id2);
        db.getObjFromId(id3);
        db.getObjFromId(id4);
        assertTrue(db.releaseObjRef(obj3) == 0);
        try {
            db.getObjFromId(id3);
            assertTrue("Retrieved object when it should not be located in db", false);
        } catch (ObjectNotFoundException e) {
            // OK
        }
        assertTrue("Received different id", id2 == db.addObjRef(obj2));
        assertTrue(db.releaseObjRef(id2) == 1);
        assertTrue(db.releaseObjRef(obj2) == 0);
        assertTrue(db.getObjFromId(id1) == obj1);
        int refCount = db.releaseObjRef(obj1);
        assertTrue("refCount = " + refCount, refCount == 0);
        assertTrue(db.releaseObjRef(obj4) == 0);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?