/*
 * 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>UpperLowerCaseTest</code> performs tests with upper- and lower-case
 * operands.
 */
@Ignore
public class UpperLowerCaseTest extends AbstractQOMTest
{
   //
   //    private Node node;
   //
   //    protected void setUp() throws Exception {
   //        super.setUp();
   //        node = testRootNode.addNode(nodeName1, testNodeType);
   //        node.setProperty(propertyName1, "abc");
   //        node.setProperty(propertyName2, "ABC");
   //        superuser.save();
   //    }
   //
   //    protected void tearDown() throws Exception {
   //        node = null;
   //        super.tearDown();
   //    }
   //
   //    public void testLength() throws RepositoryException {
   //        String lenStr = String.valueOf(node.getProperty(propertyName1).getLength());
   //        // upper case
   //        checkQueries(qf.length(qf.propertyValue("s", propertyName1)),
   //                true, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{lenStr.toUpperCase()},
   //                PropertyType.STRING,
   //                new boolean[]{true});
   //
   //        // lower case
   //        checkQueries(qf.length(qf.propertyValue("s", propertyName1)),
   //                false, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{lenStr.toLowerCase()},
   //                PropertyType.STRING,
   //                new boolean[]{true});
   //    }
   //
   //    public void testNodeLocalName() throws RepositoryException {
   //        String localName = getLocalName(node.getName());
   //        // upper case
   //        checkQueries(qf.nodeLocalName("s"),
   //                true, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{localName.toLowerCase(), localName.toUpperCase()},
   //                PropertyType.STRING,
   //                new boolean[]{false, true});
   //
   //        // lower case
   //        checkQueries(qf.nodeLocalName("s"),
   //                false, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{localName.toLowerCase(), localName.toUpperCase()},
   //                PropertyType.STRING,
   //                new boolean[]{true, false});
   //    }
   //
   //    public void testNodeName() throws RepositoryException {
   //        // upper case
   //        checkQueries(qf.nodeName("s"),
   //                true, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{node.getName().toLowerCase(), node.getName().toUpperCase()},
   //                PropertyType.NAME,
   //                new boolean[]{false, true});
   //
   //        // lower case
   //        checkQueries(qf.nodeName("s"),
   //                false, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{node.getName().toLowerCase(), node.getName().toUpperCase()},
   //                PropertyType.NAME,
   //                new boolean[]{true, false});
   //    }
   //
   //    public void testPropertyValue() throws RepositoryException {
   //        // upper case
   //        checkQueries(qf.propertyValue("s", propertyName1),
   //                true, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{false, false, false, false, true});
   //
   //        checkQueries(qf.propertyValue("s", propertyName2),
   //                true, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{false, false, false, false, true});
   //
   //        // lower case
   //        checkQueries(qf.propertyValue("s", propertyName1),
   //                false, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{true, false, false, false, false});
   //
   //        checkQueries(qf.propertyValue("s", propertyName2),
   //                false, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{true, false, false, false, false});
   //    }
   //
   //    public void testUpperLowerCase() throws RepositoryException {
   //        // first upper case, then lower case again
   //        checkQueries(qf.upperCase(qf.propertyValue("s", propertyName1)),
   //                false, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{true, false, false, false, false});
   //    }
   //
   //    public void testUpperCaseTwice() throws RepositoryException {
   //        // upper case twice
   //        checkQueries(qf.upperCase(qf.propertyValue("s", propertyName1)),
   //                true, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{false, false, false, false, true});
   //    }
   //
   //    public void testLowerUpperCase() throws RepositoryException {
   //        // first lower case, then upper case again
   //        checkQueries(qf.lowerCase(qf.propertyValue("s", propertyName1)),
   //                true, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{false, false, false, false, true});
   //    }
   //
   //    public void testLowerCaseTwice() throws RepositoryException {
   //        // lower case twice
   //        checkQueries(qf.lowerCase(qf.propertyValue("s", propertyName1)),
   //                false, QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO,
   //                new String[]{"abc", "Abc", "aBc", "abC", "ABC"},
   //                PropertyType.STRING,
   //                new boolean[]{true, false, false, false, false});
   //    }
   //
   //    //-------------------------------< internal >-------------------------------
   //
   //    private void checkQueries(DynamicOperand operand,
   //                              boolean toUpper,
   //                              String operator,
   //                              String[] literals,
   //                              int type,
   //                              boolean[] matches) throws RepositoryException {
   //        for (int i = 0; i < literals.length; i++) {
   //            QueryObjectModel qom = createQuery(operand, toUpper, operator, vf.createValue(literals[i], type));
   //            checkQOM(qom, matches[i] ? new Node[]{node} : new Node[0]);
   //        }
   //    }
   //    
   //    private QueryObjectModel createQuery(DynamicOperand operand,
   //                                         boolean toUpper,
   //                                         String operator,
   //                                         Value literal)
   //            throws RepositoryException {
   //        if (toUpper) {
   //            operand = qf.upperCase(operand);
   //        } else {
   //            operand = qf.lowerCase(operand);
   //        }
   //        return qf.createQuery(
   //                qf.selector(testNodeType, "s"),
   //                qf.and(
   //                        qf.childNode("s", testRoot),
   //                        qf.comparison(
   //                                operand,
   //                                operator,
   //                                qf.literal(literal)
   //                        )
   //                ), null, null);
   //    }
}
