public void Exception_thrown_for_function_with_direct_reference_to_itself_in_definition() { var query = "ProductModel.F_D()"; var expectedExceptionMessage = Strings.Cqt_UDF_FunctionDefinitionWithCircularReference("ProductModel.F_D"); QueryTestHelpers.VerifyThrows <EntityCommandCompilationException>(query, workspace, expectedExceptionMessage); }
public void Overload_resolution_for_function_taking_two_integers_as_arguments_negative() { var query1 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int32))"; var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments + " Near function 'ProductModel.F_In_ST_1()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1); var query2 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int16))"; var expectedExceptionMessage2 = Strings.AmbiguousFunctionArguments + " Near function 'ProductModel.F_In_ST_1()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2); var query3 = "ProductModel.F_In_ST_1(CAST(1 as Int64), CAST(1 AS Int16))"; var expectedExceptionMessage3 = Strings.AmbiguousFunctionArguments + " Near function 'ProductModel.F_In_ST_1()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query3, workspace, expectedExceptionMessage3); var query4 = "ProductModel.F_In_ST_1(CAST(1 as Double), CAST(1 AS Double))"; var expectedExceptionMessage4 = Strings.NoFunctionOverloadMatch( "ProductModel", "F_In_ST_1", "F_In_ST_1(Edm.Double, Edm.Double)") + " Near function 'F_In_ST_1()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query4, workspace, expectedExceptionMessage4); }
public void Exception_thrown_for_function_with_no_body() { var query = "ProductModel.F_NoBody()"; var expectedExceptionMessage = Strings.Cqt_UDF_FunctionHasNoDefinition("ProductModel.F_NoBody()"); QueryTestHelpers.VerifyThrows <InvalidOperationException>(query, workspace, expectedExceptionMessage); }
public void Exception_thrown_if_invalid_parameter_passed_to_function() { var query = "ProductModel.F_I(10)"; var expectedExceptionMessage = Strings.Cqt_UDF_FunctionDefinitionResultTypeMismatch( "Edm.Int32", "ProductModel.F_I", "Edm.Int16"); QueryTestHelpers.VerifyThrows <InvalidOperationException>(query, workspace, expectedExceptionMessage); }
public void Exception_thrown_for_function_with_indirect_reference_to_itself_in_definition() { var query1 = "ProductModel.F_E()"; QueryTestHelpers.VerifyThrows <EntityCommandCompilationException>(query1, workspace, "Cqt_UDF_FunctionDefinitionWithCircularReference", "ProductModel.F_E"); var query2 = "ProductModel.F_F()"; QueryTestHelpers.VerifyThrows <EntityCommandCompilationException>(query2, workspace, "Cqt_UDF_FunctionDefinitionWithCircularReference", "ProductModel.F_F"); }
public void Exception_thrown_for_function_that_references_inline_function_in_its_body() { var query = @"using ProductModel; function F_H() as (1) F_G()"; var expectedExceptionMessage = Strings.CannotResolveNameToTypeOrFunction("F_H") + " Near simple identifier, line 3, column 7."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query, workspace, expectedExceptionMessage); }
public void Exception_thrown_for_function_that_references_inline_function_in_its_body() { var query = @"using ProductModel; function F_H() as (1) F_G()"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query, workspace, "CannotResolveNameToTypeOrFunction", s => s.Replace(" Near simple identifier, line 3, column 7.", ""), "F_H"); }
public void Exception_thrown_for_function_that_references_inline_function_in_its_body() { var query = @"using ProductModel; function F_H() as (1) F_G()"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query, workspace, "CannotResolveNameToTypeOrFunction", /*isExactMatch*/ false, "F_H"); }
public void Overload_resolution_for_functions_with_nulls_as_arguments_negative() { var query1 = "ProductModel.F_In_Number(null)"; var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments + " Near function 'ProductModel.F_In_Number()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1); var query2 = "ProductModel.F_In_ColRow2(CAST(1 as Int16), null, CAST(1 as Int64))"; var expectedExceptionMessage2 = Strings.NoFunctionOverloadMatch( "ProductModel", "F_In_ColRow2", "F_In_ColRow2(Edm.Int16, NULL, Edm.Int64)") + " Near function 'F_In_ColRow2()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2); }
public void Overload_resolution_for_function_taking_entity_and_integer_as_arguments_negative() { var query1 = "ProductModel.F_In_ProdNumber2(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p), CAST(1 as Int32))"; var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments + " Near function 'ProductModel.F_In_ProdNumber2()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1); var query2 = "ProductModel.F_In_ProdNumber2(anyelement(ProductContainer.Products), CAST(1 as Decimal))"; var expectedExceptionMessage2 = Strings.NoFunctionOverloadMatch( "ProductModel", "F_In_ProdNumber2", "F_In_ProdNumber2(ProductModel.Product, Edm.Decimal)") + " Near function 'F_In_ProdNumber2()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2); }
public void Overload_resolution_for_function_taking_collection_of_rows_as_argument_negative() { var query1 = "ProductModel.F_In_ColRow({Row(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p) as x, CAST(1 as Int32) as y)})"; var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments + " Near function 'ProductModel.F_In_ColRow()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1); var query2 = "ProductModel.F_In_ColRow({Row(anyelement(ProductContainer.Products) as x, CAST(1 as Decimal) as y)})"; var expectedExceptionMessage2 = Strings.NoFunctionOverloadMatch( "ProductModel", "F_In_ColRow", "F_In_ColRow(Transient.collection[Transient.rowtype[(x,ProductModel.Product(Nullable=True,DefaultValue=)),(y,Edm.Decimal(Nullable=True,DefaultValue=,Precision=,Scale=))](Nullable=True,DefaultValue=)])") + " Near function 'F_In_ColRow()', line 1, column 14."; QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2); }
public void Overload_resolution_for_functions_with_nulls_as_arguments_negative() { var query1 = "ProductModel.F_In_Number(null)"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query1, workspace, "AmbiguousFunctionArguments", s => s.Replace(" Near function 'ProductModel.F_In_Number()', line 1, column 14.", "")); var query2 = "ProductModel.F_In_ColRow2(CAST(1 as Int16), null, CAST(1 as Int64))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query2, workspace, "NoFunctionOverloadMatch", s => s.Replace(" Near function 'F_In_ColRow2()', line 1, column 14.", ""), "ProductModel", "F_In_ColRow2", "F_In_ColRow2(Edm.Int16, NULL, Edm.Int64)"); }
public void Overload_resolution_for_functions_with_nulls_as_arguments_negative() { var query1 = "ProductModel.F_In_Number(null)"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query1, workspace, "AmbiguousFunctionArguments", /*isExactMatch*/ false); var query2 = "ProductModel.F_In_ColRow2(CAST(1 as Int16), null, CAST(1 as Int64))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query2, workspace, "NoFunctionOverloadMatch", /*isExactMatch*/ false, "ProductModel", "F_In_ColRow2", "F_In_ColRow2(Edm.Int16, NULL, Edm.Int64)"); }
public void Overload_resolution_for_function_taking_entity_and_integer_as_arguments_negative() { var query1 = "ProductModel.F_In_ProdNumber2(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p), CAST(1 as Int32))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query1, workspace, "AmbiguousFunctionArguments", /*isExactMatch*/ false); var query2 = "ProductModel.F_In_ProdNumber2(anyelement(ProductContainer.Products), CAST(1 as Decimal))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query2, workspace, "NoFunctionOverloadMatch", /*isExactMatch*/ false, "ProductModel", "F_In_ProdNumber2", "F_In_ProdNumber2(ProductModel.Product, Edm.Decimal)"); }
public void Overload_resolution_for_function_taking_collection_of_rows_as_argument_negative() { var query1 = "ProductModel.F_In_ColRow({Row(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p) as x, CAST(1 as Int32) as y)})"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query1, workspace, "AmbiguousFunctionArguments", /*isExactMatch*/ false); var query2 = "ProductModel.F_In_ColRow({Row(anyelement(ProductContainer.Products) as x, CAST(1 as Decimal) as y)})"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query2, workspace, "NoFunctionOverloadMatch", /*isExactMatch*/ false, "ProductModel", "F_In_ColRow", "F_In_ColRow(Transient.collection[Transient.rowtype[(x,ProductModel.Product(Nullable=True,DefaultValue=)),(y,Edm.Decimal(Nullable=True,DefaultValue=,Precision=,Scale=))](Nullable=True,DefaultValue=)])"); }
public void Overload_resolution_for_function_taking_row_as_argument_negative() { var query1 = "ProductModel.F_In_Row(Row(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p) as x, CAST(1 as Int32) as y))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query1, workspace, "AmbiguousFunctionArguments", s => s.Replace(" Near function 'ProductModel.F_In_Row()', line 1, column 14.", "")); var query2 = "ProductModel.F_In_Row(Row(anyelement(ProductContainer.Products) as x, CAST(1 as Decimal) as y))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query2, workspace, "NoFunctionOverloadMatch", s => s.Replace( " Near function 'F_In_Row()', line 1, column 14.", ""), "ProductModel", "F_In_Row", "F_In_Row(Transient.rowtype[(x,ProductModel.Product(Nullable=True,DefaultValue=)),(y,Edm.Decimal(Nullable=True,DefaultValue=,Precision=,Scale=))])"); }
public void Overload_resolution_for_function_taking_two_integers_as_arguments_negative() { var query1 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int32))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query1, workspace, "AmbiguousFunctionArguments", s => s.Replace(" Near function 'ProductModel.F_In_ST_1()', line 1, column 14.", "")); var query2 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int16))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query2, workspace, "AmbiguousFunctionArguments", s => s.Replace(" Near function 'ProductModel.F_In_ST_1()', line 1, column 14.", "")); var query3 = "ProductModel.F_In_ST_1(CAST(1 as Int64), CAST(1 AS Int16))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query3, workspace, "AmbiguousFunctionArguments", s => s.Replace(" Near function 'ProductModel.F_In_ST_1()', line 1, column 14.", "")); var query4 = "ProductModel.F_In_ST_1(CAST(1 as Double), CAST(1 AS Double))"; QueryTestHelpers.VerifyThrows <EntitySqlException>( query4, workspace, "NoFunctionOverloadMatch", s => s.Replace(" Near function 'F_In_ST_1()', line 1, column 14.", ""), "ProductModel", "F_In_ST_1", "F_In_ST_1(Edm.Double, Edm.Double)"); }
public void Exception_thrown_for_function_with_no_body() { var query = "ProductModel.F_NoBody()"; QueryTestHelpers.VerifyThrows <InvalidOperationException>(query, workspace, "Cqt_UDF_FunctionHasNoDefinition", "ProductModel.F_NoBody()"); }