/* * 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 . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . */ 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 "; 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()); } } }