/* * Copyright 2000-2011 JetBrains s.r.o. * * 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 org.intellij.lang.xpath; import junit.framework.TestCase; import org.intellij.lang.xpath.psi.XPath2SequenceType; import org.intellij.lang.xpath.psi.XPath2Type; import org.intellij.lang.xpath.psi.XPathType; public class XPath2StaticTypeTest extends TestCase { public void testStatic() throws Throwable { assertTrue(XPathType.isAssignable(XPath2Type.NODE, XPath2Type.ITEM)); assertFalse(XPathType.isAssignable(XPath2Type.NODE, XPath2Type.STRING)); } public void testBooleanAssignability() { // via "effective boolean value" assertTrue(XPathType.isAssignable(XPath2Type.BOOLEAN, XPath2Type.STRING)); assertTrue(XPathType.isAssignable(XPath2Type.BOOLEAN, XPath2Type.NUMERIC)); assertTrue(XPathType.isAssignable(XPath2Type.BOOLEAN, XPath2Type.INTEGER)); assertFalse(XPathType.isAssignable(XPath2Type.BOOLEAN_STRICT, XPath2Type.STRING)); } public void testAnyAssignability() { assertTrue(XPathType.isAssignable(XPath2Type.ITEM, XPath2Type.STRING)); assertTrue(XPathType.isAssignable(XPath2Type.ITEM, XPath2Type.BOOLEAN)); assertTrue(XPathType.isAssignable(XPath2Type.ITEM, XPath2Type.DATE)); } public void testNumericAssignability() { assertTrue(XPathType.isAssignable(XPath2Type.FLOAT, XPath2Type.INTEGER)); assertTrue(XPathType.isAssignable(XPath2Type.FLOAT, XPath2Type.DECIMAL)); assertTrue(XPathType.isAssignable(XPath2Type.DOUBLE, XPath2Type.FLOAT)); assertTrue(XPathType.isAssignable(XPath2Type.DOUBLE, XPath2Type.INTEGER)); assertTrue(XPathType.isAssignable(XPath2Type.DOUBLE, XPath2Type.DECIMAL)); assertFalse(XPathType.isAssignable(XPath2Type.FLOAT, XPath2Type.DOUBLE)); assertFalse(XPathType.isAssignable(XPath2Type.DECIMAL, XPath2Type.DOUBLE)); assertFalse(XPathType.isAssignable(XPath2Type.NUMERIC, XPath2Type.BOOLEAN)); } public void testStringAssignability() { assertTrue(XPathType.isAssignable(XPath2Type.STRING, XPath2Type.ANYURI)); assertTrue(XPathType.isAssignable(XPath2Type.STRING, XPath2SequenceType.create(XPath2Type.STRING))); assertTrue(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2SequenceType.create(XPath2Type.STRING))); assertTrue(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2Type.STRING)); assertFalse(XPathType.isAssignable(XPath2Type.STRING, XPath2Type.INTEGER)); assertFalse(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2SequenceType.create(XPath2Type.INTEGER))); } }