?? multipartboundaryinputstreamtest.java
字號(hào):
public void testThreeMixedElementData() throws Exception
{
MultipartBoundaryInputStream inputStream = new MultipartBoundaryInputStream();
inputStream.setBoundary(BOUNDARY_THREE_TEXT_ELEMENT);
inputStream.setInputStream(this.threeMixedElementDataStream);
//get first element
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_THREE_MIXED_ELEMENT_1, inputStream.getElementName());
assertTrue(inputStream.isElementFile());
assertEquals("text/html", inputStream.getElementContentType());
assertTrue(!inputStream.isBoundaryEncountered());
//read the element
String resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
String desiredData = streamToString(this.testFile5400bDataStream);
assertEquals(desiredData, resultData);
//get second element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_THREE_MIXED_ELEMENT_2, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals(DESIRED_TEST_DATA_1, resultData);
//get third element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_THREE_MIXED_ELEMENT_3, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals(DESIRED_TEST_DATA_2, resultData);
//make sure the stream knows it's done
assertTrue(inputStream.isFinalBoundaryEncountered());
assertTrue(inputStream.isEndOfStream());
}
/**
* Tests a file filled with many, many newlines. A veritable plethora of newlines.
*/
public void testManyNewlines() throws Exception
{
MultipartBoundaryInputStream inputStream = new MultipartBoundaryInputStream();
inputStream.setBoundary(BOUNDARY_THREE_TEXT_ELEMENT);
inputStream.setInputStream(this.newlinesDataStream);
//get first element
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_THREE_MIXED_ELEMENT_1, inputStream.getElementName());
assertTrue(inputStream.isElementFile());
assertEquals("text/html", inputStream.getElementContentType());
//read the element
String resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
String desiredData = streamToString(this.testFileNewlines);
assertEquals(desiredData, resultData);
//get second element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_THREE_MIXED_ELEMENT_2, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals(DESIRED_TEST_DATA_1, resultData);
//get third element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_THREE_MIXED_ELEMENT_3, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals(DESIRED_TEST_DATA_2, resultData);
//make sure the stream knows it's done
assertTrue(inputStream.isFinalBoundaryEncountered());
assertTrue(inputStream.isEndOfStream());
}
/**
* This file caused a problem in the past. This test is here to make sure it doesn't happen again.
*/
public void testProblemFile1() throws Exception
{
MultipartBoundaryInputStream inputStream = new MultipartBoundaryInputStream();
inputStream.setBoundary(BOUNDARY_PROBLEM1);
inputStream.setInputStream(this.testProblem1);
//get the first element
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_1, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
String resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("test", resultData);
//get second element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_2, inputStream.getElementName());
assertTrue(inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
String desiredData = streamToString(this.testFileProblem1);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals(desiredData, resultData);
//get third element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_3, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("on", resultData);
//get fourth element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_4, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("c:\\multipart-test.txt", resultData);
//get last element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_5, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("Submit", resultData);
assertTrue(inputStream.isFinalBoundaryEncountered());
assertTrue(inputStream.isEndOfStream());
}
public void testProblemFile2() throws Exception
{
MultipartBoundaryInputStream inputStream = new MultipartBoundaryInputStream();
inputStream.setBoundary(BOUNDARY_PROBLEM2);
inputStream.setInputStream(this.testProblem2);
//get the first element
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_1, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
String resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("test", resultData);
//get second element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_2, inputStream.getElementName());
assertEquals("hist202.doc", inputStream.getElementFileName());
assertTrue(inputStream.isElementFile());
assertEquals("application/msword", inputStream.getElementContentType());
//read the element
assertEquals(this.testFileProblem2, inputStream);
assertTrue(inputStream.isBoundaryEncountered());
//get third element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_3, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("on", resultData);
//get fourth element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_4, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("c:\\multipart-test.txt", resultData);
//get last element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_5, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("Submit", resultData);
assertTrue(inputStream.isFinalBoundaryEncountered());
assertTrue(inputStream.isEndOfStream());
}
public void testProblemFile3() throws Exception
{
MultipartBoundaryInputStream inputStream = new MultipartBoundaryInputStream();
inputStream.setBoundary(BOUNDARY_PROBLEM3);
inputStream.setInputStream(this.testProblem3);
//get the first element
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_1, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
String resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("test", resultData);
//get second element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_2, inputStream.getElementName());
assertEquals("testmp3.mp3", inputStream.getElementFileName());
assertTrue(inputStream.isElementFile());
assertEquals("audio/mpeg", inputStream.getElementContentType());
//read the element
assertEquals(this.testFileProblem3, inputStream);
assertTrue(inputStream.isBoundaryEncountered());
//get third element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_3, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("on", resultData);
//get fourth element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_4, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("c:\\multipart-test7.mp3", resultData);
//get last element
inputStream.resetForNextBoundary();
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_5, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("Submit", resultData);
assertTrue(inputStream.isFinalBoundaryEncountered());
assertTrue(inputStream.isEndOfStream());
}
public void testMaxLengthExceeded() throws Exception
{
MultipartBoundaryInputStream inputStream = new MultipartBoundaryInputStream();
inputStream.setMaxLength(1500);
inputStream.setBoundary(BOUNDARY_PROBLEM3);
inputStream.setInputStream(this.testProblem3);
//get the first element
assertEquals(DISPOSITION_FORM_DATA, inputStream.getElementContentDisposition());
assertEquals(NAME_PROBLEM1_1, inputStream.getElementName());
assertTrue(!inputStream.isElementFile());
assertEquals(CONTENT_TYPE_TEXT_PLAIN, inputStream.getElementContentType());
//read the element
String resultData = streamToString(inputStream);
assertTrue(inputStream.isBoundaryEncountered());
assertEquals("test", resultData);
//get second element
inputStream.resetForNextBoundary();
byte[] result = toByteArray(inputStream);
assertTrue(inputStream.isMaxLengthMet());
assertTrue(inputStream.getBytesRead() == 1500);
assertTrue(result.length < 1500);
}
public static void assertEquals(InputStream desired, InputStream actual) throws Exception
{
byte[] desiredBytes = toByteArray(desired);
byte[] actualBytes = toByteArray(actual);
if (!Arrays.equals(desiredBytes, actualBytes))
{
fail("Actual bytes don't match the desired bytes");
}
}
public static byte[] toByteArray(InputStream stream) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int read = 0;
while ((read = stream.read(buffer, 0, buffer.length)) != -1)
{
baos.write(buffer, 0, read);
}
return baos.toByteArray();
}
private final String streamToString(InputStream inputStream) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int read = 0;
int length = 0;
while ((read = inputStream.read(buffer, 0, buffer.length)) != -1)
{
baos.write(buffer, 0, read);
length += read;
}
return baos.toString();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -