Author: markt Date: Thu Oct 27 17:18:14 2011 New Revision: 1189876 URL: http://svn.apache.org/viewvc?rev=1189876&view=rev Log: Add a test for parameter processing prior to some refactoring
Added: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java (contents, props changed) - copied, changed from r1189857, tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java Modified: tomcat/tc7.0.x/trunk/ (props changed) Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Oct 27 17:18:14 2011 @@ -1 +1 @@ -/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096 ,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104,1186123,1186137,1186153,1186254,1186257,1186377-1186379,1186479-1186480,1186712,1186743,1186750,1186763,1186890-1186892,1186894,1186949,1187018,1187027-1187028,1187381,1187755,1187 775,1187827,1188301,1188303-1188305,1188399,1188822,1188930-1188931,1189116,1189129,1189183,1189240,1189256,1189386,1189413-1189414,1189477,1189685,1189805 +/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096 ,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104,1186123,1186137,1186153,1186254,1186257,1186377-1186379,1186479-1186480,1186712,1186743,1186750,1186763,1186890-1186892,1186894,1186949,1187018,1187027-1187028,1187381,1187755,1187 775,1187827,1188301,1188303-1188305,1188399,1188822,1188930-1188931,1189116,1189129,1189183,1189240,1189256,1189386,1189413-1189414,1189477,1189685,1189805,1189857,1189864 Copied: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java (from r1189857, tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java) URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java?p2=tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java&p1=tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java&r1=1189857&r2=1189876&rev=1189876&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java Thu Oct 27 17:18:14 2011 @@ -1,170 +1,170 @@ -/* - * 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.http; - -import java.util.Enumeration; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import org.junit.Test; - -import org.apache.tomcat.util.buf.UEncoder; - -public class TestParameters { - - private static final Parameter SIMPLE = - new Parameter("foo1", "bar1"); - private static final Parameter SIMPLE_MULTIPLE = - new Parameter("foo2", "bar1", "bar2"); - private static final Parameter NO_VALUE = - new Parameter("foo3"); - private static final Parameter EMPTY_VALUE = - new Parameter("foo4", ""); - private static final Parameter EMPTY = - new Parameter(""); - - @Test - public void testProcessParametersByteArrayIntInt() { - doTestProcessParametersByteArrayIntInt(SIMPLE); - doTestProcessParametersByteArrayIntInt(SIMPLE_MULTIPLE); - doTestProcessParametersByteArrayIntInt(NO_VALUE); - doTestProcessParametersByteArrayIntInt(EMPTY_VALUE); - doTestProcessParametersByteArrayIntInt(EMPTY); - doTestProcessParametersByteArrayIntInt( - SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY); - doTestProcessParametersByteArrayIntInt( - SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE); - doTestProcessParametersByteArrayIntInt( - NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE); - doTestProcessParametersByteArrayIntInt( - EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE); - doTestProcessParametersByteArrayIntInt( - EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE); - } - - // Make sure the inner Parameter class behaves correctly - @Test - public void testInternal() { - assertEquals("foo1=bar1", SIMPLE.toString()); - assertEquals("foo2=bar1&foo2=bar2", SIMPLE_MULTIPLE.toString()); - assertEquals("foo3", NO_VALUE.toString()); - assertEquals("foo4=", EMPTY_VALUE.toString()); - } - - private long doTestProcessParametersByteArrayIntInt( - Parameter... parameters) { - // Build the byte array - StringBuilder input = new StringBuilder(); - boolean first = true; - for (Parameter parameter : parameters) { - if (first) { - first = false; - } else { - input.append('&'); - } - input.append(parameter.toString()); - } - - byte[] data = input.toString().getBytes(); - - Parameters p = new Parameters(); - p.setEncoding("UTF-8"); - - long start = System.nanoTime(); - p.processParameters(data, 0, data.length); - long end = System.nanoTime(); - - validateParameters(parameters, p); - return end - start; - } - - private void validateParameters(Parameter[] parameters, Parameters p) { - Enumeration<String> names = p.getParameterNames(); - - int i = 0; - while (names.hasMoreElements()) { - while (parameters[i].getName() == null) { - i++; - } - - String name = names.nextElement(); - String[] values = p.getParameterValues(name); - - boolean match = false; - - for (Parameter parameter : parameters) { - if (name.equals(parameter.getName())) { - match = true; - if (parameter.values.length == 0) { - // Special case - assertArrayEquals(new String[] {""}, values); - } else { - assertArrayEquals(parameter.getValues(), values); - } - break; - } - } - assertTrue(match); - } - } - - private static class Parameter { - private final String name; - private final String[] values; - - UEncoder uencoder = new UEncoder(); - - public Parameter(String name, String... values) { - this.name = name; - this.values = values; - } - - public String getName() { - return name; - } - - public String[] getValues() { - return values; - } - - @Override - public String toString() { - StringBuilder result = new StringBuilder(); - boolean first = true; - if (values.length == 0) { - return name; - } - for (String value : values) { - if (first) { - first = false; - } else { - result.append('&'); - } - if (name != null) { - result.append(uencoder.encodeURL(name)); - } - if (value != null) { - result.append('='); - result.append(value); - } - } - - return result.toString(); - } - } -} +/* + * 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.http; + +import java.util.Enumeration; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +import org.apache.tomcat.util.buf.UEncoder; + +public class TestParameters { + + private static final Parameter SIMPLE = + new Parameter("foo1", "bar1"); + private static final Parameter SIMPLE_MULTIPLE = + new Parameter("foo2", "bar1", "bar2"); + private static final Parameter NO_VALUE = + new Parameter("foo3"); + private static final Parameter EMPTY_VALUE = + new Parameter("foo4", ""); + private static final Parameter EMPTY = + new Parameter(""); + + @Test + public void testProcessParametersByteArrayIntInt() { + doTestProcessParametersByteArrayIntInt(SIMPLE); + doTestProcessParametersByteArrayIntInt(SIMPLE_MULTIPLE); + doTestProcessParametersByteArrayIntInt(NO_VALUE); + doTestProcessParametersByteArrayIntInt(EMPTY_VALUE); + doTestProcessParametersByteArrayIntInt(EMPTY); + doTestProcessParametersByteArrayIntInt( + SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY); + doTestProcessParametersByteArrayIntInt( + SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE); + doTestProcessParametersByteArrayIntInt( + NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE); + doTestProcessParametersByteArrayIntInt( + EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE); + doTestProcessParametersByteArrayIntInt( + EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE); + } + + // Make sure the inner Parameter class behaves correctly + @Test + public void testInternal() { + assertEquals("foo1=bar1", SIMPLE.toString()); + assertEquals("foo2=bar1&foo2=bar2", SIMPLE_MULTIPLE.toString()); + assertEquals("foo3", NO_VALUE.toString()); + assertEquals("foo4=", EMPTY_VALUE.toString()); + } + + private long doTestProcessParametersByteArrayIntInt( + Parameter... parameters) { + // Build the byte array + StringBuilder input = new StringBuilder(); + boolean first = true; + for (Parameter parameter : parameters) { + if (first) { + first = false; + } else { + input.append('&'); + } + input.append(parameter.toString()); + } + + byte[] data = input.toString().getBytes(); + + Parameters p = new Parameters(); + p.setEncoding("UTF-8"); + + long start = System.nanoTime(); + p.processParameters(data, 0, data.length); + long end = System.nanoTime(); + + validateParameters(parameters, p); + return end - start; + } + + private void validateParameters(Parameter[] parameters, Parameters p) { + Enumeration<String> names = p.getParameterNames(); + + int i = 0; + while (names.hasMoreElements()) { + while (parameters[i].getName() == null) { + i++; + } + + String name = names.nextElement(); + String[] values = p.getParameterValues(name); + + boolean match = false; + + for (Parameter parameter : parameters) { + if (name.equals(parameter.getName())) { + match = true; + if (parameter.values.length == 0) { + // Special case + assertArrayEquals(new String[] {""}, values); + } else { + assertArrayEquals(parameter.getValues(), values); + } + break; + } + } + assertTrue(match); + } + } + + private static class Parameter { + private final String name; + private final String[] values; + + UEncoder uencoder = new UEncoder(); + + public Parameter(String name, String... values) { + this.name = name; + this.values = values; + } + + public String getName() { + return name; + } + + public String[] getValues() { + return values; + } + + @Override + public String toString() { + StringBuilder result = new StringBuilder(); + boolean first = true; + if (values.length == 0) { + return name; + } + for (String value : values) { + if (first) { + first = false; + } else { + result.append('&'); + } + if (name != null) { + result.append(uencoder.encodeURL(name)); + } + if (value != null) { + result.append('='); + result.append(value); + } + } + + return result.toString(); + } + } +} Propchange: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org