/* * 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.xcmis.search.query.content; import org.junit.Ignore; /** * <code>LengthTest</code> performs tests with the Query Object Model length * operand. */ @Ignore public class LengthTest extends AbstractQOMTest { // // private Node node; // // // protected void setUp() throws Exception { // super.setUp(); // node = testRootNode.addNode(nodeName1, testNodeType); // superuser.save(); // } // // protected void tearDown() throws Exception { // node = null; // super.tearDown(); // } // // public void testStringLength() throws RepositoryException { // node.setProperty(propertyName1, "abc"); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testBinaryLength() throws RepositoryException { // byte[] data = "abc".getBytes(); // Binary b = vf.createBinary(new ByteArrayInputStream(data)); // try { // node.setProperty(propertyName1, b); // } finally { // b.dispose(); // } // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testLongLength() throws RepositoryException { // node.setProperty(propertyName1, 123); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testDoubleLength() throws RepositoryException { // node.setProperty(propertyName1, Math.PI); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testDateLength() throws RepositoryException { // node.setProperty(propertyName1, Calendar.getInstance()); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testBooleanLength() throws RepositoryException { // node.setProperty(propertyName1, false); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testNameLength() throws RepositoryException { // node.setProperty(propertyName1, vf.createValue(node.getName(), PropertyType.NAME)); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testPathLength() throws RepositoryException { // node.setProperty(propertyName1, vf.createValue(node.getPath(), PropertyType.PATH)); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testReferenceLength() throws RepositoryException, NotExecutableException { // ensureMixinType(node, mixReferenceable); // superuser.save(); // node.setProperty(propertyName1, node); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testWeakReferenceLength() // throws RepositoryException, NotExecutableException { // ensureMixinType(node, mixReferenceable); // superuser.save(); // node.setProperty(propertyName1, vf.createValue(node, true)); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testURILength() throws RepositoryException { // node.setProperty(propertyName1, vf.createValue("http://example.com", PropertyType.URI)); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // public void testDecimalLength() throws RepositoryException { // node.setProperty(propertyName1, new BigDecimal(123)); // superuser.save(); // checkOperators(propertyName1, node.getProperty(propertyName1).getLength()); // } // // //------------------------< conversion tests >------------------------------ // // public void testLengthStringLiteral() throws RepositoryException { // node.setProperty(propertyName1, "abc"); // superuser.save(); // // String length = String.valueOf(node.getProperty(propertyName1).getLength()); // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue(length)); // } // // public void testLengthBinaryLiteral() throws RepositoryException { // node.setProperty(propertyName1, "abc"); // superuser.save(); // // String length = String.valueOf(node.getProperty(propertyName1).getLength()); // Binary b = vf.createBinary(new ByteArrayInputStream(length.getBytes())); // try { // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, // vf.createValue(b)); // } finally { // b.dispose(); // } // } // // public void testLengthDoubleLiteral() throws RepositoryException { // node.setProperty(propertyName1, "abc"); // superuser.save(); // // double length = node.getProperty(propertyName1).getLength(); // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue(length)); // } // // public void testLengthDateLiteral() throws RepositoryException { // node.setProperty(propertyName1, "abc"); // superuser.save(); // // Calendar length = Calendar.getInstance(); // length.setTimeInMillis(node.getProperty(propertyName1).getLength()); // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue(length)); // } // // public void testLengthBooleanLiteral() throws RepositoryException { // try { // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue(false)); // fail("Boolean literal cannot be converted to long"); // } catch (InvalidQueryException e) { // // expected // } // } // // public void testLengthNameLiteral() throws RepositoryException { // try { // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue( // propertyName1, PropertyType.NAME)); // fail("Name literal cannot be converted to long"); // } catch (InvalidQueryException e) { // // expected // } // } // // public void testLengthPathLiteral() throws RepositoryException { // try { // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue( // node.getPath(), PropertyType.PATH)); // fail("Path literal cannot be converted to long"); // } catch (InvalidQueryException e) { // // expected // } // } // // public void testLengthReferenceLiteral() throws RepositoryException, NotExecutableException { // ensureMixinType(node, mixReferenceable); // superuser.save(); // try { // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue(node)); // fail("Reference literal cannot be converted to long"); // } catch (InvalidQueryException e) { // // expected // } // } // // public void testLengthWeakReferenceLiteral() throws RepositoryException, NotExecutableException { // ensureMixinType(node, mixReferenceable); // superuser.save(); // try { // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue(node, true)); // fail("Reference literal cannot be converted to long"); // } catch (InvalidQueryException e) { // // expected // } // } // // public void testLengthURILiteral() throws RepositoryException { // try { // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, // vf.createValue(node.getPath(), PropertyType.URI)); // fail("URI literal cannot be converted to long"); // } catch (InvalidQueryException e) { // // expected // } // } // // public void testLengthDecimalLiteral() throws RepositoryException { // node.setProperty(propertyName1, "abc"); // superuser.save(); // // BigDecimal length = new BigDecimal(node.getProperty(propertyName1).getLength()); // executeQueries(propertyName1, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, vf.createValue(length)); // } // // //------------------------< internal helpers >------------------------------ // // private void checkOperators(String propertyName, // long length) throws RepositoryException { // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, length, true); // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO, length - 1, false); // // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN, length - 1, true); // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN, length, false); // // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO, length, true); // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO, length + 1, false); // // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN, length + 1, true); // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN, length, false); // // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO, length, true); // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO, length - 1, false); // // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_NOT_EQUAL_TO, length - 1, true); // checkLength(propertyName, QueryObjectModelConstants.JCR_OPERATOR_NOT_EQUAL_TO, length, false); // } // // private void checkLength(String propertyName, // String operator, // long length, // boolean matches) throws RepositoryException { // Node[] expected; // if (matches) { // expected = new Node[]{node}; // } else { // expected = new Node[0]; // } // QueryResult[] results = executeQueries(propertyName, operator, length); // for (int i = 0; i < results.length; i++) { // checkResult(results[i], expected); // } // } // // private QueryResult[] executeQueries(String propertyName, // String operator, // long length) // throws RepositoryException { // Value v = vf.createValue(length); // return executeQueries(propertyName, operator, v); // } // // private QueryResult[] executeQueries(String propertyName, // String operator, // Value length) // throws RepositoryException { // QueryObjectModel qom = qf.createQuery( // qf.selector(testNodeType, "s"), // qf.and( // qf.childNode("s", testRoot), // qf.comparison( // qf.length( // qf.propertyValue( // "s", propertyName)), // operator, // qf.literal(length)) // // ), null, null); // QueryResult[] results = new QueryResult[2]; // results[0] = qom.execute(); // results[1] = qm.createQuery(qom.getStatement(), Query.JCR_SQL2).execute(); // return results; // } }