⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diskfileitemserializetest.java

📁 apache commons-fileupload-1.2.jar
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.fileupload;import java.io.File;import java.io.IOException;import java.io.OutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Arrays;import junit.framework.TestCase;import org.apache.commons.fileupload.disk.DiskFileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;/** * Serialization Unit tests for  *  {@link org.apache.commons.fileupload.disk.DiskFileItem}. */public class DiskFileItemSerializeTest extends TestCase {    /**     * Content type for regular form items.     */    private static final String textContentType = "text/plain";    /**     * Content type for file uploads.     */    private static final String fileContentType = "application/octet-stream";    /**     * Very low threshold for testing memory versus disk options.     */    private static final int threshold = 16;    /**     * Standard JUnit test case constructor.     *     * @param name The name of the test case.     */    public DiskFileItemSerializeTest(String name)    {        super(name);    }    /**     * Test creation of a field for which the amount of data falls below the     * configured threshold.     */    public void testBelowThreshold()    {        // Create the FileItem        byte[] testFieldValueBytes = createContentBytes(threshold - 1);        FileItem item = createFileItem(testFieldValueBytes);        // Check state is as expected        assertTrue("Initial: in memory", item.isInMemory());        assertEquals("Initial: size", item.getSize(), testFieldValueBytes.length);        compareBytes("Initial", item.get(), testFieldValueBytes);        // Serialize & Deserialize        try        {            FileItem newItem = (FileItem)serializeDeserialize(item);            // Test deserialized content is as expected            assertTrue("Check in memory", newItem.isInMemory());            compareBytes("Check", testFieldValueBytes, newItem.get());            // Compare FileItem's (except byte[])            compareFileItems(item, newItem);        }        catch(Exception e)        {            fail("Error Serializing/Deserializing: " + e);        }    }    /**     * Test creation of a field for which the amount of data equals the     * configured threshold.     */    public void testThreshold() {        // Create the FileItem        byte[] testFieldValueBytes = createContentBytes(threshold);        FileItem item = createFileItem(testFieldValueBytes);        // Check state is as expected        assertTrue("Initial: in memory", item.isInMemory());        assertEquals("Initial: size", item.getSize(), testFieldValueBytes.length);        compareBytes("Initial", item.get(), testFieldValueBytes);        // Serialize & Deserialize        try        {            FileItem newItem = (FileItem)serializeDeserialize(item);            // Test deserialized content is as expected            assertTrue("Check in memory", newItem.isInMemory());            compareBytes("Check", testFieldValueBytes, newItem.get());            // Compare FileItem's (except byte[])            compareFileItems(item, newItem);        }        catch(Exception e)        {            fail("Error Serializing/Deserializing: " + e);        }    }    /**     * Test creation of a field for which the amount of data falls above the     * configured threshold.     */    public void testAboveThreshold() {        // Create the FileItem        byte[] testFieldValueBytes = createContentBytes(threshold + 1);        FileItem item = createFileItem(testFieldValueBytes);        // Check state is as expected        assertFalse("Initial: in memory", item.isInMemory());        assertEquals("Initial: size", item.getSize(), testFieldValueBytes.length);        compareBytes("Initial", item.get(), testFieldValueBytes);        // Serialize & Deserialize        try        {            FileItem newItem = (FileItem)serializeDeserialize(item);            // Test deserialized content is as expected            assertFalse("Check in memory", newItem.isInMemory());            compareBytes("Check", testFieldValueBytes, newItem.get());            // Compare FileItem's (except byte[])            compareFileItems(item, newItem);        }        catch(Exception e)        {            fail("Error Serializing/Deserializing: " + e);        }    }    /**     * Compare FileItem's (except the byte[] content)     */    private void compareFileItems(FileItem origItem, FileItem newItem) {        assertTrue("Compare: is in Memory",   origItem.isInMemory()   == newItem.isInMemory());        assertTrue("Compare: is Form Field",  origItem.isFormField()  == newItem.isFormField());        assertEquals("Compare: Field Name",   origItem.getFieldName(),   newItem.getFieldName());        assertEquals("Compare: Content Type", origItem.getContentType(), newItem.getContentType());        assertEquals("Compare: File Name",    origItem.getName(),        newItem.getName());    }    /**     * Compare content bytes.     */    private void compareBytes(String text, byte[] origBytes, byte[] newBytes) {        if (origBytes == null) {            fail(text + " origBytes are null");        }        if (newBytes == null) {            fail(text + " newBytes are null");        }        assertEquals(text + " byte[] length", origBytes.length, newBytes.length);        for (int i = 0; i < origBytes.length; i++) {            assertEquals(text + " byte[" + i + "]", origBytes[i], newBytes[i]);        }    }    /**     * Create content bytes of a specified size.     */    private byte[] createContentBytes(int size) {        StringBuffer buffer = new StringBuffer(size);        byte count = 0;        for (int i = 0; i < size; i++) {            buffer.append(count+"");            count++;            if (count > 9) {                count = 0;            }        }        return buffer.toString().getBytes();    }    /**     * Create a FileItem with the specfied content bytes.     */    private FileItem createFileItem(byte[] contentBytes) {        FileItemFactory factory = new DiskFileItemFactory(threshold, null);        String textFieldName = "textField";        FileItem item = factory.createItem(                textFieldName,                textContentType,                true,                "My File Name"        );        try        {            OutputStream os = item.getOutputStream();            os.write(contentBytes);            os.close();        }        catch(IOException e)        {            fail("Unexpected IOException" + e);        }        return item;    }    /**     * Do serialization and deserialization.     */    private Object serializeDeserialize(Object target) {        // Serialize the test object        ByteArrayOutputStream baos = new ByteArrayOutputStream();        try {            ObjectOutputStream oos = new ObjectOutputStream(baos);            oos.writeObject(target);            oos.flush();            oos.close();        } catch (Exception e) {            fail("Exception during serialization: " + e);        }        // Deserialize the test object        Object result = null;        try {            ByteArrayInputStream bais =                new ByteArrayInputStream(baos.toByteArray());            ObjectInputStream ois = new ObjectInputStream(bais);            result = ois.readObject();            bais.close();        } catch (Exception e) {            fail("Exception during deserialization: " + e);        }        return result;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -