/* * 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 com.facebook.presto.operator.window; import com.facebook.presto.testing.LocalQueryRunner; import com.facebook.presto.testing.MaterializedResult; import org.intellij.lang.annotations.Language; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import static com.facebook.presto.SessionTestUtils.TEST_SESSION; import static com.google.common.base.Preconditions.checkArgument; import static io.airlift.testing.Closeables.closeAllRuntimeException; @Test public abstract class AbstractTestWindowFunction { protected LocalQueryRunner queryRunner; @BeforeClass public final void initTestWindowFunction() { queryRunner = new LocalQueryRunner(TEST_SESSION); } @AfterClass(alwaysRun = true) public final void destroyTestWindowFunction() { closeAllRuntimeException(queryRunner); queryRunner = null; } protected void assertWindowQuery(@Language("SQL") String sql, MaterializedResult expected) { WindowAssertions.assertWindowQuery(sql, expected, queryRunner); } protected void assertUnboundedWindowQuery(@Language("SQL") String sql, MaterializedResult expected) { assertWindowQuery(unbounded(sql), expected); } protected void assertWindowQueryWithNulls(@Language("SQL") String sql, MaterializedResult expected) { WindowAssertions.assertWindowQueryWithNulls(sql, expected, queryRunner); } protected MaterializedResult executeWindowQueryWithNulls(@Language("SQL") String sql) { return WindowAssertions.executeWindowQueryWithNulls(sql, queryRunner); } protected void assertUnboundedWindowQueryWithNulls(@Language("SQL") String sql, MaterializedResult expected) { assertWindowQueryWithNulls(unbounded(sql), expected); } @Language("SQL") private static String unbounded(@Language("SQL") String sql) { checkArgument(sql.endsWith(")"), "SQL does not end with ')'"); return sql.substring(0, sql.length() - 1) + " ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)"; } }