diff options
Diffstat (limited to 'java/rasj/test/testIntervals.java')
-rw-r--r-- | java/rasj/test/testIntervals.java | 326 |
1 files changed, 326 insertions, 0 deletions
diff --git a/java/rasj/test/testIntervals.java b/java/rasj/test/testIntervals.java new file mode 100644 index 0000000..a06d980 --- /dev/null +++ b/java/rasj/test/testIntervals.java @@ -0,0 +1,326 @@ +/* +* This file is part of rasdaman community. +* +* Rasdaman community is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* Rasdaman community is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. +* +* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / +rasdaman GmbH. +* +* For more information please see <http://www.rasdaman.org> +* or contact Peter Baumann via <baumann@rasdaman.com>. +*/ +package rasj.test; + +import java.util.StringTokenizer; +import java.lang.Integer; +import java.lang.Long; +import rasj.*; +import rasj.odmg.*; + +public class testIntervals +{ + + public static void main(String argv[]) throws RasException + { + testIntervals intervalTest = new testIntervals(); + } + + public testIntervals() + { + try + { + // Points and Intervals + ////////////////////////////////////////////// + System.out.println("\n############################ test points: "); + // create a new RasPoint + RasPoint p1 = new RasPoint("[666, 888]"); + RasPoint p2 = new RasPoint(333,444); + p2 = p2.add(p2); + + // test if two points are equal + boolean b1 = false; + if(p2.comparedWith(p1) == 0) + b1 = p1.equals(p2); + else + b1 = false; + System.out.println("points are equal: " + b1); + + // get the dimension of a Point + int i; + b1 = false; + if((p1.dimension() == 2) && (2 == p2.dimension())) + b1 = true; + System.out.println("dimensions of points are correct: " + b1); + + b1 = false; + p2.setItem(1, 48); + if(p2.item(1) == 48) + b1 = true; + System.out.println("read and write access of points is OK: " + b1); + + b1 = false; + p2.setTo(p2.mult(p1)); + if(p2.equals(new RasPoint(443556, 42624))) + b1 = true; + System.out.println("mult and setTo is OK: " + b1); + + b1 = false; + p1.stream(3); + if(p1.item(0) == 3) + b1 = true; + System.out.println("stream initializing of points is OK: " + b1); + + + // create a new RasSInterval + System.out.println("\n############################ test sintervals: "); + RasSInterval s1 = new RasSInterval(100,200); + RasSInterval s2 = new RasSInterval("150:400"); + + // get upper bound + b1 = false; + if(s2.high() == 400) + b1 = true; + System.out.println("upper bound is correct: " + b1); + + // test if lower bound is fixed + boolean b2; + b1 = false; + b1 = s2.isLowFixed(); + System.out.println("lower bound is fix: " + b1); + + // test if interval intersects with another interval + // (the return value shows the kind of intersection) + int j; + j = s1.intersectsWith(s2); + b1 = false; + if(j != -1) + b1 = true; + System.out.println("s1 intersects with s2: " + b1); + + RasSInterval sint1 = new RasSInterval(100,200); + RasSInterval sint2 = new RasSInterval("150 :400 "); + RasSInterval sint3 = new RasSInterval("50:180"); + + b1 = false; + sint1.setHigh('*'); + sint1.setLow(400); + if(sint1.low() == 400) + b1 = true; + sint1.setLow('*'); + sint1.setHigh(500); + if((sint1.high() == 500) && b1) + b1 = true; + else + b1 = false; + System.out.println("setLow and setHigh are OK: " + b1); + + sint1.setInterval('*',500); + b1 = !sint1.isLowFixed(); + b1 = sint1.isHighFixed() && b1; + System.out.println("low is open high is fixed: " + b1); + + b1 = false; + if(sint1.intersectsWith(sint1) != -1) + b1 = true; + + if(sint3.closureOf(sint2, sint1).equals(sint1) && + sint3.closureWith(sint2).equals(sint1) && + sint3.createClosure(sint2).equals(sint1)) + b1 = b1 && true; + + sint1.setInterval(90, 105); + sint2.setInterval(100, 110); + if(sint2.createDifference(sint1).equals(new RasSInterval(90, 100)) && + sint3.createIntersection(sint2).equals(new RasSInterval(100, 110))) + b1 = b1 && true; + + if(sint3.createUnion(sint2).equals(sint1) && + sint1.differenceOf(sint1, sint2).equals(new RasSInterval(90, 100)) && + sint1.differenceWith(sint2).equals(new RasSInterval(100, 110))) + b1 = b1 && true; + + if(sint3.intersectionOf(sint2, sint1).equals(new RasSInterval(100, 100)) && + sint3.intersectionWith(sint2).equals(new RasSInterval(100, 100))) + b1 = b1 && true; + + b1 = b1 && !sint3.equals(sint2); + if(sint3.unionOf(sint1, sint2).equals(new RasSInterval(90, 110)) && + sint3.unionWith(sint2).equals(new RasSInterval(90, 110))) + b1 = b1 && true; + System.out.println("operations of sintervals are correct: " + b1); + + + + // create new RasMInterval + System.out.println("\n############################ test mintervals: "); + RasMInterval mint1 = new RasMInterval("[567:3253,666:888]"); + RasMInterval mint2 = new RasMInterval("[678:4000,777:999]"); + RasMInterval mint3 = new RasMInterval("[777:900,888:1000]"); + RasMInterval mint4 = new RasMInterval(2); + b1 = false; + if((mint2.dimension() == 2) && (mint1.dimension() == 2)) + b1 = true; + System.out.println("dimensions of mintervals are correct: " + b1); + + b1 = false; + mint1 = new RasMInterval("[500:3000,600:800]"); + mint2 = new RasMInterval("[600:1000,700:750]"); + b1 = mint1.intersectsWith(mint2); + mint1 = new RasMInterval("[567:3253,666:888]"); + mint2 = new RasMInterval("[678:4000,777:999]"); + if(mint3.closureOf(mint2, mint1).toString().equals(new RasMInterval("[567:4000,666:999]").toString())) + b1 = b1 && true; + else b1 = false; + if(mint3.closureWith(mint2).toString().equals(new RasMInterval("[567:4000,666:999]").toString())) + b1 = b1 && true; + else b1 = false; + if(mint3.createClosure(mint2).toString().equals(new RasMInterval("[567:4000,666:999]").toString())) + b1 = b1 && true; + else b1 = false; + mint3 = new RasMInterval("[678:2000,777:888]"); + mint3 = mint3.createDifference(mint2); + if(mint3.toString().equals(new RasMInterval("[2000:4000,888:999]").toString())) + b1 = b1 && true; + else b1 = false; + mint3 = new RasMInterval("[678:2000,777:888]"); + mint3 = mint3.createDifference(mint2); + if(mint3.toString().equals(new RasMInterval("[2000:4000,888:999]").toString())) + b1 = b1 && true; + else b1 = false; + mint3 = new RasMInterval("[678:2000,777:888]"); + mint3 = mint3.createIntersection(mint2); + if(mint3.toString().equals(new RasMInterval("[678:2000,777:888]").toString())) + b1 = b1 && true; + else b1 = false; + mint3 = new RasMInterval("[678:2000,777:888]"); + mint2 = new RasMInterval("[1000:4000,750:999]"); + mint3 = mint3.createUnion(mint2); + if(mint3.toString().equals(new RasMInterval("[678:4000, 750:999]").toString())) + b1 = b1 && true; + else b1 = false; + mint2 = new RasMInterval("[1000:4000,800:999]"); + mint1 = mint1.differenceOf(mint3, mint2); + if(mint1.toString().equals(new RasMInterval("[678:1000,750:800]").toString())) + b1 = b1 && true; + else b1 = false; + mint3 = mint3.intersectionOf(mint2, mint1); + if(mint3.toString().equals(new RasMInterval("[1000:1000,800:800]").toString())) + b1 = b1 && true; + else b1 = false; + mint3 = mint3.intersectionWith(mint2); + if(mint3.toString().equals(new RasMInterval("[1000:1000,800:800]").toString())) + b1 = b1 && true; + else b1 = false; + b1 = b1 && !mint3.equals(mint2); + mint3 = mint3.unionOf(mint1, mint2); + if(mint3.toString().equals(new RasMInterval("[678:4000,750:999]").toString())) + b1 = b1 && true; + else b1 = false; + mint3 = mint3.unionWith(mint2); + if(mint3.toString().equals(new RasMInterval("[678:4000,750:999]").toString())) + b1 = b1 && true; + else b1 = false; + mint2 = mint2.differenceWith(mint3); + if(mint2.toString().equals(new RasMInterval("[678:1000,750:800]").toString())) + b1 = b1 && true; + else b1 = false; + System.out.println("operations of mintervals are correct: " + b1); + + // Types + /////////////////////////////////////////// + System.out.println("\n############################ test types: "); + String s = "marray <char, 1>"; + RasType rType = RasType.getAnyType(s); + RasBaseType rb; + + if(rType.getClass().getName().equals("rasj.RasMArrayType")) + { + RasMArrayType tmp = (RasMArrayType)rType; + rb = tmp.getBaseType(); + + System.out.println("OK"); + } + else + System.out.println("element of MDD Collection is no MArray."); + + boolean b3; + b3 = !rType.isStructType(); + System.out.println(b3); + + + // StorageLayout + /////////////////////////////////////////// + System.out.println("\n############################ test storage layout: "); + RasGMArray myMDD = new RasGMArray(new RasMInterval("[1:400,1:400]"),1); + byte[] mydata = new byte[160000]; + for(int y=0; y<400; y++) + { + for(int x=0; x<400; x++) + { + if((x>99 && x<151) || (x>299 && x<351)) + mydata[y*399+x]=100; + else + mydata[y*399+x]=0; + } + } + + myMDD.setArray(mydata); + myMDD.setObjectTypeName("GreyImage"); + + RasStorageLayout myLayout = new RasStorageLayout(); + + myLayout.setTileDomain("[1:100,1:70]"); + // you can either set the TileSize or the TileDomain + myLayout.setTileSize(32); + myMDD.setStorageLayout(myLayout); + if(myMDD.getStorageLayout().getTileSize() == 32) + System.out.println("OK"); + + + //GMarray//////////////////////////////////////////////////////////////////////////////////////////////////////////////// + RasGMArray array1 = new RasGMArray(); + RasGMArray array2 = new RasGMArray(mint1, 8); + + myMDD.getCell(new RasPoint(1,1)); + + System.out.println("OK"); + + + //Ausgabe//////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* + System.out.println("Array1 " + array1); + System.out.println("Array2 " + array2); + + System.out.println("Punkt1 " + p1); + System.out.println("Punkt2 " + p2); + + System.out.println("Sinterval1 " + s1); + System.out.println("Sinterval2 " + s2); + System.out.println("Sinterval3 " + sint3); + + System.out.println("j = " + j); + //System.out.println("b1 = " + b1); + //System.out.println("b2 = " + b2); + System.out.println("b3 = " + b3); + */ + + + } + catch (RasException e) + { + System.out.println("!!!!!!!!!!!!!!!!!!!!While testing!!!!!!!!!!!!!!!!!!"); + System.out.println("An RasException has occurred: " + e.getMessage()); + } + } +} |