/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.query.sql.lang; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Arrays; import org.junit.Test; import org.teiid.designer.runtime.version.spi.ITeiidServerVersion; import org.teiid.designer.runtime.version.spi.TeiidServerVersion; import org.teiid.query.sql.lang.CriteriaOperator.Operator; /** * */ public class TestCriteriaOperator { private class ExpectedResults { private final ITeiidServerVersion version; private final int totalEnums; private final String[] missingSymbols; public ExpectedResults(ITeiidServerVersion version, int totalEnums, String... missingSymbols) { this.version = version; this.totalEnums = totalEnums; this.missingSymbols = missingSymbols; } } private ITeiidServerVersion version(String versionString) { return new TeiidServerVersion(versionString); } /** * Test the {@link Operator#getOperator(ITeiidServerVersion, String)} * function to ensure that the correct number of enum values are returned * given a specific {@link TeiidServerVersion}. */ @Test public void testGetOperator() { ExpectedResults[] expectedResults = new ExpectedResults[] { new ExpectedResults(version("7.0.0"), Operator.values().length), //$NON-NLS-1$ new ExpectedResults(version("7.x.0"), Operator.values().length), //$NON-NLS-1$ new ExpectedResults(version("8.0.0"), Operator.values().length - 5, "like", "in", "is", "is null", "between", ""), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ new ExpectedResults(version("8.x.0"), Operator.values().length - 5, "like", "in", "is", "is null", "between", "") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ }; for (ExpectedResults expected : expectedResults) { int count = 0; for (Operator operator : Operator.values()) { try { for (String symbol : operator.getSymbols()) { Operator foundOperator = Operator.getOperator(expected.version, symbol); assertNotNull(foundOperator); } count++; } catch (Throwable ex) { // Assertion thrown so operator not found for (String symbol : operator.getSymbols()) { assertTrue(Arrays.asList(expected.missingSymbols).contains(symbol)); } } } assertEquals(expected.totalEnums, count); } } }