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

📄 defaultfileitemtest.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.util.Arrays;import junit.framework.TestCase;import org.apache.commons.fileupload.DefaultFileItem;import org.apache.commons.fileupload.DefaultFileItemFactory;/** * Unit tests for {@link org.apache.commons.fileupload.DefaultFileItem}. * * @author <a href="mailto:martinc@apache.org">Martin Cooper</a> */public class DefaultFileItemTest 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 DefaultFileItemTest(String name)    {        super(name);    }    /**     * Test construction of a regular text field.     */    public void testTextFieldConstruction()    {        FileItemFactory factory = createFactory(null);        String textFieldName = "textField";        FileItem item = factory.createItem(                textFieldName,                textContentType,                true,                null        );        assertNotNull(item);        assertEquals(item.getFieldName(), textFieldName);        assertEquals(item.getContentType(), textContentType);        assertTrue(item.isFormField());        assertNull(item.getName());    }    /**     * Test construction of a file field.     */    public void testFileFieldConstruction()    {        FileItemFactory factory = createFactory(null);        String fileFieldName = "fileField";        String fileName = "originalFileName";        FileItem item = factory.createItem(                fileFieldName,                fileContentType,                false,                fileName        );        assertNotNull(item);        assertEquals(item.getFieldName(), fileFieldName);        assertEquals(item.getContentType(), fileContentType);        assertFalse(item.isFormField());        assertEquals(item.getName(), fileName);    }    /**     * Test creation of a field for which the amount of data falls below the     * configured threshold.     */    public void testBelowThreshold()    {        FileItemFactory factory = createFactory(null);        String textFieldName = "textField";        String textFieldValue = "0123456789";        byte[] testFieldValueBytes = textFieldValue.getBytes();        FileItem item = factory.createItem(                textFieldName,                textContentType,                true,                null        );        assertNotNull(item);        try        {            OutputStream os = item.getOutputStream();            os.write(testFieldValueBytes);            os.close();        }        catch(IOException e)        {            fail("Unexpected IOException");        }        assertTrue(item.isInMemory());        assertEquals(item.getSize(), testFieldValueBytes.length);        assertTrue(Arrays.equals(item.get(), testFieldValueBytes));        assertEquals(item.getString(), textFieldValue);    }    /**     * Test creation of a field for which the amount of data falls above the     * configured threshold, where no specific repository is configured.     */    public void testAboveThresholdDefaultRepository()    {        doTestAboveThreshold(null);    }    /**     * Test creation of a field for which the amount of data falls above the     * configured threshold, where a specific repository is configured.     */    public void testAboveThresholdSpecifiedRepository()    {        String tempPath = System.getProperty("java.io.tmpdir");        String tempDirName = "testAboveThresholdSpecifiedRepository";        File tempDir = new File(tempPath, tempDirName);        tempDir.mkdir();        doTestAboveThreshold(tempDir);        assertTrue(tempDir.delete());    }    /**     * Common code for cases where the amount of data is above the configured     * threshold, but the ultimate destination of the data has not yet been     * determined.     *     * @param repository The directory within which temporary files will be     *                   created.     */    public void doTestAboveThreshold(File repository)    {        FileItemFactory factory = createFactory(repository);        String textFieldName = "textField";        String textFieldValue = "01234567890123456789";        byte[] testFieldValueBytes = textFieldValue.getBytes();        FileItem item = factory.createItem(                textFieldName,                textContentType,                true,                null        );        assertNotNull(item);        try        {            OutputStream os = item.getOutputStream();            os.write(testFieldValueBytes);            os.close();        }        catch(IOException e)        {            fail("Unexpected IOException");        }        assertFalse(item.isInMemory());        assertEquals(item.getSize(), testFieldValueBytes.length);        assertTrue(Arrays.equals(item.get(), testFieldValueBytes));        assertEquals(item.getString(), textFieldValue);        assertTrue(item instanceof DefaultFileItem);        DefaultFileItem dfi = (DefaultFileItem) item;        File storeLocation = dfi.getStoreLocation();        assertNotNull(storeLocation);        assertTrue(storeLocation.exists());        assertEquals(storeLocation.length(), testFieldValueBytes.length);        if (repository != null)        {            assertEquals(storeLocation.getParentFile(), repository);        }        item.delete();    }    /**     * Creates a new <code>FileItemFactory</code> and returns it, obscuring     * from the caller the underlying implementation of this interface.     *     * @param repository The directory within which temporary files will be     *                   created.     * @return the new <code>FileItemFactory</code> instance.     */    protected FileItemFactory createFactory(File repository)    {        return new DefaultFileItemFactory(threshold, repository);    }    static final String CHARSET_ISO88591 = "ISO-8859-1";    static final String CHARSET_ASCII = "US-ASCII";    static final String CHARSET_UTF8 = "UTF-8";    static final String CHARSET_KOI8_R = "KOI8_R";    static final String CHARSET_WIN1251 = "Cp1251";    static final int SWISS_GERMAN_STUFF_UNICODE [] =     {        0x47, 0x72, 0xFC, 0x65, 0x7A, 0x69, 0x5F, 0x7A, 0xE4, 0x6D, 0xE4    };        static final int SWISS_GERMAN_STUFF_ISO8859_1 [] =     {        0x47, 0x72, 0xFC, 0x65, 0x7A, 0x69, 0x5F, 0x7A, 0xE4, 0x6D, 0xE4    };        static final int SWISS_GERMAN_STUFF_UTF8 [] =     {        0x47, 0x72, 0xC3, 0xBC, 0x65, 0x7A, 0x69, 0x5F, 0x7A, 0xC3, 0xA4,        0x6D, 0xC3, 0xA4    };    static final int RUSSIAN_STUFF_UNICODE [] =     {        0x412, 0x441, 0x435, 0x43C, 0x5F, 0x43F, 0x440, 0x438,         0x432, 0x435, 0x442     };     static final int RUSSIAN_STUFF_UTF8 [] =     {        0xD0, 0x92, 0xD1, 0x81, 0xD0, 0xB5, 0xD0, 0xBC, 0x5F,         0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0,         0xB5, 0xD1, 0x82    };    static final int RUSSIAN_STUFF_KOI8R [] =     {        0xF7, 0xD3, 0xC5, 0xCD, 0x5F, 0xD0, 0xD2, 0xC9, 0xD7,         0xC5, 0xD4    };    static final int RUSSIAN_STUFF_WIN1251 [] =     {        0xC2, 0xF1, 0xE5, 0xEC, 0x5F, 0xEF, 0xF0, 0xE8, 0xE2,         0xE5, 0xF2    };    private static String constructString(int[] unicodeChars)    {        StringBuffer buffer = new StringBuffer();        if (unicodeChars != null)        {            for (int i = 0; i < unicodeChars.length; i++)            {                buffer.append((char) unicodeChars[i]);            }        }        return buffer.toString();    }    /**     * Test construction of content charset.     */    public void testContentCharSet() throws Exception    {        FileItemFactory factory = createFactory(null);        String teststr = constructString(SWISS_GERMAN_STUFF_UNICODE);        FileItem item =            factory.createItem(                "doesnotmatter",                "text/plain; charset=" + CHARSET_ISO88591,                true,                null);        OutputStream outstream = item.getOutputStream();        for (int i = 0; i < SWISS_GERMAN_STUFF_ISO8859_1.length; i++)        {            outstream.write(SWISS_GERMAN_STUFF_ISO8859_1[i]);        }        outstream.close();        assertEquals(teststr, teststr, item.getString());        item =            factory.createItem(                "doesnotmatter",                "text/plain; charset=" + CHARSET_UTF8,                true,                null);        outstream = item.getOutputStream();        for (int i = 0; i < SWISS_GERMAN_STUFF_UTF8.length; i++)        {            outstream.write(SWISS_GERMAN_STUFF_UTF8[i]);        }        outstream.close();        assertEquals(teststr, teststr, item.getString());        teststr = constructString(RUSSIAN_STUFF_UNICODE);        item =            factory.createItem(                "doesnotmatter",                "text/plain; charset=" + CHARSET_KOI8_R,                true,                null);        outstream = item.getOutputStream();        for (int i = 0; i < RUSSIAN_STUFF_KOI8R.length; i++)        {            outstream.write(RUSSIAN_STUFF_KOI8R[i]);        }        outstream.close();        assertEquals(teststr, teststr, item.getString());        item =            factory.createItem(                "doesnotmatter",                "text/plain; charset=" + CHARSET_WIN1251,                true,                null);        outstream = item.getOutputStream();        for (int i = 0; i < RUSSIAN_STUFF_WIN1251.length; i++)        {            outstream.write(RUSSIAN_STUFF_WIN1251[i]);        }        outstream.close();        assertEquals(teststr, teststr, item.getString());        item =            factory.createItem(                "doesnotmatter",                "text/plain; charset=" + CHARSET_UTF8,                true,                null);        outstream = item.getOutputStream();        for (int i = 0; i < RUSSIAN_STUFF_UTF8.length; i++)        {            outstream.write(RUSSIAN_STUFF_UTF8[i]);        }        outstream.close();        assertEquals(teststr, teststr, item.getString());    }}

⌨️ 快捷键说明

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