001: /*
002: * The JTS Topology Suite is a collection of Java classes that
003: * implement the fundamental operations required to validate a given
004: * geo-spatial data set to a known topological specification.
005: *
006: * Copyright (C) 2001 Vivid Solutions
007: *
008: * This library is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU Lesser General Public
010: * License as published by the Free Software Foundation; either
011: * version 2.1 of the License, or (at your option) any later version.
012: *
013: * This library is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
016: * Lesser General Public License for more details.
017: *
018: * You should have received a copy of the GNU Lesser General Public
019: * License along with this library; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
021: *
022: * For more information, contact:
023: *
024: * Vivid Solutions
025: * Suite #1A
026: * 2328 Government Street
027: * Victoria BC V8T 5G5
028: * Canada
029: *
030: * (250)385-6040
031: * www.vividsolutions.com
032: */
033: package com.vividsolutions.jts.io.oracle;
034:
035: import java.sql.SQLException;
036:
037: import oracle.sql.STRUCT;
038:
039: import com.vividsolutions.jts.generator.GridGenerator;
040: import com.vividsolutions.jts.generator.PointGenerator;
041: import com.vividsolutions.jts.geom.*;
042:
043: /**
044: *
045: * Does round trip testing by creating the oracle object, then decoding it.
046: *
047: * These tests do not include insert / delete / select operations.
048: *
049: * @author David Zwiers, Vivid Solutions.
050: */
051: public class StaticPointTest extends ConnectedTestCase {
052:
053: /**
054: * @param arg
055: */
056: public StaticPointTest(String arg) {
057: super (arg);
058: }
059:
060: /**
061: * Round Trip test for a single point
062: * @throws SQLException
063: */
064: public void testSinglePointRoundTrip() throws SQLException {
065: PointGenerator pg = new PointGenerator();
066: pg.setGeometryFactory(geometryFactory);
067: pg.setBoundingBox(new Envelope(0, 10, 0, 10));
068:
069: Point pt = (Point) pg.create();
070:
071: OraWriter ow = new OraWriter(getConnection());
072: STRUCT st = ow.write(pt);
073:
074: OraReader or = new OraReader();
075: Point pt2 = (Point) or.read(st);
076:
077: // System.out.println((pt==null?"NULL":pt.toString()));
078: // System.out.println((pt2==null?"NULL":pt2.toString()));
079: assertTrue(
080: "The input Point is not the same as the output Point",
081: pt.equals(pt2));
082: }
083:
084: /**
085: * Round Trip test for a 100 non overlapping points
086: * @throws SQLException
087: */
088: public void testGridPointsRoundTrip() throws SQLException {
089: GridGenerator grid = new GridGenerator();
090: grid.setGeometryFactory(geometryFactory);
091: grid.setBoundingBox(new Envelope(0, 10, 0, 10));
092: grid.setNumberColumns(10);
093: grid.setNumberRows(10);
094:
095: Point[] pt = new Point[100];
096: STRUCT[] st = new STRUCT[100];
097:
098: PointGenerator pg = new PointGenerator();
099: pg.setGeometryFactory(geometryFactory);
100: OraWriter ow = new OraWriter(getConnection());
101:
102: int i = 0;
103: while (grid.canCreate() && i < 100) {
104: pg.setBoundingBox(grid.createEnv());
105: pt[i] = (Point) pg.create();
106: st[i] = ow.write(pt[i]);
107: i++;
108: }
109:
110: OraReader or = new OraReader();
111: i = 0;
112: while (i < 100 && pt[i] != null) {
113: Point pt2 = (Point) or.read(st[i]);
114: // System.out.println((pt[i]==null?"NULL":pt[i].toString()));
115: // System.out.println((pt2==null?"NULL":pt2.toString()));
116: assertTrue(
117: "The input Point is not the same as the output Point",
118: pt[i].equals(pt2));
119: i++;
120: }
121: }
122:
123: /**
124: * Round Trip test for a 8 overlapping points (4 distinct points)
125: * @throws SQLException
126: */
127: public void testOverlappingPointsRoundTrip() throws SQLException {
128: GridGenerator grid = new GridGenerator();
129: grid.setGeometryFactory(geometryFactory);
130: grid.setBoundingBox(new Envelope(0, 10, 0, 10));
131: grid.setNumberColumns(2);
132: grid.setNumberRows(2);
133:
134: Point[] pt = new Point[4];
135: STRUCT[] st = new STRUCT[8];
136:
137: PointGenerator pg = new PointGenerator();
138: pg.setGeometryFactory(geometryFactory);
139: OraWriter ow = new OraWriter(getConnection());
140:
141: int i = 0;
142: while (grid.canCreate() && i < 8) {
143: pg.setBoundingBox(grid.createEnv());
144: pt[i] = (Point) pg.create();
145: st[i] = ow.write(pt[i]);
146: i++;
147: }
148: for (int j = 0; j < 4; j++) {
149: if (pt[j] != null)
150: st[i++] = ow.write(pt[j]);
151: }
152:
153: OraReader or = new OraReader();
154: i = 0;
155: while (i < 8 && pt[i % 4] != null) {
156: Point pt2 = (Point) or.read(st[i]);
157: // System.out.println((pt[i]==null?"NULL":pt[i].toString()));
158: // System.out.println((pt2==null?"NULL":pt2.toString()));
159: assertTrue(
160: "The input Point is not the same as the output Point",
161: pt[i % 4].equals(pt2));
162: i++;
163: }
164: }
165: }
|