blob: c17a2a46a65518345cd679c565106ac70bce4d32 [file] [log] [blame]
/*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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 misc.detailed;
import jira.xmlbeans228.substitution.CommentType;
import jira.xmlbeans228.substitution.FirstCommentType;
import jira.xmlbeans228.substitution.PersonDocument;
import misc.common.JiraTestBase;
import misc.detailed.jira208.FrogBreathDocument;
import org.apache.xmlbeans.XmlOptions;
import org.junit.Test;
import javax.xml.namespace.QName;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.*;
public class JiraRegression201_250Test extends JiraTestBase {
/*
* [XMLBEANS-206]: Wrong method finding in getMethod() of InterfaceExtensionImpl
*
*/
// Refer test case xmlobject.extensions.interfaceFeature.averageCase.checkin.testJiraXMLBEANS_206
/*
* [XMLBEANS-208]: validation of decimal with fractionDigits -- special case, additional zero digits
*
*/
@Test
public void test_jira_xmlbeans208() throws Exception {
XmlOptions options = new XmlOptions();
List err = new ArrayList();
options.setErrorListener(err);
// decimal value invalid
FrogBreathDocument invalidDoc = FrogBreathDocument.Factory.parse("<dec:frog_breath xmlns:dec=\"http://misc/detailed/jira208\">1000.000001</dec:frog_breath>");
boolean valid = invalidDoc.validate(options);
if(!valid)
{
for (Iterator iterator = err.iterator(); iterator.hasNext();) {
System.out.println("Validation Error (invalid doc):" + iterator.next());
}
}
// expected to fail
assertFalse(valid);
// decimal value with trailing zeros tagged as invalid
FrogBreathDocument validDoc = FrogBreathDocument.Factory.parse("<dec:frog_breath xmlns:dec=\"http://misc/detailed/jira208\">1000.000000</dec:frog_breath>");
err.clear();
boolean valid2 = validDoc.validate(options);
if(!valid2)
{
for (Iterator iterator = err.iterator(); iterator.hasNext();) {
System.out.println("Validation Error (valid doc):" + iterator.next());
}
}
assertTrue(valid2);
}
/*
* [XMLBEANS-228]:
* element order in sequence incorrect after calling substitute()
*/
@Test
public void test_jira_xmlbeans228() throws Exception
{
PersonDocument personDocument = PersonDocument.Factory.newInstance();
PersonDocument.Person person = personDocument.addNewPerson();
CommentType commentType = person.addNewComment();
String ns = "http://jira/xmlbeans_228/substitution";
QName qName = new QName(ns, "FirstCommentElement");
Object resultObject = commentType.substitute(qName, FirstCommentType.type);
FirstCommentType firstCommentType = (FirstCommentType)resultObject;
firstCommentType.setStringValue("ThirdElement");
person.setComment(firstCommentType);
person.setFirstName("FirstElement");
person.setLastName("SecondElement");
XmlOptions opts = new XmlOptions().setSavePrettyPrint().setUseDefaultNamespace();
StringWriter out = new StringWriter();
personDocument.save(out, opts);
String exp =
"<Person xmlns=\"http://jira/xmlbeans_228/substitution\">" + NEWLINE +
" <FirstName>FirstElement</FirstName>" + NEWLINE +
" <LastName>SecondElement</LastName>" + NEWLINE +
" <FirstCommentElement>ThirdElement</FirstCommentElement>" + NEWLINE +
"</Person>";
assertEquals(exp, out.toString());
if (!personDocument.validate())
{
fail("Wrong element order!");
}
}
}