blob: 3344090cc4fbc53e1334cc0531ce949b933e47c8 [file] [log] [blame]
/*
* 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.apache.calcite.test;
import org.apache.calcite.sql.parser.StringAndPos;
import org.apache.calcite.sql.test.SqlTestFactory;
import org.apache.calcite.sql.test.SqlValidatorTester;
import org.apache.calcite.sql.validate.SqlValidator;
/**
* An abstract base class for implementing tests against {@link SqlValidator}.
*
* <p>A derived class can refine this test in two ways. First, it can add
* {@code testXxx()} methods, to test more functionality.
*
* <p>Second, it can override the {@link #fixture()} method to return a
* different implementation of the {@link SqlValidatorFixture} object. This
* encapsulates the differences between test environments, for example, which
* SQL parser or validator to use.
*/
public class SqlValidatorTestCase {
public static final SqlValidatorFixture FIXTURE =
new SqlValidatorFixture(SqlValidatorTester.DEFAULT,
SqlTestFactory.INSTANCE, StringAndPos.of("?"), false, false);
/** Creates a test case. */
public SqlValidatorTestCase() {
}
//~ Methods ----------------------------------------------------------------
/** Creates a test fixture. Derived classes can override this method to
* run the same set of tests in a different testing environment. */
public SqlValidatorFixture fixture() {
return FIXTURE;
}
/**
* Creates a test context with a SQL query.
* Default catalog: {@link org.apache.calcite.test.catalog.MockCatalogReaderSimple#init()}.
*/
public final SqlValidatorFixture sql(String sql) {
return fixture().withSql(sql);
}
/** Creates a test context with a SQL expression. */
public final SqlValidatorFixture expr(String sql) {
return fixture().withExpr(sql);
}
/** Creates a test context with a SQL expression.
* If an error occurs, the error is expected to span the entire expression. */
public final SqlValidatorFixture wholeExpr(String sql) {
return expr(sql).withWhole(true);
}
public final SqlValidatorFixture winSql(String sql) {
return sql(sql);
}
public final SqlValidatorFixture win(String sql) {
return sql("select * from emp " + sql);
}
public SqlValidatorFixture winExp(String sql) {
return winSql("select " + sql + " from emp window w as (order by deptno)");
}
public SqlValidatorFixture winExp2(String sql) {
return winSql("select " + sql + " from emp");
}
}