/* * Copyright (C) 2009 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.impl.value; import junit.framework.TestCase; import org.exoplatform.services.jcr.datamodel.Identifier; import org.exoplatform.services.jcr.impl.core.value.BinaryValue; import org.exoplatform.services.jcr.impl.core.value.BooleanValue; import org.exoplatform.services.jcr.impl.core.value.DoubleValue; import org.exoplatform.services.jcr.impl.core.value.LongValue; import org.exoplatform.services.jcr.impl.core.value.StringValue; import org.exoplatform.services.jcr.impl.dataflow.SpoolConfig; import org.exoplatform.services.jcr.impl.dataflow.TransientValueData; import org.exoplatform.services.jcr.impl.util.io.FileCleaner; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; /** * Created by The eXo Platform SAS. * * @author Gennady Azarenkov * @version $Id: TestValueImpl.java 34801 2009-07-31 15:44:50Z dkatayev $ */ public class TestValueImpl extends TestCase { private File tempDirectory = new File(System.getProperty("java.io.tmpdir")); private int maxFufferSize = 10; public void testNewBinaryValue() throws Exception { FileCleaner testFileCleaner = new FileCleaner(); try { byte[] buf = "012345678901234567890123456789".getBytes(); File file = new File("target/testNewBinaryValue"); if (file.exists()) file.delete(); FileOutputStream out = new FileOutputStream(file); out.write(buf); out.close(); FileInputStream fs1 = new FileInputStream(file); BinaryValue val = new BinaryValue(fs1, SpoolConfig.getDefaultSpoolConfig()); InputStream str1 = val.getStream(); assertNotNull(str1); // obj returned by getStream() is not the same as incoming stream assertNotSame(str1, fs1); // streams returned by subsequent call of val.getStream() are equals assertEquals(str1, val.getStream()); // another one value using the same string BinaryValue val2 = new BinaryValue(fs1, SpoolConfig.getDefaultSpoolConfig()); InputStream str2 = val2.getStream(); // are not the same although created from same Stream assertNotSame(str1, str2); // stream already consumed try { val.getString(); fail("IllegalStateException should have been thrown"); } catch (IllegalStateException e) { } // System.out.println(" >>>>>>>>STRING >>> "+); } finally { testFileCleaner.halt(); } } public void testNewBinaryValueFromString() throws Exception { BinaryValue val = new BinaryValue(new ByteArrayInputStream("string".getBytes()), SpoolConfig.getDefaultSpoolConfig()); InputStream str1 = val.getStream(); assertNotNull(str1); // stream already consumed try { val.getString(); fail("IllegalStateException should have been thrown"); } catch (IllegalStateException e) { } BinaryValue val2 = new BinaryValue(new ByteArrayInputStream("stream".getBytes()), SpoolConfig.getDefaultSpoolConfig()); String str2 = val2.getString(); assertNotNull(str2); // string already consumed try { val2.getStream(); fail("IllegalStateException should have been thrown"); } catch (IllegalStateException e) { } } public void testNewStringValue() throws Exception { StringValue sv = new StringValue("string"); assertEquals(6, sv.getLength()); assertEquals("string", sv.getString()); // string already consumed try { sv.getStream(); fail("IllegalStateException should have been thrown"); } catch (IllegalStateException e) { } // default encoded string (utf-8) StringValue sv2 = new StringValue("����"); // assertEquals(8, sv2.getLength()); sv2.getStream(); } public void testNewBooleanValue() throws Exception { BooleanValue bv = new BooleanValue(true); assertTrue(bv.getBoolean()); } // // public void testNewDateValueData() throws Exception { // // Calendar cal = Calendar.getInstance(); // long time = cal.getTimeInMillis(); // //String str = ISO8601.format(cal); // TransientValueData vd = new TransientValueData(cal); // /// ???????????????? // //assertEquals(time, ISO8601.parse(new String(vd.getAsByteArray())).getTimeInMillis()); // fail("How to compare Date Value ?????"); // // } // public void testNewDoubleValueData() throws Exception { DoubleValue dv = new DoubleValue(3.14); assertEquals(3.14, dv.getDouble()); } public void testNewLongValueData() throws Exception { LongValue lv = new LongValue(314); assertEquals(314, lv.getLong()); } // public void testNewPathValueData() throws Exception { // InternalQPath path = InternalQPath.parse("[]:1[]test:1"); // PathValue pv = new PathValue(path); // assertEquals(path, pv.getPath()); // } // // public void testNewNameValueData() throws Exception { // InternalQName name = InternalQName.parse("[]test"); // NameValue nv = new NameValue(name, ); // assertEquals(name, nv.getQName()); // } public void testNewUuidValueData() throws Exception { TransientValueData vd = new TransientValueData(new Identifier("1234")); assertEquals("1234", new String(vd.getAsByteArray())); } }