ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/test/org/apache/tomcat/util/buf/TestB2CConverter.java

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/test/org/apache/tomcat/util/buf/TestB2CConverter.java
Status
scanned
Type
file
Name
TestB2CConverter.java
Extension
.java
Programming language
Java
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
4861 (4.7 KB)
MD5
891caa218c7c67b50a8be154a634f9e2
SHA1
34a62f6dc6f5c7ef35a778083c887c0e59680434
SHA256
20a69335e64926fb572e70742f9b51f52a9bf214e9e7d11abd888b5f55a63519
SHA512

      
    
SHA1_git
474beb6ca751cc5bd134fb31043b71f3c3e32cbe
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
TestB2CConverter.java | 4.7 KB |

/* * 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.tomcat.util.buf; import java.nio.charset.Charset; import java.nio.charset.MalformedInputException; import java.nio.charset.StandardCharsets; import java.util.Locale; import org.junit.Assert; import org.junit.Test; public class TestB2CConverter { private static final byte[] UTF16_MESSAGE = new byte[] {-2, -1, 0, 65, 0, 66, 0, 67}; private static final byte[] UTF8_INVALID = new byte[] {-8, -69, -73, -77}; private static final byte[] UTF8_PARTIAL = new byte[] {-50}; @Test public void testSingleMessage() throws Exception { testMessages(1); } @Test public void testTwoMessage() throws Exception { testMessages(2); } @Test public void testManyMessage() throws Exception { testMessages(10); } private void testMessages(int msgCount) throws Exception { B2CConverter conv = new B2CConverter(StandardCharsets.UTF_16); ByteChunk bc = new ByteChunk(); CharChunk cc = new CharChunk(32); for (int i = 0; i < msgCount; i++) { bc.append(UTF16_MESSAGE, 0, UTF16_MESSAGE.length); conv.convert(bc, cc, true); Assert.assertEquals("ABC", cc.toString()); bc.recycle(); cc.recycle(); conv.recycle(); } System.out.println(cc); } @Test public void testLeftoverSize() { float maxLeftover = 0; String charsetName = "UNSET"; for (Charset charset : Charset.availableCharsets().values()) { float leftover; if (charset.name().toLowerCase(Locale.ENGLISH).startsWith("x-")) { // Non-standard charset that browsers won't be using // Likely something used internally by the JRE continue; } try { leftover = charset.newEncoder().maxBytesPerChar(); } catch (UnsupportedOperationException uoe) { // Skip it continue; } if (leftover > maxLeftover) { maxLeftover = leftover; charsetName = charset.name(); } } Assert.assertTrue("Limit needs to be at least " + maxLeftover + " (used in charset '" + charsetName + "')", maxLeftover <= B2CConverter.LEFTOVER_SIZE); } @Test(expected=MalformedInputException.class) public void testBug54602a() throws Exception { // Check invalid input is rejected straight away B2CConverter conv = new B2CConverter(StandardCharsets.UTF_8); ByteChunk bc = new ByteChunk(); CharChunk cc = new CharChunk(); bc.append(UTF8_INVALID, 0, UTF8_INVALID.length); cc.allocate(bc.getLength(), -1); conv.convert(bc, cc, false); } @Test(expected=MalformedInputException.class) public void testBug54602b() throws Exception { // Check partial input is rejected B2CConverter conv = new B2CConverter(StandardCharsets.UTF_8); ByteChunk bc = new ByteChunk(); CharChunk cc = new CharChunk(); bc.append(UTF8_PARTIAL, 0, UTF8_PARTIAL.length); cc.allocate(bc.getLength(), -1); conv.convert(bc, cc, true); } @Test public void testBug54602c() throws Exception { // Check partial input is rejected once it is known to be all available B2CConverter conv = new B2CConverter(StandardCharsets.UTF_8); ByteChunk bc = new ByteChunk(); CharChunk cc = new CharChunk(); bc.append(UTF8_PARTIAL, 0, UTF8_PARTIAL.length); cc.allocate(bc.getLength(), -1); conv.convert(bc, cc, false); Exception e = null; try { conv.convert(bc, cc, true); } catch (MalformedInputException mie) { e = mie; } Assert.assertNotNull(e); } }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
23.11
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9