| 1 16 package scriptella.jdbc; 17 18 import scriptella.AbstractTestCase; 19 import scriptella.util.IOUtils; 20 21 import java.io.ByteArrayInputStream ; 22 import java.io.File ; 23 import java.io.IOException ; 24 import java.io.InputStream ; 25 import java.io.OutputStream ; 26 import java.io.StringReader ; 27 import java.net.URL ; 28 import java.sql.SQLException ; 29 import java.util.Arrays ; 30 31 37 public class LobsTest extends AbstractTestCase { 38 private static final byte[] bsob=new byte[1024*10]; private static final byte[] blob=new byte[1024*110]; private static final String clob; 41 private static final String csob; 42 static { 43 45 for (int i=0;i<blob.length;i++) { 46 blob[i]= (byte) (0x30+i%10); 47 } 48 clob=new String (blob); 49 for (int i=0;i<bsob.length;i++) { 50 bsob[i]= (byte) (0x30+i%10); 51 } 52 csob=new String (bsob); 53 54 56 } 57 58 public void testBlob() throws IOException { 59 Lobs.ReadonlyBlob b = (Lobs.ReadonlyBlob) Lobs.newBlob(new ByteArrayInputStream (blob)); 61 assertNull(b.tmpFile); 62 assertEquals(blob.length, b.length()); 63 File tmpFile = b.tmpFile; 64 assertNotNull(tmpFile); 65 assertTrue(tmpFile.exists()); assertEquals(blob.length, tmpFile.length()); assertTrue(Arrays.equals(blob, IOUtils.toByteArray(b.getBinaryStream()))); 68 assertTrue(Arrays.equals(blob, IOUtils.toByteArray(b.getBinaryStream()))); 70 71 b.close(); 72 assertFalse(tmpFile.exists()); b = (Lobs.ReadonlyBlob) Lobs.newBlob(new ByteArrayInputStream (bsob)); 75 assertNull(b.tmpFile); 76 assertEquals(bsob.length, b.length()); 77 assertNull(b.tmpFile); 78 assertTrue(Arrays.equals(bsob, IOUtils.toByteArray(b.getBinaryStream()))); 79 b.close(); b = (Lobs.ReadonlyBlob) Lobs.newBlob(new ByteArrayInputStream (blob), blob.length); 82 assertNull(b.tmpFile); 83 assertEquals(blob.length, b.length()); 84 assertNull(b.tmpFile); assertTrue(Arrays.equals(blob, IOUtils.toByteArray(b.getBinaryStream()))); 86 tmpFile = b.tmpFile; 87 assertNotNull(tmpFile); b.close(); 89 90 } 91 92 public void testUrlBlob() throws IOException , SQLException { 93 testURLHandler = new TestURLHandler() { 94 public InputStream getInputStream(final URL u) { 95 return new ByteArrayInputStream (bsob); 96 } 97 98 public OutputStream getOutputStream(final URL u) { 99 throw new UnsupportedOperationException (); 100 } 101 102 public int getContentLength(final URL u) { 103 return bsob.length; 104 } 105 }; 106 Lobs.UrlBlob b= (Lobs.UrlBlob) Lobs.newBlob(new URL ("tst://file")); 107 assertTrue(Arrays.equals(bsob, IOUtils.toByteArray(b.getBinaryStream()))); 108 assertTrue(Arrays.equals(bsob, IOUtils.toByteArray(b.getBinaryStream()))); 110 111 assertEquals(bsob.length, b.length()); 112 b.close(); 113 testURLHandler = new TestURLHandler() { 114 public InputStream getInputStream(final URL u) { 115 return new ByteArrayInputStream (bsob); 116 } 117 118 public OutputStream getOutputStream(final URL u) { 119 throw new UnsupportedOperationException (); 120 } 121 122 public int getContentLength(final URL u) { 123 return -1; 124 } 125 }; 126 b = (Lobs.UrlBlob) Lobs.newBlob(new URL ("tst://file")); 127 assertTrue(Arrays.equals(bsob, IOUtils.toByteArray(b.getBinaryStream()))); 128 assertTrue(Arrays.equals(bsob, IOUtils.toByteArray(b.getBinaryStream()))); 130 assertEquals(bsob.length, b.length()); 131 b.close(); 132 assertNull(b.tmpFile); 133 } 134 135 public void testClob() throws IOException { 136 Lobs.ReadonlyClob c = (Lobs.ReadonlyClob) Lobs.newClob(new StringReader (clob)); 138 assertNull(c.tmpFile); 139 assertEquals(clob.length(), c.length()); 140 assertNotNull(c.tmpFile); 141 File tmp = c.tmpFile; 142 assertEquals(clob, IOUtils.toString(c.getCharacterStream())); 143 assertEquals(clob, IOUtils.toString(c.getCharacterStream())); 145 c.close(); 146 assertFalse(tmp.exists()); c = (Lobs.ReadonlyClob) Lobs.newClob(new StringReader (csob)); 149 assertNull(c.tmpFile); 150 assertEquals(csob.length(), c.length()); 151 assertNull(c.tmpFile); 152 assertEquals(csob, IOUtils.toString(c.getCharacterStream())); 153 c.close(); 154 c = (Lobs.ReadonlyClob) Lobs.newClob(new StringReader (clob), clob.length()); 156 assertNull(c.tmpFile); 157 assertEquals(clob.length(), c.length()); 158 assertNull(c.tmpFile); c.close(); 160 } 161 } | Popular Tags |