http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/types/selectors/README ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/types/selectors/README b/src/tests/junit/org/apache/tools/ant/types/selectors/README index eb48f6b..de407b4 100644 --- a/src/tests/junit/org/apache/tools/ant/types/selectors/README +++ b/src/tests/junit/org/apache/tools/ant/types/selectors/README @@ -1,96 +1,96 @@ -A DESCRIPTION OF THE SELECTOR TEST FRAMEWORK - -When writing tests for selectors, I found that I wanted to have some -standard way of working with a set of files and testing whether one or -another of them was selected. To that end, I created a base class called -BaseSelectorTest that does most of the heavy lifting. Of course, you can -test your selectors any way you want, but if you want to reuse this code, -read on. - -What BaseSelectorTest does is use an ant build file -"src/etc/testcases/types/selector.xml" to copy a tree of files out of -"src/etc/testcases/taskdefs/expected" into a "selectortest" directories. -Then it takes a list of 12 of the files and directories in this tree, and -applies whatever selector you pass in to each one. It passes back to your -test a 12 character long string indicating which of the 12 files and -directories was selected, using 'T' for selected and 'F' for not selected. -In the Test class for your selector, you override the getInstance() method -to create your own type of selector, and set the elements of your selector -a variety of ways to ensure that the string of T's and F's returned when -the selector is applied to those 12 files is correct. - -So, for example, DepthSelectorTest.java extends BaseSelectorTest and has -the following code: - - - public BaseSelector getInstance() { - return new DepthSelector(); - } - - - public void testSelectionBehaviour() { - DepthSelector s; - String results; - - - try { - makeBed(); - - - s = (DepthSelector)getInstance(); - s.setMin(20); - s.setMax(25); - results = selectionString(s); - assertEquals("FFFFFFFFFFFF", results); - - - s = (DepthSelector)getInstance(); - s.setMin(0); - results = selectionString(s); - assertEquals("TTTTTTTTTTTT", results); - - - s = (DepthSelector)getInstance(); - s.setMin(1); - results = selectionString(s); - assertEquals("FFFFFTTTTTTT", results); - - -The first test says that none of the 12 files or directories will match if -the depth range for the selector is between 20 and 25 (that would be one -deep directory tree!). The second says that all files and directories -match if the minimum depth is set to 0 and the maximum isn't specified. The -third test says that if the minumum depth is 1, the first 5 entries in the -list of 12 will not be selected and the rest will. - - -You can find the 12 files and directories that are tested for selection in -the BaseSelectorTest class. I used a fixed list so that if someone added -new files to the src/etc/testcases/types directory it wouldn't break my -tests: - - - protected String[] filenames = {".","asf-logo.gif.md5","asf- - logo.gif.bz2", - "asf-logo.gif.gz","copy.filterset.filtered","zip/asf- - logo.gif.zip", - "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", - "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", - "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; - - -If you wish to use this set of files and directories to test your selector, -you can reuse the BaseSelectorTest with no change to it. - -You may find you need to alter the build file so that you get some -variation in the files that your selector can work with. Most of the core -selectors have required that kind of modification. If you do that, make -sure that it doesn't alter the output strings on the other selector test, -or if it does that you update their expected return results. - -You may also want to alter the set of files you look at in a particular -selector test. Since the filelist in BaseSelectorTest is protected, you -should be able to override it as you need to. Or you can alter the fileset -in BaseSelectorTest itself, provided you update the test strings in all the -other unit tests. - +A DESCRIPTION OF THE SELECTOR TEST FRAMEWORK + +When writing tests for selectors, I found that I wanted to have some +standard way of working with a set of files and testing whether one or +another of them was selected. To that end, I created a base class called +BaseSelectorTest that does most of the heavy lifting. Of course, you can +test your selectors any way you want, but if you want to reuse this code, +read on. + +What BaseSelectorTest does is use an ant build file +"src/etc/testcases/types/selector.xml" to copy a tree of files out of +"src/etc/testcases/taskdefs/expected" into a "selectortest" directories. +Then it takes a list of 12 of the files and directories in this tree, and +applies whatever selector you pass in to each one. It passes back to your +test a 12 character long string indicating which of the 12 files and +directories was selected, using 'T' for selected and 'F' for not selected. +In the Test class for your selector, you override the getInstance() method +to create your own type of selector, and set the elements of your selector +a variety of ways to ensure that the string of T's and F's returned when +the selector is applied to those 12 files is correct. + +So, for example, DepthSelectorTest.java extends BaseSelectorTest and has +the following code: + + + public BaseSelector getInstance() { + return new DepthSelector(); + } + + + public void testSelectionBehaviour() { + DepthSelector s; + String results; + + + try { + makeBed(); + + + s = (DepthSelector)getInstance(); + s.setMin(20); + s.setMax(25); + results = selectionString(s); + assertEquals("FFFFFFFFFFFF", results); + + + s = (DepthSelector)getInstance(); + s.setMin(0); + results = selectionString(s); + assertEquals("TTTTTTTTTTTT", results); + + + s = (DepthSelector)getInstance(); + s.setMin(1); + results = selectionString(s); + assertEquals("FFFFFTTTTTTT", results); + + +The first test says that none of the 12 files or directories will match if +the depth range for the selector is between 20 and 25 (that would be one +deep directory tree!). The second says that all files and directories +match if the minimum depth is set to 0 and the maximum isn't specified. The +third test says that if the minumum depth is 1, the first 5 entries in the +list of 12 will not be selected and the rest will. + + +You can find the 12 files and directories that are tested for selection in +the BaseSelectorTest class. I used a fixed list so that if someone added +new files to the src/etc/testcases/types directory it wouldn't break my +tests: + + + protected String[] filenames = {".","asf-logo.gif.md5","asf- + logo.gif.bz2", + "asf-logo.gif.gz","copy.filterset.filtered","zip/asf- + logo.gif.zip", + "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", + "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", + "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; + + +If you wish to use this set of files and directories to test your selector, +you can reuse the BaseSelectorTest with no change to it. + +You may find you need to alter the build file so that you get some +variation in the files that your selector can work with. Most of the core +selectors have required that kind of modification. If you do that, make +sure that it doesn't alter the output strings on the other selector test, +or if it does that you update their expected return results. + +You may also want to alter the set of files you look at in a particular +selector test. Since the filelist in BaseSelectorTest is protected, you +should be able to override it as you need to. Or you can alter the fileset +in BaseSelectorTest itself, provided you update the test strings in all the +other unit tests. +
http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java b/src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java index 1eb40dc..29da454 100644 --- a/src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java +++ b/src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java @@ -1,54 +1,54 @@ -/* - * 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.tools.ant.types.selectors; - -import org.apache.tools.ant.BuildFileRule; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -/** - * Testcase for the <signedselector> selector. - * - */ -public class SignedSelectorTest { - - @Rule - public BuildFileRule buildRule = new BuildFileRule(); - - @Before - public void setUp() { - buildRule.configureProject("src/etc/testcases/types/selectors/signedselector.xml"); - } - - @Test - public void testSelectSigned() { - buildRule.executeTarget("selectsigned"); - } - - @Test - public void testNotSelected() { - buildRule.executeTarget("notselected"); - } - - @Test - public void testName() { - buildRule.executeTarget("name"); - } -} +/* + * 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.tools.ant.types.selectors; + +import org.apache.tools.ant.BuildFileRule; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +/** + * Testcase for the <signedselector> selector. + * + */ +public class SignedSelectorTest { + + @Rule + public BuildFileRule buildRule = new BuildFileRule(); + + @Before + public void setUp() { + buildRule.configureProject("src/etc/testcases/types/selectors/signedselector.xml"); + } + + @Test + public void testSelectSigned() { + buildRule.executeTarget("selectsigned"); + } + + @Test + public void testNotSelected() { + buildRule.executeTarget("notselected"); + } + + @Test + public void testName() { + buildRule.executeTarget("name"); + } +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/types/selectors/SizeSelectorTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/types/selectors/SizeSelectorTest.java b/src/tests/junit/org/apache/tools/ant/types/selectors/SizeSelectorTest.java index 0e543f1..4cec0bd 100644 --- a/src/tests/junit/org/apache/tools/ant/types/selectors/SizeSelectorTest.java +++ b/src/tests/junit/org/apache/tools/ant/types/selectors/SizeSelectorTest.java @@ -1,237 +1,237 @@ -/* - * 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.tools.ant.types.selectors; - -import java.util.Locale; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.types.Parameter; -import org.junit.Rule; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -/** - * Tests Size Selectors - * - */ -public class SizeSelectorTest { - - @Rule - public final BaseSelectorRule selectorRule = new BaseSelectorRule(); - - /** - * Test the code that validates the selector. - */ - @Test - public void testValidate() { - SizeSelector s = new SizeSelector(); - try { - s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); - fail("SizeSelector did not check for required fields"); - } catch (BuildException be1) { - assertEquals("The value attribute is required, and must " - + "be positive", be1.getMessage()); - } - - s = new SizeSelector(); - s.setValue(-10); - try { - s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); - fail("SizeSelector did not check for value being in the " - + "allowable range"); - } catch (BuildException be2) { - assertEquals("The value attribute is required, and must " - + "be positive", be2.getMessage()); - } - - s = new SizeSelector(); - Parameter param = new Parameter(); - param.setName("garbage in"); - param.setValue("garbage out"); - Parameter[] params = {param}; - s.setParameters(params); - try { - s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); - fail("SizeSelector did not check for valid parameter element"); - } catch (BuildException be3) { - assertEquals("Invalid parameter garbage in", be3.getMessage()); - } - - s = new SizeSelector(); - param = new Parameter(); - param.setName("value"); - param.setValue("garbage out"); - params[0] = param; - s.setParameters(params); - try { - s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); - fail("SizeSelector accepted bad value as parameter"); - } catch (BuildException be4) { - assertEquals("Invalid size setting garbage out", - be4.getMessage()); - } - - s = new SizeSelector(); - Parameter param1 = new Parameter(); - Parameter param2 = new Parameter(); - param1.setName("value"); - param1.setValue("5"); - param2.setName("units"); - param2.setValue("garbage out"); - params = new Parameter[2]; - params[0] = param1; - params[1] = param2; - try { - s.setParameters(params); - s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); - fail("SizeSelector accepted bad units as parameter"); - } catch (BuildException be5) { - assertEquals("garbage out is not a legal value for this attribute", - be5.getMessage()); - } - - } - - /** - * Tests to make sure that the selector is selecting files correctly. - */ - @Test - public void testSelectionBehaviour() { - SizeSelector s; - String results; - - SizeSelector.ByteUnits kilo = new SizeSelector.ByteUnits(); - kilo.setValue("K"); - SizeSelector.ByteUnits kibi = new SizeSelector.ByteUnits(); - kibi.setValue("Ki"); - SizeSelector.ByteUnits tibi = new SizeSelector.ByteUnits(); - tibi.setValue("Ti"); - SizeSelector.SizeComparisons less = new SizeSelector.SizeComparisons(); - less.setValue("less"); - SizeSelector.SizeComparisons equal = new SizeSelector.SizeComparisons(); - equal.setValue("equal"); - SizeSelector.SizeComparisons more = new SizeSelector.SizeComparisons(); - more.setValue("more"); - - - - s = new SizeSelector(); - s.setValue(10); - s.setWhen(less); - results = selectorRule.selectionString(s); - assertEquals("TFFFFFFFFFFT", results); - - s = new SizeSelector(); - s.setValue(10); - s.setWhen(more); - results = selectorRule.selectionString(s); - assertEquals("TTTTTTTTTTTT", results); - - s = new SizeSelector(); - s.setValue(32); - s.setWhen(equal); - results = selectorRule.selectionString(s); - assertEquals("TFFFTFFFFFFT", results); - - s = new SizeSelector(); - s.setValue(7); - s.setWhen(more); - s.setUnits(kilo); - results = selectorRule.selectionString(s); - assertEquals("TFTFFTTTTTTT", results); - - s = new SizeSelector(); - s.setValue(7); - s.setWhen(more); - s.setUnits(kibi); - results = selectorRule.selectionString(s); - assertEquals("TFTFFFTTFTTT", results); - - s = new SizeSelector(); - s.setValue(99999); - s.setWhen(more); - s.setUnits(tibi); - results = selectorRule.selectionString(s); - assertEquals("TFFFFFFFFFFT", results); - - s = new SizeSelector(); - Parameter param1 = new Parameter(); - Parameter param2 = new Parameter(); - Parameter param3 = new Parameter(); - param1.setName("value"); - param1.setValue("20"); - param2.setName("units"); - param2.setValue("Ki"); - param3.setName("when"); - param3.setValue("more"); - Parameter[] params = {param1,param2,param3}; - s.setParameters(params); - results = selectorRule.selectionString(s); - assertEquals("TFFFFFFTFFTT", results); - - - } - - @Test - public void testParameterParsingLowerCase() { - testCaseInsensitiveParameterParsing("units"); - } - - @Test - public void testParameterParsingUpperCase() { - testCaseInsensitiveParameterParsing("UNITS"); - } - - @Test - public void testParameterParsingLowerCaseTurkish() { - Locale l = Locale.getDefault(); - try { - Locale.setDefault(new Locale("tr")); - testCaseInsensitiveParameterParsing("units"); - } finally { - Locale.setDefault(l); - } - } - - @Test - public void testParameterParsingUpperCaseTurkish() { - Locale l = Locale.getDefault(); - try { - Locale.setDefault(new Locale("tr")); - testCaseInsensitiveParameterParsing("UNITS"); - } finally { - Locale.setDefault(l); - } - } - - private void testCaseInsensitiveParameterParsing(String name) { - SizeSelector s = new SizeSelector(); - Parameter p = new Parameter(); - p.setName(name); - p.setValue("foo"); - try { - s.setParameters(new Parameter[] {p}); - fail("should have caused an exception"); - } catch (BuildException be) { - assertEquals("foo is not a legal value for this attribute", - be.getMessage()); - } - } -} +/* + * 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.tools.ant.types.selectors; + +import java.util.Locale; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.types.Parameter; +import org.junit.Rule; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +/** + * Tests Size Selectors + * + */ +public class SizeSelectorTest { + + @Rule + public final BaseSelectorRule selectorRule = new BaseSelectorRule(); + + /** + * Test the code that validates the selector. + */ + @Test + public void testValidate() { + SizeSelector s = new SizeSelector(); + try { + s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); + fail("SizeSelector did not check for required fields"); + } catch (BuildException be1) { + assertEquals("The value attribute is required, and must " + + "be positive", be1.getMessage()); + } + + s = new SizeSelector(); + s.setValue(-10); + try { + s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); + fail("SizeSelector did not check for value being in the " + + "allowable range"); + } catch (BuildException be2) { + assertEquals("The value attribute is required, and must " + + "be positive", be2.getMessage()); + } + + s = new SizeSelector(); + Parameter param = new Parameter(); + param.setName("garbage in"); + param.setValue("garbage out"); + Parameter[] params = {param}; + s.setParameters(params); + try { + s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); + fail("SizeSelector did not check for valid parameter element"); + } catch (BuildException be3) { + assertEquals("Invalid parameter garbage in", be3.getMessage()); + } + + s = new SizeSelector(); + param = new Parameter(); + param.setName("value"); + param.setValue("garbage out"); + params[0] = param; + s.setParameters(params); + try { + s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); + fail("SizeSelector accepted bad value as parameter"); + } catch (BuildException be4) { + assertEquals("Invalid size setting garbage out", + be4.getMessage()); + } + + s = new SizeSelector(); + Parameter param1 = new Parameter(); + Parameter param2 = new Parameter(); + param1.setName("value"); + param1.setValue("5"); + param2.setName("units"); + param2.setValue("garbage out"); + params = new Parameter[2]; + params[0] = param1; + params[1] = param2; + try { + s.setParameters(params); + s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); + fail("SizeSelector accepted bad units as parameter"); + } catch (BuildException be5) { + assertEquals("garbage out is not a legal value for this attribute", + be5.getMessage()); + } + + } + + /** + * Tests to make sure that the selector is selecting files correctly. + */ + @Test + public void testSelectionBehaviour() { + SizeSelector s; + String results; + + SizeSelector.ByteUnits kilo = new SizeSelector.ByteUnits(); + kilo.setValue("K"); + SizeSelector.ByteUnits kibi = new SizeSelector.ByteUnits(); + kibi.setValue("Ki"); + SizeSelector.ByteUnits tibi = new SizeSelector.ByteUnits(); + tibi.setValue("Ti"); + SizeSelector.SizeComparisons less = new SizeSelector.SizeComparisons(); + less.setValue("less"); + SizeSelector.SizeComparisons equal = new SizeSelector.SizeComparisons(); + equal.setValue("equal"); + SizeSelector.SizeComparisons more = new SizeSelector.SizeComparisons(); + more.setValue("more"); + + + + s = new SizeSelector(); + s.setValue(10); + s.setWhen(less); + results = selectorRule.selectionString(s); + assertEquals("TFFFFFFFFFFT", results); + + s = new SizeSelector(); + s.setValue(10); + s.setWhen(more); + results = selectorRule.selectionString(s); + assertEquals("TTTTTTTTTTTT", results); + + s = new SizeSelector(); + s.setValue(32); + s.setWhen(equal); + results = selectorRule.selectionString(s); + assertEquals("TFFFTFFFFFFT", results); + + s = new SizeSelector(); + s.setValue(7); + s.setWhen(more); + s.setUnits(kilo); + results = selectorRule.selectionString(s); + assertEquals("TFTFFTTTTTTT", results); + + s = new SizeSelector(); + s.setValue(7); + s.setWhen(more); + s.setUnits(kibi); + results = selectorRule.selectionString(s); + assertEquals("TFTFFFTTFTTT", results); + + s = new SizeSelector(); + s.setValue(99999); + s.setWhen(more); + s.setUnits(tibi); + results = selectorRule.selectionString(s); + assertEquals("TFFFFFFFFFFT", results); + + s = new SizeSelector(); + Parameter param1 = new Parameter(); + Parameter param2 = new Parameter(); + Parameter param3 = new Parameter(); + param1.setName("value"); + param1.setValue("20"); + param2.setName("units"); + param2.setValue("Ki"); + param3.setName("when"); + param3.setValue("more"); + Parameter[] params = {param1,param2,param3}; + s.setParameters(params); + results = selectorRule.selectionString(s); + assertEquals("TFFFFFFTFFTT", results); + + + } + + @Test + public void testParameterParsingLowerCase() { + testCaseInsensitiveParameterParsing("units"); + } + + @Test + public void testParameterParsingUpperCase() { + testCaseInsensitiveParameterParsing("UNITS"); + } + + @Test + public void testParameterParsingLowerCaseTurkish() { + Locale l = Locale.getDefault(); + try { + Locale.setDefault(new Locale("tr")); + testCaseInsensitiveParameterParsing("units"); + } finally { + Locale.setDefault(l); + } + } + + @Test + public void testParameterParsingUpperCaseTurkish() { + Locale l = Locale.getDefault(); + try { + Locale.setDefault(new Locale("tr")); + testCaseInsensitiveParameterParsing("UNITS"); + } finally { + Locale.setDefault(l); + } + } + + private void testCaseInsensitiveParameterParsing(String name) { + SizeSelector s = new SizeSelector(); + Parameter p = new Parameter(); + p.setName(name); + p.setValue("foo"); + try { + s.setParameters(new Parameter[] {p}); + fail("should have caused an exception"); + } catch (BuildException be) { + assertEquals("foo is not a legal value for this attribute", + be.getMessage()); + } + } +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java b/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java index 06e86bd..fb068a3 100644 --- a/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java +++ b/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java @@ -1,64 +1,64 @@ -/* - * 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.tools.ant.types.selectors; - -import java.io.File; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class TokenizedPatternTest { - private static final String DOT_SVN_PATTERN = - SelectorUtils.DEEP_TREE_MATCH + File.separator + ".svn" - + File.separator + SelectorUtils.DEEP_TREE_MATCH; - - @Test - public void testTokenization() { - TokenizedPattern pat = new TokenizedPattern(DOT_SVN_PATTERN); - assertEquals(3, pat.depth()); - assertEquals(DOT_SVN_PATTERN, pat.getPattern()); - assertTrue(pat.containsPattern(SelectorUtils.DEEP_TREE_MATCH)); - assertTrue(pat.containsPattern(".svn")); - } - - @Test - public void testEndsWith() { - assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) - .endsWith(SelectorUtils.DEEP_TREE_MATCH)); - } - - @Test - public void testWithoutLastToken() { - assertEquals(SelectorUtils.DEEP_TREE_MATCH + File.separatorChar - + ".svn" + File.separator, - new TokenizedPattern(DOT_SVN_PATTERN) - .withoutLastToken().getPattern()); - } - - @Test - public void testMatchPath() { - File f = new File(".svn"); - TokenizedPath p = new TokenizedPath(f.getAbsolutePath()); - assertTrue(new TokenizedPattern(DOT_SVN_PATTERN).matchPath(p, true)); - assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) - .withoutLastToken().matchPath(p, true)); - } - -} +/* + * 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.tools.ant.types.selectors; + +import java.io.File; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class TokenizedPatternTest { + private static final String DOT_SVN_PATTERN = + SelectorUtils.DEEP_TREE_MATCH + File.separator + ".svn" + + File.separator + SelectorUtils.DEEP_TREE_MATCH; + + @Test + public void testTokenization() { + TokenizedPattern pat = new TokenizedPattern(DOT_SVN_PATTERN); + assertEquals(3, pat.depth()); + assertEquals(DOT_SVN_PATTERN, pat.getPattern()); + assertTrue(pat.containsPattern(SelectorUtils.DEEP_TREE_MATCH)); + assertTrue(pat.containsPattern(".svn")); + } + + @Test + public void testEndsWith() { + assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) + .endsWith(SelectorUtils.DEEP_TREE_MATCH)); + } + + @Test + public void testWithoutLastToken() { + assertEquals(SelectorUtils.DEEP_TREE_MATCH + File.separatorChar + + ".svn" + File.separator, + new TokenizedPattern(DOT_SVN_PATTERN) + .withoutLastToken().getPattern()); + } + + @Test + public void testMatchPath() { + File f = new File(".svn"); + TokenizedPath p = new TokenizedPath(f.getAbsolutePath()); + assertTrue(new TokenizedPattern(DOT_SVN_PATTERN).matchPath(p, true)); + assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) + .withoutLastToken().matchPath(p, true)); + } + +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/types/selectors/TypeSelectorTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/types/selectors/TypeSelectorTest.java b/src/tests/junit/org/apache/tools/ant/types/selectors/TypeSelectorTest.java index 2973d2b..777d772 100644 --- a/src/tests/junit/org/apache/tools/ant/types/selectors/TypeSelectorTest.java +++ b/src/tests/junit/org/apache/tools/ant/types/selectors/TypeSelectorTest.java @@ -1,81 +1,81 @@ -/* - * 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.tools.ant.types.selectors; - -import org.apache.tools.ant.BuildException; -import org.junit.Rule; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -/** - * Tests Type Selectors. - * - */ -public class TypeSelectorTest { - - @Rule - public BaseSelectorRule selectorRule = new BaseSelectorRule(); - - - /** - * Test the code that validates the selector. - */ - @Test - public void testValidate() { - TypeSelector s = new TypeSelector(); - try { - s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0] ,selectorRule.getFiles()[0]); - fail("TypeSelector did not check for required fields"); - } catch (BuildException be1) { - assertEquals("The type attribute is required" - , be1.getMessage()); - } - } - - /** - * Tests to make sure that the selector is selecting files correctly. - */ - @Test - public void testSelectionBehaviour() { - TypeSelector s; - String results; - - TypeSelector.FileType directory = new TypeSelector.FileType(); - directory.setValue("dir"); - TypeSelector.FileType file = new TypeSelector.FileType(); - file.setValue("file"); - - - - s = new TypeSelector(); - s.setType(directory); - results = selectorRule.selectionString(s); - assertEquals("TFFFFFFFFFFT", results); - - s = new TypeSelector(); - s.setType(file); - results = selectorRule.selectionString(s); - assertEquals("FTTTTTTTTTTF", results); - - - } - -} +/* + * 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.tools.ant.types.selectors; + +import org.apache.tools.ant.BuildException; +import org.junit.Rule; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +/** + * Tests Type Selectors. + * + */ +public class TypeSelectorTest { + + @Rule + public BaseSelectorRule selectorRule = new BaseSelectorRule(); + + + /** + * Test the code that validates the selector. + */ + @Test + public void testValidate() { + TypeSelector s = new TypeSelector(); + try { + s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0] ,selectorRule.getFiles()[0]); + fail("TypeSelector did not check for required fields"); + } catch (BuildException be1) { + assertEquals("The type attribute is required" + , be1.getMessage()); + } + } + + /** + * Tests to make sure that the selector is selecting files correctly. + */ + @Test + public void testSelectionBehaviour() { + TypeSelector s; + String results; + + TypeSelector.FileType directory = new TypeSelector.FileType(); + directory.setValue("dir"); + TypeSelector.FileType file = new TypeSelector.FileType(); + file.setValue("file"); + + + + s = new TypeSelector(); + s.setType(directory); + results = selectorRule.selectionString(s); + assertEquals("TFFFFFFFFFFT", results); + + s = new TypeSelector(); + s.setType(file); + results = selectorRule.selectionString(s); + assertEquals("FTTTTTTTTTTF", results); + + + } + +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/Base64ConverterTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/Base64ConverterTest.java b/src/tests/junit/org/apache/tools/ant/util/Base64ConverterTest.java index 48a4cbd..22a2739 100644 --- a/src/tests/junit/org/apache/tools/ant/util/Base64ConverterTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/Base64ConverterTest.java @@ -1,43 +1,43 @@ -/* - * 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.tools.ant.util; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -/** - * TestCase for Base64Converter. - * - */ -public class Base64ConverterTest { - - @Test - public void testOneValue() { - byte[] mybytes = {0, 0, (byte)0xFF}; - Base64Converter base64Converter = new Base64Converter(); - assertEquals("AAD/",base64Converter.encode(mybytes)); - } - - @Test - public void testHelloWorld() { - byte[] mybytes = "Hello World".getBytes(); - Base64Converter base64Converter = new Base64Converter(); - assertEquals("SGVsbG8gV29ybGQ=", base64Converter.encode(mybytes)); - } -} +/* + * 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.tools.ant.util; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * TestCase for Base64Converter. + * + */ +public class Base64ConverterTest { + + @Test + public void testOneValue() { + byte[] mybytes = {0, 0, (byte)0xFF}; + Base64Converter base64Converter = new Base64Converter(); + assertEquals("AAD/",base64Converter.encode(mybytes)); + } + + @Test + public void testHelloWorld() { + byte[] mybytes = "Hello World".getBytes(); + Base64Converter base64Converter = new Base64Converter(); + assertEquals("SGVsbG8gV29ybGQ=", base64Converter.encode(mybytes)); + } +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/ClasspathUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/ClasspathUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/ClasspathUtilsTest.java index 3cffa10..4399f91 100644 --- a/src/tests/junit/org/apache/tools/ant/util/ClasspathUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/ClasspathUtilsTest.java @@ -1,67 +1,67 @@ -/* - * 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.tools.ant.util; - -import java.io.IOException; -import java.util.Enumeration; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.types.Path; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - - -/** - * Test case for ClasspathUtils - * - */ -public class ClasspathUtilsTest { - - private Project p; - - @Before - public void setUp() { - p = new Project(); - p.init(); - } - - - @Test - public void testOnlyOneInstance() { - Enumeration enumeration; - String list = ""; - ClassLoader c = ClasspathUtils.getUniqueClassLoaderForPath(p, (Path) null, false); - try { - enumeration = c.getResources( - "org/apache/tools/ant/taskdefs/defaults.properties"); - } catch (IOException e) { - throw new BuildException( - "Could not get the defaults.properties resource", e); - } - int count = 0; - while (enumeration.hasMoreElements()) { - list = list + " " + enumeration.nextElement(); - count++; - } - assertTrue("Should be only one and not " + count + " " + list, count == 1); - } -} +/* + * 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.tools.ant.util; + +import java.io.IOException; +import java.util.Enumeration; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.types.Path; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + + +/** + * Test case for ClasspathUtils + * + */ +public class ClasspathUtilsTest { + + private Project p; + + @Before + public void setUp() { + p = new Project(); + p.init(); + } + + + @Test + public void testOnlyOneInstance() { + Enumeration enumeration; + String list = ""; + ClassLoader c = ClasspathUtils.getUniqueClassLoaderForPath(p, (Path) null, false); + try { + enumeration = c.getResources( + "org/apache/tools/ant/taskdefs/defaults.properties"); + } catch (IOException e) { + throw new BuildException( + "Could not get the defaults.properties resource", e); + } + int count = 0; + while (enumeration.hasMoreElements()) { + list = list + " " + enumeration.nextElement(); + count++; + } + assertTrue("Should be only one and not " + count + " " + list, count == 1); + } +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/CollectionUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/CollectionUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/CollectionUtilsTest.java index 425dc47..5bcbc12 100644 --- a/src/tests/junit/org/apache/tools/ant/util/CollectionUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/CollectionUtilsTest.java @@ -1,102 +1,102 @@ -/* - * 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.tools.ant.util; - -import java.util.Hashtable; -import java.util.Properties; -import java.util.Stack; -import java.util.Vector; - -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - -/** - * Tests for org.apache.tools.ant.util.CollectionUtils. - * - */ -public class CollectionUtilsTest { - - - @Test - public void testVectorEquals() { - assertTrue(!CollectionUtils.equals(null, new Vector())); - assertTrue(!CollectionUtils.equals(new Vector(), null)); - assertTrue(CollectionUtils.equals(new Vector(), new Vector())); - Vector v1 = new Vector(); - Stack s2 = new Stack(); - v1.addElement("foo"); - s2.push("foo"); - assertTrue(CollectionUtils.equals(v1, s2)); - assertTrue(CollectionUtils.equals(s2, v1)); - v1.addElement("bar"); - assertTrue(!CollectionUtils.equals(v1, s2)); - assertTrue(!CollectionUtils.equals(s2, v1)); - s2.push("bar"); - assertTrue(CollectionUtils.equals(v1, s2)); - assertTrue(CollectionUtils.equals(s2, v1)); - s2.push("baz"); - assertTrue(!CollectionUtils.equals(v1, s2)); - assertTrue(!CollectionUtils.equals(s2, v1)); - v1.addElement("baz"); - assertTrue(CollectionUtils.equals(v1, s2)); - assertTrue(CollectionUtils.equals(s2, v1)); - v1.addElement("zyzzy"); - s2.push("zyzzy2"); - assertTrue(!CollectionUtils.equals(v1, s2)); - assertTrue(!CollectionUtils.equals(s2, v1)); - } - - @Test - public void testDictionaryEquals() { - assertTrue(!CollectionUtils.equals(null, new Hashtable())); - assertTrue(!CollectionUtils.equals(new Hashtable(), null)); - assertTrue(CollectionUtils.equals(new Hashtable(), new Properties())); - Hashtable h1 = new Hashtable(); - Properties p2 = new Properties(); - h1.put("foo", ""); - p2.put("foo", ""); - assertTrue(CollectionUtils.equals(h1, p2)); - assertTrue(CollectionUtils.equals(p2, h1)); - h1.put("bar", ""); - assertTrue(!CollectionUtils.equals(h1, p2)); - assertTrue(!CollectionUtils.equals(p2, h1)); - p2.put("bar", ""); - assertTrue(CollectionUtils.equals(h1, p2)); - assertTrue(CollectionUtils.equals(p2, h1)); - p2.put("baz", ""); - assertTrue(!CollectionUtils.equals(h1, p2)); - assertTrue(!CollectionUtils.equals(p2, h1)); - h1.put("baz", ""); - assertTrue(CollectionUtils.equals(h1, p2)); - assertTrue(CollectionUtils.equals(p2, h1)); - h1.put("zyzzy", ""); - p2.put("zyzzy2", ""); - assertTrue(!CollectionUtils.equals(h1, p2)); - assertTrue(!CollectionUtils.equals(p2, h1)); - p2.put("zyzzy", ""); - h1.put("zyzzy2", ""); - assertTrue(CollectionUtils.equals(h1, p2)); - assertTrue(CollectionUtils.equals(p2, h1)); - h1.put("dada", "1"); - p2.put("dada", "2"); - assertTrue(!CollectionUtils.equals(h1, p2)); - assertTrue(!CollectionUtils.equals(p2, h1)); - } -} +/* + * 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.tools.ant.util; + +import java.util.Hashtable; +import java.util.Properties; +import java.util.Stack; +import java.util.Vector; + +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +/** + * Tests for org.apache.tools.ant.util.CollectionUtils. + * + */ +public class CollectionUtilsTest { + + + @Test + public void testVectorEquals() { + assertTrue(!CollectionUtils.equals(null, new Vector())); + assertTrue(!CollectionUtils.equals(new Vector(), null)); + assertTrue(CollectionUtils.equals(new Vector(), new Vector())); + Vector v1 = new Vector(); + Stack s2 = new Stack(); + v1.addElement("foo"); + s2.push("foo"); + assertTrue(CollectionUtils.equals(v1, s2)); + assertTrue(CollectionUtils.equals(s2, v1)); + v1.addElement("bar"); + assertTrue(!CollectionUtils.equals(v1, s2)); + assertTrue(!CollectionUtils.equals(s2, v1)); + s2.push("bar"); + assertTrue(CollectionUtils.equals(v1, s2)); + assertTrue(CollectionUtils.equals(s2, v1)); + s2.push("baz"); + assertTrue(!CollectionUtils.equals(v1, s2)); + assertTrue(!CollectionUtils.equals(s2, v1)); + v1.addElement("baz"); + assertTrue(CollectionUtils.equals(v1, s2)); + assertTrue(CollectionUtils.equals(s2, v1)); + v1.addElement("zyzzy"); + s2.push("zyzzy2"); + assertTrue(!CollectionUtils.equals(v1, s2)); + assertTrue(!CollectionUtils.equals(s2, v1)); + } + + @Test + public void testDictionaryEquals() { + assertTrue(!CollectionUtils.equals(null, new Hashtable())); + assertTrue(!CollectionUtils.equals(new Hashtable(), null)); + assertTrue(CollectionUtils.equals(new Hashtable(), new Properties())); + Hashtable h1 = new Hashtable(); + Properties p2 = new Properties(); + h1.put("foo", ""); + p2.put("foo", ""); + assertTrue(CollectionUtils.equals(h1, p2)); + assertTrue(CollectionUtils.equals(p2, h1)); + h1.put("bar", ""); + assertTrue(!CollectionUtils.equals(h1, p2)); + assertTrue(!CollectionUtils.equals(p2, h1)); + p2.put("bar", ""); + assertTrue(CollectionUtils.equals(h1, p2)); + assertTrue(CollectionUtils.equals(p2, h1)); + p2.put("baz", ""); + assertTrue(!CollectionUtils.equals(h1, p2)); + assertTrue(!CollectionUtils.equals(p2, h1)); + h1.put("baz", ""); + assertTrue(CollectionUtils.equals(h1, p2)); + assertTrue(CollectionUtils.equals(p2, h1)); + h1.put("zyzzy", ""); + p2.put("zyzzy2", ""); + assertTrue(!CollectionUtils.equals(h1, p2)); + assertTrue(!CollectionUtils.equals(p2, h1)); + p2.put("zyzzy", ""); + h1.put("zyzzy2", ""); + assertTrue(CollectionUtils.equals(h1, p2)); + assertTrue(CollectionUtils.equals(p2, h1)); + h1.put("dada", "1"); + p2.put("dada", "2"); + assertTrue(!CollectionUtils.equals(h1, p2)); + assertTrue(!CollectionUtils.equals(p2, h1)); + } +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/DOMElementWriterTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/DOMElementWriterTest.java b/src/tests/junit/org/apache/tools/ant/util/DOMElementWriterTest.java index fe09ce9..80a8d6b 100644 --- a/src/tests/junit/org/apache/tools/ant/util/DOMElementWriterTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/DOMElementWriterTest.java @@ -1,305 +1,305 @@ -/* - * 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.tools.ant.util; - -import org.junit.Test; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.io.IOException; -import java.io.StringWriter; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -/** - * Tests for org.apache.tools.ant.util.DOMElementWriter. - * - */ -public class DOMElementWriterTest { - - private DOMElementWriter w = new DOMElementWriter(); - - @Test - public void testIsReference() { - assertTrue("", w.isReference("")); - assertTrue(" ", w.isReference(" ")); - assertTrue(" ", w.isReference(" ")); - assertTrue("&#A0;", !w.isReference("&#A0;")); - assertTrue("20;", !w.isReference("20;")); - assertTrue("", !w.isReference("")); - assertTrue(""", w.isReference(""")); - assertTrue("'", w.isReference("'")); - assertTrue(">", w.isReference(">")); - assertTrue("<", w.isReference("<")); - assertTrue("&", w.isReference("&")); - } - - @Test - public void testEncode() { - assertEquals("&#20;", w.encode("")); - assertEquals("&#x20;", w.encode(" ")); - assertEquals("&#xA0;", w.encode(" ")); - assertEquals("&#A0;", w.encode("&#A0;")); - assertEquals("20;", w.encode("20;")); - assertEquals("&#20", w.encode("")); - assertEquals("&quot;", w.encode(""")); - assertEquals("&apos;", w.encode("'")); - assertEquals("&gt;", w.encode(">")); - assertEquals("&lt;", w.encode("<")); - assertEquals("&amp;", w.encode("&")); - assertEquals(""", w.encode("\"")); - assertEquals("<", w.encode("<")); - assertEquals("&", w.encode("&")); - assertEquals("", w.encode("\u0017")); - assertEquals("\r\n\t", w.encode("\r\n\t")); - } - - @Test - public void testEncodeAttributeValue() { - assertEquals("&#20;", w.encodeAttributeValue("")); - assertEquals("&#x20;", w.encodeAttributeValue(" ")); - assertEquals("&#xA0;", w.encodeAttributeValue(" ")); - assertEquals("&#A0;", w.encodeAttributeValue("&#A0;")); - assertEquals("20;", w.encodeAttributeValue("20;")); - assertEquals("&#20", w.encodeAttributeValue("")); - assertEquals("&quot;", w.encodeAttributeValue(""")); - assertEquals("&apos;", w.encodeAttributeValue("'")); - assertEquals("&gt;", w.encodeAttributeValue(">")); - assertEquals("&lt;", w.encodeAttributeValue("<")); - assertEquals("&amp;", w.encodeAttributeValue("&")); - assertEquals(""", w.encodeAttributeValue("\"")); - assertEquals("<", w.encodeAttributeValue("<")); - assertEquals("&", w.encodeAttributeValue("&")); - assertEquals("", w.encodeAttributeValue("\u0017")); - assertEquals("
	", w.encodeAttributeValue("\r\n\t")); - } - - @Test - public void testAttributeWithWhitespace() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElement("root"); - root.setAttribute("foo", "bar\nbaz"); - StringWriter sw = new StringWriter(); - DOMElementWriter w = new DOMElementWriter(); - w.write(root, sw, 0, " "); - assertEquals("<root foo=\"bar
baz\" />" + StringUtils.LINE_SEP, - sw.toString()); - } - - @Test - public void testEncodeData() { - assertEquals("\"20;&", w.encodedata("\"20;&")); - assertEquals("", w.encodedata("\u0017")); - } - - @Test - public void testIsLegalCharacter() { - assertTrue("0x00", !w.isLegalCharacter('\u0000')); - assertTrue("0x09", w.isLegalCharacter('\t')); - assertTrue("0x0A", w.isLegalCharacter('\n')); - assertTrue("0x0C", w.isLegalCharacter('\r')); - assertTrue("0x1F", !w.isLegalCharacter('\u001F')); - assertTrue("0x20", w.isLegalCharacter('\u0020')); - assertTrue("0xD7FF", w.isLegalCharacter('\uD7FF')); - assertTrue("0xD800", !w.isLegalCharacter('\uD800')); - assertTrue("0xDFFF", !w.isLegalCharacter('\uDFFF')); - assertTrue("0xE000", w.isLegalCharacter('\uE000')); - assertTrue("0xFFFD", w.isLegalCharacter('\uFFFD')); - assertTrue("0xFFFE", !w.isLegalCharacter('\uFFFE')); - } - - @Test - public void testCDATAEndEncoding() { - assertEquals("]>", w.encodedata("]>")); - assertEquals("]]", w.encodedata("]]")); - assertEquals("]]]]><![CDATA[>", w.encodedata("]]>")); - assertEquals("]]]]><![CDATA[>A", w.encodedata("]]>A")); - assertEquals("A]]]]><![CDATA[>", w.encodedata("A]]>")); - assertEquals("A]]]]><![CDATA[>A", w.encodedata("A]]>A")); - assertEquals("A]]]]><![CDATA[>B]]]]><![CDATA[>C", - w.encodedata("A]]>B]]>C")); - } - - @Test - public void testNoAdditionalWhiteSpaceForText() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElement("root"); - DOMUtils.appendTextElement(root, "textElement", "content"); - - StringWriter sw = new StringWriter(); - DOMElementWriter w = new DOMElementWriter(); - w.write(root, sw, 0, " "); - assertEquals("<root>" + StringUtils.LINE_SEP - + " <textElement>content</textElement>" - + StringUtils.LINE_SEP - + "</root>" + StringUtils.LINE_SEP, - sw.toString()); - } - - @Test - public void testNoAdditionalWhiteSpaceForCDATA() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElement("root"); - DOMUtils.appendCDATAElement(root, "cdataElement", "content"); - - StringWriter sw = new StringWriter(); - DOMElementWriter w = new DOMElementWriter(); - w.write(root, sw, 0, " "); - assertEquals("<root>" + StringUtils.LINE_SEP - + " <cdataElement><![CDATA[content]]></cdataElement>" - + StringUtils.LINE_SEP - + "</root>" + StringUtils.LINE_SEP, - sw.toString()); - } - - @Test - public void testNoAdditionalWhiteSpaceForEmptyElement() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElement("root"); - DOMUtils.createChildElement(root, "emptyElement"); - - StringWriter sw = new StringWriter(); - DOMElementWriter w = new DOMElementWriter(); - w.write(root, sw, 0, " "); - assertEquals("<root>" + StringUtils.LINE_SEP - // + " <emptyElement></emptyElement>" - + " <emptyElement />" - + StringUtils.LINE_SEP - + "</root>" + StringUtils.LINE_SEP, - sw.toString()); - } - - @Test - public void testNoNSPrefixByDefault() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElementNS("urn:foo", "root"); - root.setAttributeNS("urn:foo2", "bar", "baz"); - - StringWriter sw = new StringWriter(); - DOMElementWriter w = new DOMElementWriter(); - w.write(root, sw, 0, " "); - assertEquals("<root bar=\"baz\" />" - + StringUtils.LINE_SEP, sw.toString()); - } - - @Test - public void testNSOnElement() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElementNS("urn:foo", "root"); - root.setAttributeNS("urn:foo2", "bar", "baz"); - - StringWriter sw = new StringWriter(); - DOMElementWriter w = - new DOMElementWriter(false, - DOMElementWriter.XmlNamespacePolicy - .ONLY_QUALIFY_ELEMENTS); - w.write(root, sw, 0, " "); - assertEquals("<root bar=\"baz\" xmlns=\"urn:foo\" />" - + StringUtils.LINE_SEP, sw.toString()); - } - - @Test - public void testNSPrefixOnAttribute() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElementNS("urn:foo", "root"); - root.setAttributeNS("urn:foo2", "bar", "baz"); - - StringWriter sw = new StringWriter(); - DOMElementWriter w = - new DOMElementWriter(false, - DOMElementWriter.XmlNamespacePolicy - .QUALIFY_ALL); - w.write(root, sw, 0, " "); - assertEquals("<root ns0:bar=\"baz\" xmlns=\"urn:foo\"" - + " xmlns:ns0=\"urn:foo2\" />" - + StringUtils.LINE_SEP, sw.toString()); - } - - @Test - public void testNSPrefixOnAttributeEvenWithoutElement() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElementNS("urn:foo", "root"); - root.setAttributeNS("urn:foo2", "bar", "baz"); - - StringWriter sw = new StringWriter(); - DOMElementWriter w = - new DOMElementWriter(false, - new DOMElementWriter.XmlNamespacePolicy(false, - true) - ); - w.write(root, sw, 0, " "); - assertEquals("<root ns0:bar=\"baz\" xmlns:ns0=\"urn:foo2\" />" - + StringUtils.LINE_SEP, sw.toString()); - } - - @Test - public void testNSGetsReused() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElementNS("urn:foo", "root"); - Element child = d.createElementNS("urn:foo", "child"); - root.appendChild(child); - StringWriter sw = new StringWriter(); - DOMElementWriter w = - new DOMElementWriter(false, - DOMElementWriter.XmlNamespacePolicy - .ONLY_QUALIFY_ELEMENTS); - w.write(root, sw, 0, " "); - assertEquals("<root xmlns=\"urn:foo\">" - + StringUtils.LINE_SEP - + " <child />" - + StringUtils.LINE_SEP - + "</root>" - + StringUtils.LINE_SEP, sw.toString()); - } - - @Test - public void testNSGoesOutOfScope() throws IOException { - Document d = DOMUtils.newDocument(); - Element root = d.createElementNS("urn:foo", "root"); - Element child = d.createElementNS("urn:foo2", "child"); - root.appendChild(child); - Element child2 = d.createElementNS("urn:foo2", "child"); - root.appendChild(child2); - Element grandChild = d.createElementNS("urn:foo2", "grandchild"); - child2.appendChild(grandChild); - Element child3 = d.createElementNS("urn:foo2", "child"); - root.appendChild(child3); - StringWriter sw = new StringWriter(); - DOMElementWriter w = - new DOMElementWriter(false, - DOMElementWriter.XmlNamespacePolicy - .ONLY_QUALIFY_ELEMENTS); - w.write(root, sw, 0, " "); - assertEquals("<root xmlns=\"urn:foo\">" - + StringUtils.LINE_SEP - + " <ns0:child xmlns:ns0=\"urn:foo2\" />" - + StringUtils.LINE_SEP - + " <ns1:child xmlns:ns1=\"urn:foo2\">" - + StringUtils.LINE_SEP - + " <ns1:grandchild />" - + StringUtils.LINE_SEP - + " </ns1:child>" - + StringUtils.LINE_SEP - + " <ns2:child xmlns:ns2=\"urn:foo2\" />" - + StringUtils.LINE_SEP - + "</root>" - + StringUtils.LINE_SEP, sw.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.tools.ant.util; + +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import java.io.IOException; +import java.io.StringWriter; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Tests for org.apache.tools.ant.util.DOMElementWriter. + * + */ +public class DOMElementWriterTest { + + private DOMElementWriter w = new DOMElementWriter(); + + @Test + public void testIsReference() { + assertTrue("", w.isReference("")); + assertTrue(" ", w.isReference(" ")); + assertTrue(" ", w.isReference(" ")); + assertTrue("&#A0;", !w.isReference("&#A0;")); + assertTrue("20;", !w.isReference("20;")); + assertTrue("", !w.isReference("")); + assertTrue(""", w.isReference(""")); + assertTrue("'", w.isReference("'")); + assertTrue(">", w.isReference(">")); + assertTrue("<", w.isReference("<")); + assertTrue("&", w.isReference("&")); + } + + @Test + public void testEncode() { + assertEquals("&#20;", w.encode("")); + assertEquals("&#x20;", w.encode(" ")); + assertEquals("&#xA0;", w.encode(" ")); + assertEquals("&#A0;", w.encode("&#A0;")); + assertEquals("20;", w.encode("20;")); + assertEquals("&#20", w.encode("")); + assertEquals("&quot;", w.encode(""")); + assertEquals("&apos;", w.encode("'")); + assertEquals("&gt;", w.encode(">")); + assertEquals("&lt;", w.encode("<")); + assertEquals("&amp;", w.encode("&")); + assertEquals(""", w.encode("\"")); + assertEquals("<", w.encode("<")); + assertEquals("&", w.encode("&")); + assertEquals("", w.encode("\u0017")); + assertEquals("\r\n\t", w.encode("\r\n\t")); + } + + @Test + public void testEncodeAttributeValue() { + assertEquals("&#20;", w.encodeAttributeValue("")); + assertEquals("&#x20;", w.encodeAttributeValue(" ")); + assertEquals("&#xA0;", w.encodeAttributeValue(" ")); + assertEquals("&#A0;", w.encodeAttributeValue("&#A0;")); + assertEquals("20;", w.encodeAttributeValue("20;")); + assertEquals("&#20", w.encodeAttributeValue("")); + assertEquals("&quot;", w.encodeAttributeValue(""")); + assertEquals("&apos;", w.encodeAttributeValue("'")); + assertEquals("&gt;", w.encodeAttributeValue(">")); + assertEquals("&lt;", w.encodeAttributeValue("<")); + assertEquals("&amp;", w.encodeAttributeValue("&")); + assertEquals(""", w.encodeAttributeValue("\"")); + assertEquals("<", w.encodeAttributeValue("<")); + assertEquals("&", w.encodeAttributeValue("&")); + assertEquals("", w.encodeAttributeValue("\u0017")); + assertEquals("
	", w.encodeAttributeValue("\r\n\t")); + } + + @Test + public void testAttributeWithWhitespace() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElement("root"); + root.setAttribute("foo", "bar\nbaz"); + StringWriter sw = new StringWriter(); + DOMElementWriter w = new DOMElementWriter(); + w.write(root, sw, 0, " "); + assertEquals("<root foo=\"bar
baz\" />" + StringUtils.LINE_SEP, + sw.toString()); + } + + @Test + public void testEncodeData() { + assertEquals("\"20;&", w.encodedata("\"20;&")); + assertEquals("", w.encodedata("\u0017")); + } + + @Test + public void testIsLegalCharacter() { + assertTrue("0x00", !w.isLegalCharacter('\u0000')); + assertTrue("0x09", w.isLegalCharacter('\t')); + assertTrue("0x0A", w.isLegalCharacter('\n')); + assertTrue("0x0C", w.isLegalCharacter('\r')); + assertTrue("0x1F", !w.isLegalCharacter('\u001F')); + assertTrue("0x20", w.isLegalCharacter('\u0020')); + assertTrue("0xD7FF", w.isLegalCharacter('\uD7FF')); + assertTrue("0xD800", !w.isLegalCharacter('\uD800')); + assertTrue("0xDFFF", !w.isLegalCharacter('\uDFFF')); + assertTrue("0xE000", w.isLegalCharacter('\uE000')); + assertTrue("0xFFFD", w.isLegalCharacter('\uFFFD')); + assertTrue("0xFFFE", !w.isLegalCharacter('\uFFFE')); + } + + @Test + public void testCDATAEndEncoding() { + assertEquals("]>", w.encodedata("]>")); + assertEquals("]]", w.encodedata("]]")); + assertEquals("]]]]><![CDATA[>", w.encodedata("]]>")); + assertEquals("]]]]><![CDATA[>A", w.encodedata("]]>A")); + assertEquals("A]]]]><![CDATA[>", w.encodedata("A]]>")); + assertEquals("A]]]]><![CDATA[>A", w.encodedata("A]]>A")); + assertEquals("A]]]]><![CDATA[>B]]]]><![CDATA[>C", + w.encodedata("A]]>B]]>C")); + } + + @Test + public void testNoAdditionalWhiteSpaceForText() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElement("root"); + DOMUtils.appendTextElement(root, "textElement", "content"); + + StringWriter sw = new StringWriter(); + DOMElementWriter w = new DOMElementWriter(); + w.write(root, sw, 0, " "); + assertEquals("<root>" + StringUtils.LINE_SEP + + " <textElement>content</textElement>" + + StringUtils.LINE_SEP + + "</root>" + StringUtils.LINE_SEP, + sw.toString()); + } + + @Test + public void testNoAdditionalWhiteSpaceForCDATA() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElement("root"); + DOMUtils.appendCDATAElement(root, "cdataElement", "content"); + + StringWriter sw = new StringWriter(); + DOMElementWriter w = new DOMElementWriter(); + w.write(root, sw, 0, " "); + assertEquals("<root>" + StringUtils.LINE_SEP + + " <cdataElement><![CDATA[content]]></cdataElement>" + + StringUtils.LINE_SEP + + "</root>" + StringUtils.LINE_SEP, + sw.toString()); + } + + @Test + public void testNoAdditionalWhiteSpaceForEmptyElement() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElement("root"); + DOMUtils.createChildElement(root, "emptyElement"); + + StringWriter sw = new StringWriter(); + DOMElementWriter w = new DOMElementWriter(); + w.write(root, sw, 0, " "); + assertEquals("<root>" + StringUtils.LINE_SEP + // + " <emptyElement></emptyElement>" + + " <emptyElement />" + + StringUtils.LINE_SEP + + "</root>" + StringUtils.LINE_SEP, + sw.toString()); + } + + @Test + public void testNoNSPrefixByDefault() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElementNS("urn:foo", "root"); + root.setAttributeNS("urn:foo2", "bar", "baz"); + + StringWriter sw = new StringWriter(); + DOMElementWriter w = new DOMElementWriter(); + w.write(root, sw, 0, " "); + assertEquals("<root bar=\"baz\" />" + + StringUtils.LINE_SEP, sw.toString()); + } + + @Test + public void testNSOnElement() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElementNS("urn:foo", "root"); + root.setAttributeNS("urn:foo2", "bar", "baz"); + + StringWriter sw = new StringWriter(); + DOMElementWriter w = + new DOMElementWriter(false, + DOMElementWriter.XmlNamespacePolicy + .ONLY_QUALIFY_ELEMENTS); + w.write(root, sw, 0, " "); + assertEquals("<root bar=\"baz\" xmlns=\"urn:foo\" />" + + StringUtils.LINE_SEP, sw.toString()); + } + + @Test + public void testNSPrefixOnAttribute() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElementNS("urn:foo", "root"); + root.setAttributeNS("urn:foo2", "bar", "baz"); + + StringWriter sw = new StringWriter(); + DOMElementWriter w = + new DOMElementWriter(false, + DOMElementWriter.XmlNamespacePolicy + .QUALIFY_ALL); + w.write(root, sw, 0, " "); + assertEquals("<root ns0:bar=\"baz\" xmlns=\"urn:foo\"" + + " xmlns:ns0=\"urn:foo2\" />" + + StringUtils.LINE_SEP, sw.toString()); + } + + @Test + public void testNSPrefixOnAttributeEvenWithoutElement() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElementNS("urn:foo", "root"); + root.setAttributeNS("urn:foo2", "bar", "baz"); + + StringWriter sw = new StringWriter(); + DOMElementWriter w = + new DOMElementWriter(false, + new DOMElementWriter.XmlNamespacePolicy(false, + true) + ); + w.write(root, sw, 0, " "); + assertEquals("<root ns0:bar=\"baz\" xmlns:ns0=\"urn:foo2\" />" + + StringUtils.LINE_SEP, sw.toString()); + } + + @Test + public void testNSGetsReused() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElementNS("urn:foo", "root"); + Element child = d.createElementNS("urn:foo", "child"); + root.appendChild(child); + StringWriter sw = new StringWriter(); + DOMElementWriter w = + new DOMElementWriter(false, + DOMElementWriter.XmlNamespacePolicy + .ONLY_QUALIFY_ELEMENTS); + w.write(root, sw, 0, " "); + assertEquals("<root xmlns=\"urn:foo\">" + + StringUtils.LINE_SEP + + " <child />" + + StringUtils.LINE_SEP + + "</root>" + + StringUtils.LINE_SEP, sw.toString()); + } + + @Test + public void testNSGoesOutOfScope() throws IOException { + Document d = DOMUtils.newDocument(); + Element root = d.createElementNS("urn:foo", "root"); + Element child = d.createElementNS("urn:foo2", "child"); + root.appendChild(child); + Element child2 = d.createElementNS("urn:foo2", "child"); + root.appendChild(child2); + Element grandChild = d.createElementNS("urn:foo2", "grandchild"); + child2.appendChild(grandChild); + Element child3 = d.createElementNS("urn:foo2", "child"); + root.appendChild(child3); + StringWriter sw = new StringWriter(); + DOMElementWriter w = + new DOMElementWriter(false, + DOMElementWriter.XmlNamespacePolicy + .ONLY_QUALIFY_ELEMENTS); + w.write(root, sw, 0, " "); + assertEquals("<root xmlns=\"urn:foo\">" + + StringUtils.LINE_SEP + + " <ns0:child xmlns:ns0=\"urn:foo2\" />" + + StringUtils.LINE_SEP + + " <ns1:child xmlns:ns1=\"urn:foo2\">" + + StringUtils.LINE_SEP + + " <ns1:grandchild />" + + StringUtils.LINE_SEP + + " </ns1:child>" + + StringUtils.LINE_SEP + + " <ns2:child xmlns:ns2=\"urn:foo2\" />" + + StringUtils.LINE_SEP + + "</root>" + + StringUtils.LINE_SEP, sw.toString()); + } +}
