blob: 4a6af056d76956f688ccd0b22e807c44d12d2048 [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.
*/
#ifdef _WIN32
# include <windows.h>
#endif
#include <vector>
#include <string>
#include <boost/test/unit_test.hpp>
#include "test_type.h"
#include "sql_test_suite_fixture.h"
#include <ignite/common/decimal.h>
using namespace ignite;
BOOST_FIXTURE_TEST_SUITE(SqlOperatorTestSuite, ignite::SqlTestSuiteFixture)
BOOST_AUTO_TEST_CASE(TestOperatorAddInt)
{
CheckSingleResult<SQLINTEGER>("SELECT 123 + 51", 123 + 51);
}
BOOST_AUTO_TEST_CASE(TestOperatorSubInt)
{
CheckSingleResult<SQLINTEGER>("SELECT 123 - 51", 123 - 51);
}
BOOST_AUTO_TEST_CASE(TestOperatorDivInt)
{
CheckSingleResult<SQLINTEGER>("SELECT 123 / 51", 123 / 51);
}
BOOST_AUTO_TEST_CASE(TestOperatorModInt)
{
CheckSingleResult<SQLINTEGER>("SELECT 123 % 51", 123 % 51);
}
BOOST_AUTO_TEST_CASE(TestOperatorMultInt)
{
CheckSingleResult<SQLINTEGER>("SELECT 123 * 51", 123 * 51);
}
BOOST_AUTO_TEST_CASE(TestOperatorAddDouble)
{
CheckSingleResult<double>("SELECT 123.0 + 51.0", 123.0 + 51.0);
}
BOOST_AUTO_TEST_CASE(TestOperatorSubDouble)
{
CheckSingleResult<double>("SELECT 123.0 - 51.0", 123.0 - 51.0);
}
BOOST_AUTO_TEST_CASE(TestOperatorDivDouble)
{
CheckSingleResult<double>("SELECT 123.0 / 51.0", 123.0 / 51.0);
}
BOOST_AUTO_TEST_CASE(TestOperatorModDouble)
{
CheckSingleResult<double>("SELECT 123.0 % 51.0", 123 % 51);
}
BOOST_AUTO_TEST_CASE(TestOperatorMultDouble)
{
CheckSingleResult<double>("SELECT 123.0 * 51.0", 123.0 * 51.0);
}
BOOST_AUTO_TEST_CASE(TestOperatorConcatString)
{
CheckSingleResult<std::string>("SELECT 'Hello' || ' ' || 'World' || '!'", "Hello World!");
}
BOOST_AUTO_TEST_CASE(TestOperatorGreaterInt)
{
CheckSingleResult<bool>("SELECT 2 > 3", false);
CheckSingleResult<bool>("SELECT 3 > 3", false);
CheckSingleResult<bool>("SELECT 34 > 3", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorLessInt)
{
CheckSingleResult<bool>("SELECT 4 < 4", false);
CheckSingleResult<bool>("SELECT 4 < 4", false);
CheckSingleResult<bool>("SELECT 8 < 42", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorGreaterEquealInt)
{
CheckSingleResult<bool>("SELECT 2 >= 3", false);
CheckSingleResult<bool>("SELECT 3 >= 3", true);
CheckSingleResult<bool>("SELECT 34 >= 3", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorLessEquealInt)
{
CheckSingleResult<bool>("SELECT 4 <= 3", false);
CheckSingleResult<bool>("SELECT 4 <= 4", true);
CheckSingleResult<bool>("SELECT 8 <= 42", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorEquealInt)
{
CheckSingleResult<bool>("SELECT 4 = 3", false);
CheckSingleResult<bool>("SELECT 4 = 4", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorNotEquealInt)
{
CheckSingleResult<bool>("SELECT 4 != 3", true);
CheckSingleResult<bool>("SELECT 4 != 4", false);
}
BOOST_AUTO_TEST_CASE(TestOperatorGreaterDouble)
{
CheckSingleResult<bool>("SELECT 2 > 3", false);
CheckSingleResult<bool>("SELECT 3 > 3", false);
CheckSingleResult<bool>("SELECT 34 > 3", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorLessDouble)
{
CheckSingleResult<bool>("SELECT 4.0 < 4.0", false);
CheckSingleResult<bool>("SELECT 4.0 < 4.0", false);
CheckSingleResult<bool>("SELECT 8.0 < 42.0", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorGreaterEquealDouble)
{
CheckSingleResult<bool>("SELECT 2.0 >= 3.0", false);
CheckSingleResult<bool>("SELECT 3.0 >= 3.0", true);
CheckSingleResult<bool>("SELECT 34.0 >= 3.0", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorLessEquealDouble)
{
CheckSingleResult<bool>("SELECT 4.0 <= 3.0", false);
CheckSingleResult<bool>("SELECT 4.0 <= 4.0", true);
CheckSingleResult<bool>("SELECT 8.0 <= 42.0", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorEquealDouble)
{
CheckSingleResult<bool>("SELECT 4.0 = 3.0", false);
CheckSingleResult<bool>("SELECT 4.0 = 4.0", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorNotEquealDouble)
{
CheckSingleResult<bool>("SELECT 4.0 != 3.0", true);
CheckSingleResult<bool>("SELECT 4.0 != 4.0", false);
}
BOOST_AUTO_TEST_CASE(TestOperatorGreaterString)
{
CheckSingleResult<bool>("SELECT 'abc' > 'bcd'", false);
CheckSingleResult<bool>("SELECT 'abc' > 'abc'", false);
CheckSingleResult<bool>("SELECT 'bcd' > 'abc'", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorLessString)
{
CheckSingleResult<bool>("SELECT 'bcd' < 'abc'", false);
CheckSingleResult<bool>("SELECT 'abc' < 'abc'", false);
CheckSingleResult<bool>("SELECT 'abc' < 'bcd'", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorGreaterEquealString)
{
CheckSingleResult<bool>("SELECT 'abc' >= 'bcd'", false);
CheckSingleResult<bool>("SELECT 'abc' >= 'abc'", true);
CheckSingleResult<bool>("SELECT 'bcd' >= 'abc'", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorLessEquealString)
{
CheckSingleResult<bool>("SELECT 'bcd' <= 'abc'", false);
CheckSingleResult<bool>("SELECT 'abc' <= 'bcd'", true);
CheckSingleResult<bool>("SELECT 'abc' <= 'abc'", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorEquealString)
{
CheckSingleResult<bool>("SELECT 'bcd' = 'abc'", false);
CheckSingleResult<bool>("SELECT 'abc' = 'abc'", true);
}
BOOST_AUTO_TEST_CASE(TestOperatorNotEquealString)
{
CheckSingleResult<bool>("SELECT 'abc' != 'abc'", false);
CheckSingleResult<bool>("SELECT 'bcd' != 'abc'", true);
}
BOOST_AUTO_TEST_SUITE_END()