if (inferred.returns().size() != specified.returns().size()) {
AT_ERROR("In operator registration: Specified function schema [", serialize_schema(specified), "] ",
"doesn't match inferred function schema [", serialize_schema(inferred), "]. ",
- "The number of returns is different.Specified ", specified.returns().size(),
+ "The number of returns is different. Specified ", specified.returns().size(),
" but inferred ", inferred.returns().size());
}
if (*inferred.arguments()[i].type() != *specified.arguments()[i].type()) {
AT_ERROR("In operator registration: Specified function schema [", serialize_schema(specified), "] ",
"doesn't match inferred function schema [", serialize_schema(inferred), "]. ",
- "Type mismatch in argument ", i, ": specified ", specified.arguments()[i].type()->str(),
+ "Type mismatch in argument ", (i+1) , ": specified ", specified.arguments()[i].type()->str(),
" but inferred ", inferred.arguments()[i].type()->str());
}
}
if (*inferred.returns()[i].type() != *specified.returns()[i].type()) {
AT_ERROR("In operator registration: Specified function schema [", serialize_schema(specified), "] ",
"doesn't match inferred function schema [", serialize_schema(inferred), "]. ",
- "Type mismatch in return ", i, ": specified ", specified.returns()[i].type()->str(),
+ "Type mismatch in return ", (i+1), ": specified ", specified.returns()[i].type()->str(),
" but inferred ", inferred.returns()[i].type()->str());
}
}
), &kernel_func<int64_t, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2")}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), &kernel_func<int64_t, Tensor>::func),
- c10::Error
+ ), &kernel_func<int64_t, Tensor>::func);
+ }, "The number of arguments is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), &kernel_func<void, Tensor, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{}),
(std::vector<Argument>{})
- ), &kernel_func<void, Tensor, Tensor>::func),
- c10::Error
+ ), &kernel_func<void, Tensor, Tensor>::func);
+ }, "The number of arguments is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), &kernel_func<void, Tensor, Tensor>::func),
- c10::Error
+ ), &kernel_func<void, Tensor, Tensor>::func);
+ }, "The number of arguments is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2"), Argument("arg3")}),
(std::vector<Argument>{})
- ), &kernel_func<void, Tensor, Tensor>::func),
- c10::Error
+ ), &kernel_func<void, Tensor, Tensor>::func);
+ }, "The number of arguments is different. Specified 3 but inferred 2"
);
}
), &kernel_func<int64_t, Tensor, int64_t>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1"), Argument("arg2", FloatType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), &kernel_func<int64_t, Tensor, int64_t>::func),
- c10::Error
+ ), &kernel_func<int64_t, Tensor, int64_t>::func);
+ }, "Type mismatch in argument 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1", IntType::get()), Argument("arg2", IntType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), &kernel_func<int64_t, Tensor, int64_t>::func),
- c10::Error
+ ), &kernel_func<int64_t, Tensor, int64_t>::func);
+ }, "Type mismatch in argument 1: specified int but inferred Tensor"
);
}
), &kernel_func<int64_t, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), &kernel_func<int64_t, Tensor>::func),
- c10::Error
+ ), &kernel_func<int64_t, Tensor>::func);
+ }, "The number of returns is different. Specified 0 but inferred 1"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()),
Argument("ret2", IntType::get())})
- ), &kernel_func<int64_t, Tensor>::func),
- c10::Error
+ ), &kernel_func<int64_t, Tensor>::func);
+ }, "The number of returns is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), &kernel_func<void, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), &kernel_func<void, Tensor>::func),
- c10::Error
+ ), &kernel_func<void, Tensor>::func);
+ }, "The number of returns is different. Specified 1 but inferred 0"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret"), Argument("ret2")})
- ), &kernel_func<void, Tensor>::func),
- c10::Error
+ ), &kernel_func<void, Tensor>::func);
+ }, "The number of returns is different. Specified 2 but inferred 0"
);
// assert this does not fail because it matches
), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func),
- c10::Error
+ ), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func);
+ }, "The number of returns is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1")})
- ), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func),
- c10::Error
+ ), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func);
+ }, "The number of returns is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2"), Argument("ret3")})
- ), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func),
- c10::Error
+ ), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func);
+ }, "The number of returns is different. Specified 3 but inferred 2"
);
}
), &kernel_func<int64_t, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), &kernel_func<int64_t, Tensor>::func),
- c10::Error
+ ), &kernel_func<int64_t, Tensor>::func);
+ }, "Type mismatch in return 1: specified Tensor but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), &kernel_func<int64_t, Tensor>::func),
- c10::Error
+ ), &kernel_func<int64_t, Tensor>::func);
+ }, "Type mismatch in return 1: specified float but inferred int"
);
// assert this does not fail because it matches
), &kernel_func<Tensor, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), &kernel_func<Tensor, Tensor>::func),
- c10::Error
+ ), &kernel_func<Tensor, Tensor>::func);
+ }, "Type mismatch in return 1: specified float but inferred Tensor"
);
// assert this does not fail because it matches
), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func);
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2", FloatType::get())})
- ), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func),
- c10::Error
+ ), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func);
+ }, "Type mismatch in return 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()), Argument("ret2", IntType::get())})
- ), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func),
- c10::Error
+ ), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func);
+ }, "Type mismatch in return 1: specified int but inferred Tensor"
);
}
), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2")}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), kernel<decltype(kernel_func<void, Tensor, Tensor>::func), &kernel_func<void, Tensor, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{}),
(std::vector<Argument>{})
- ), kernel<decltype(kernel_func<void, Tensor, Tensor>::func), &kernel_func<void, Tensor, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<void, Tensor, Tensor>::func), &kernel_func<void, Tensor, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel<decltype(kernel_func<void, Tensor, Tensor>::func), &kernel_func<void, Tensor, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<void, Tensor, Tensor>::func), &kernel_func<void, Tensor, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2"), Argument("arg3")}),
(std::vector<Argument>{})
- ), kernel<decltype(kernel_func<void, Tensor, Tensor>::func), &kernel_func<void, Tensor, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<void, Tensor, Tensor>::func), &kernel_func<void, Tensor, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 3 but inferred 2"
);
}
), kernel<decltype(kernel_func<int64_t, Tensor, int64_t>::func), &kernel_func<int64_t, Tensor, int64_t>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1"), Argument("arg2", FloatType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel<decltype(kernel_func<int64_t, Tensor, int64_t>::func), &kernel_func<int64_t, Tensor, int64_t>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<int64_t, Tensor, int64_t>::func), &kernel_func<int64_t, Tensor, int64_t>::func>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in argument 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1", IntType::get()), Argument("arg2", IntType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel<decltype(kernel_func<int64_t, Tensor, int64_t>::func), &kernel_func<int64_t, Tensor, int64_t>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<int64_t, Tensor, int64_t>::func), &kernel_func<int64_t, Tensor, int64_t>::func>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in argument 1: specified int but inferred Tensor"
);
}
), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 0 but inferred 1"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()),
Argument("ret2", IntType::get())})
- ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), kernel<decltype(kernel_func<void, Tensor>::func), &kernel_func<void, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), kernel<decltype(kernel_func<void, Tensor>::func), &kernel_func<void, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<void, Tensor>::func), &kernel_func<void, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 1 but inferred 0"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret"), Argument("ret2")})
- ), kernel<decltype(kernel_func<void, Tensor>::func), &kernel_func<void, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<void, Tensor>::func), &kernel_func<void, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 2 but inferred 0"
);
// assert this does not fail because it matches
), kernel<decltype(kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel<decltype(kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1")})
- ), kernel<decltype(kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2"), Argument("ret3")})
- ), kernel<decltype(kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func), &kernel_func<std::tuple<Tensor, Tensor>, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 3 but inferred 2"
);
}
), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified Tensor but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<int64_t, Tensor>::func), &kernel_func<int64_t, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified float but inferred int"
);
// assert this does not fail because it matches
), kernel<decltype(kernel_func<Tensor, Tensor>::func), &kernel_func<Tensor, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), kernel<decltype(kernel_func<Tensor, Tensor>::func), &kernel_func<Tensor, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<Tensor, Tensor>::func), &kernel_func<Tensor, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified float but inferred Tensor"
);
// assert this does not fail because it matches
), kernel<decltype(kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2", FloatType::get())})
- ), kernel<decltype(kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()), Argument("ret2", IntType::get())})
- ), kernel<decltype(kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<decltype(kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func), &kernel_func<std::tuple<Tensor, int64_t>, Tensor>::func>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified int but inferred Tensor"
);
}
), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2")}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), kernel<KernelFunc<void, Tensor, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{}),
(std::vector<Argument>{})
- ), kernel<KernelFunc<void, Tensor, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<void, Tensor, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel<KernelFunc<void, Tensor, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<void, Tensor, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2"), Argument("arg3")}),
(std::vector<Argument>{})
- ), kernel<KernelFunc<void, Tensor, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<void, Tensor, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 3 but inferred 2"
);
}
), kernel<KernelFunc<int64_t, Tensor, int64_t>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1"), Argument("arg2", FloatType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel<KernelFunc<int64_t, Tensor, int64_t>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<int64_t, Tensor, int64_t>>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in argument 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1", IntType::get()), Argument("arg2", IntType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel<KernelFunc<int64_t, Tensor, int64_t>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<int64_t, Tensor, int64_t>>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in argument 1: specified int but inferred Tensor"
);
}
), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 0 but inferred 1"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()),
Argument("ret2", IntType::get())})
- ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), kernel<KernelFunc<void, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), kernel<KernelFunc<void, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<void, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 1 but inferred 0"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret"), Argument("ret2")})
- ), kernel<KernelFunc<void, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<void, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 2 but inferred 0"
);
// assert this does not fail because it matches
), kernel<KernelFunc<std::tuple<Tensor, Tensor>, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel<KernelFunc<std::tuple<Tensor, Tensor>, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<std::tuple<Tensor, Tensor>, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1")})
- ), kernel<KernelFunc<std::tuple<Tensor, Tensor>, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<std::tuple<Tensor, Tensor>, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2"), Argument("ret3")})
- ), kernel<KernelFunc<std::tuple<Tensor, Tensor>, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<std::tuple<Tensor, Tensor>, Tensor>>(), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 3 but inferred 2"
);
}
), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified Tensor but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<int64_t, Tensor>>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified float but inferred int"
);
// assert this does not fail because it matches
), kernel<KernelFunc<Tensor, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), kernel<KernelFunc<Tensor, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<Tensor, Tensor>>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified float but inferred Tensor"
);
// assert this does not fail because it matches
), kernel<KernelFunc<std::tuple<Tensor, int64_t>, Tensor>>(), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2", FloatType::get())})
- ), kernel<KernelFunc<std::tuple<Tensor, int64_t>, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<std::tuple<Tensor, int64_t>, Tensor>>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()), Argument("ret2", IntType::get())})
- ), kernel<KernelFunc<std::tuple<Tensor, int64_t>, Tensor>>(), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel<KernelFunc<std::tuple<Tensor, int64_t>, Tensor>>(), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified int but inferred Tensor"
);
}
), [] (Tensor) -> int64_t {return 0;});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2")}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), [] (Tensor) -> int64_t {return 0;}),
- c10::Error
+ ), [] (Tensor) -> int64_t {return 0;});
+ }, "The number of arguments is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), [] (Tensor, Tensor) -> void {});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{}),
(std::vector<Argument>{})
- ), [] (Tensor, Tensor) -> void {}),
- c10::Error
+ ), [] (Tensor, Tensor) -> void {});
+ }, "The number of arguments is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), [] (Tensor, Tensor) -> void {}),
- c10::Error
+ ), [] (Tensor, Tensor) -> void {});
+ }, "The number of arguments is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2"), Argument("arg3")}),
(std::vector<Argument>{})
- ), [] (Tensor, Tensor) -> void {}),
- c10::Error
+ ), [] (Tensor, Tensor) -> void {});
+ }, "The number of arguments is different. Specified 3 but inferred 2"
);
}
), [] (Tensor, int64_t) -> int64_t {return 0;});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1"), Argument("arg2", FloatType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), [] (Tensor, int64_t) -> int64_t {return 0;}),
- c10::Error
+ ), [] (Tensor, int64_t) -> int64_t {return 0;});
+ }, "Type mismatch in argument 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1", IntType::get()), Argument("arg2", IntType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), [] (Tensor, int64_t) -> int64_t {return 0;}),
- c10::Error
+ ), [] (Tensor, int64_t) -> int64_t {return 0;});
+ }, "Type mismatch in argument 1: specified int but inferred Tensor"
);
}
), [] (Tensor) -> int64_t {return 0;});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), [] (Tensor) -> int64_t {return 0;}),
- c10::Error
+ ), [] (Tensor) -> int64_t {return 0;});
+ }, "The number of returns is different. Specified 0 but inferred 1"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()),
Argument("ret2", IntType::get())})
- ), [] (Tensor) -> int64_t {return 0;}),
- c10::Error
+ ), [] (Tensor) -> int64_t {return 0;});
+ }, "The number of returns is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), [] (Tensor) -> void {});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), [] (Tensor) -> void {}),
- c10::Error
+ ), [] (Tensor) -> void {});
+ }, "The number of returns is different. Specified 1 but inferred 0"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret"), Argument("ret2")})
- ), [] (Tensor) -> void {}),
- c10::Error
+ ), [] (Tensor) -> void {});
+ }, "The number of returns is different. Specified 2 but inferred 0"
);
// assert this does not fail because it matches
), [] (Tensor) -> std::tuple<Tensor, Tensor> {return {};});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), [] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}),
- c10::Error
+ ), [] (Tensor) -> std::tuple<Tensor, Tensor> {return {};});
+ }, "The number of returns is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1")})
- ), [] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}),
- c10::Error
+ ), [] (Tensor) -> std::tuple<Tensor, Tensor> {return {};});
+ }, "The number of returns is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2"), Argument("ret3")})
- ), [] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}),
- c10::Error
+ ), [] (Tensor) -> std::tuple<Tensor, Tensor> {return {};});
+ }, "The number of returns is different. Specified 3 but inferred 2"
);
}
), [] (Tensor) -> int64_t {return 0;});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), [] (Tensor) -> int64_t {return 0;}),
- c10::Error
+ ), [] (Tensor) -> int64_t {return 0;});
+ }, "Type mismatch in return 1: specified Tensor but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), [] (Tensor) -> int64_t {return 0;}),
- c10::Error
+ ), [] (Tensor) -> int64_t {return 0;});
+ }, "Type mismatch in return 1: specified float but inferred int"
);
// assert this does not fail because it matches
), [] (Tensor) -> Tensor {return {};});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), [] (Tensor) -> Tensor {return {};}),
- c10::Error
+ ), [] (Tensor) -> Tensor {return {};});
+ }, "Type mismatch in return 1: specified float but inferred Tensor"
);
// assert this does not fail because it matches
), [] (Tensor) -> std::tuple<Tensor, int64_t> {return {};});
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2", FloatType::get())})
- ), [] (Tensor) -> std::tuple<Tensor, int64_t> {return {};}),
- c10::Error
+ ), [] (Tensor) -> std::tuple<Tensor, int64_t> {return {};});
+ }, "Type mismatch in return 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()), Argument("ret2", IntType::get())})
- ), [] (Tensor) -> std::tuple<Tensor, int64_t> {return {};}),
- c10::Error
+ ), [] (Tensor) -> std::tuple<Tensor, int64_t> {return {};});
+ }, "Type mismatch in return 1: specified int but inferred Tensor"
);
}
), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2")}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), kernel([] (Tensor, Tensor) -> void {}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{}),
(std::vector<Argument>{})
- ), kernel([] (Tensor, Tensor) -> void {}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor, Tensor) -> void {}), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel([] (Tensor, Tensor) -> void {}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor, Tensor) -> void {}), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg"), Argument("arg2"), Argument("arg3")}),
(std::vector<Argument>{})
- ), kernel([] (Tensor, Tensor) -> void {}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor, Tensor) -> void {}), dispatchKey(TensorType1()));
+ }, "The number of arguments is different. Specified 3 but inferred 2"
);
}
), kernel([] (Tensor, int64_t) -> int64_t {return {};}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1"), Argument("arg2", FloatType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel([] (Tensor, int64_t) -> int64_t {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor, int64_t) -> int64_t {return {};}), dispatchKey(TensorType1()));
+ }, "Type mismatch in argument 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg1", IntType::get()), Argument("arg2", IntType::get())}),
(std::vector<Argument>{Argument("ret", IntType::get())})
- ), kernel([] (Tensor, int64_t) -> int64_t {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor, int64_t) -> int64_t {return {};}), dispatchKey(TensorType1()));
+ }, "Type mismatch in argument 1: specified int but inferred Tensor"
);
}
), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 0 but inferred 1"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()),
Argument("ret2", IntType::get())})
- ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 2 but inferred 1"
);
// assert this does not fail because it matches
), kernel([] (Tensor) -> void {}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), kernel([] (Tensor) -> void {}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> void {}), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 1 but inferred 0"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret"), Argument("ret2")})
- ), kernel([] (Tensor) -> void {}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> void {}), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 2 but inferred 0"
);
// assert this does not fail because it matches
), kernel([] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{})
- ), kernel([] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 0 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1")})
- ), kernel([] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 1 but inferred 2"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2"), Argument("ret3")})
- ), kernel([] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> std::tuple<Tensor, Tensor> {return {};}), dispatchKey(TensorType1()));
+ }, "The number of returns is different. Specified 3 but inferred 2"
);
}
), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret")})
- ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified Tensor but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> int64_t {return {};}), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified float but inferred int"
);
// assert this does not fail because it matches
), kernel([] (Tensor) -> Tensor {return {};}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret", FloatType::get())})
- ), kernel([] (Tensor) -> Tensor {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> Tensor {return {};}), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified float but inferred Tensor"
);
// assert this does not fail because it matches
), kernel([] (Tensor) -> std::tuple<Tensor, int64_t> {return {};}), dispatchKey(TensorType1()));
// and now a set of mismatching schemas
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1"), Argument("ret2", FloatType::get())})
- ), kernel([] (Tensor) -> std::tuple<Tensor, int64_t> {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> std::tuple<Tensor, int64_t> {return {};}), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 2: specified float but inferred int"
);
- EXPECT_THROW(
+ expectThrows<c10::Error>([] {
RegisterOperators()
.op(FunctionSchema(
"_test::mismatch",
"",
(std::vector<Argument>{Argument("arg")}),
(std::vector<Argument>{Argument("ret1", IntType::get()), Argument("ret2", IntType::get())})
- ), kernel([] (Tensor) -> std::tuple<Tensor, int64_t> {return {};}), dispatchKey(TensorType1())),
- c10::Error
+ ), kernel([] (Tensor) -> std::tuple<Tensor, int64_t> {return {};}), dispatchKey(TensorType1()));
+ }, "Type mismatch in return 1: specified int but inferred Tensor"
);
}
TEST(OperatorRegistrationTest, whenTryingToRegisterWithoutKernel_thenFails) {
// make sure it crashes when kernel is absent
- EXPECT_THROW(
- c10::RegisterOperators().op(dummySchema, dispatchKey(TensorType1())),
- c10::Error
- );
+ expectThrows<c10::Error>([&] {
+ c10::RegisterOperators().op(dummySchema, dispatchKey(TensorType1()));
+ }, "but didn't specify a kernel");
// but make sure it doesn't crash when kernel is present
c10::RegisterOperators().op(dummySchema, kernel<DummyKernel>(), dispatchKey(TensorType1()));
auto op = Dispatcher::singleton().findSchema("_test::dummy", "");
ASSERT_TRUE(op.has_value());
- EXPECT_THROW(
- callOp(*op, dummyTensor(TensorType2())),
- c10::Error
- );
+ expectThrows<c10::Error>([&] {
+ callOp(*op, dummyTensor(TensorType2()));
+ }, "Didn't find kernel to dispatch to for operator '_test::dummy'");
}
TEST(OperatorRegistrationTest, givenOpWithFallbackKernelOutOfScope_whenCallingOpWithWrongDispatchKey_thenFails) {
auto op = Dispatcher::singleton().findSchema("_test::dummy", "");
ASSERT_TRUE(op.has_value());
- EXPECT_THROW(
- callOp(*op, dummyTensor(TensorType2())),
- c10::Error
- );
+ expectThrows<c10::Error>([&] {
+ callOp(*op, dummyTensor(TensorType2()));
+ }, "Didn't find kernel to dispatch to for operator '_test::dummy'");
}
TEST(OperatorRegistrationTest, givenOpWithOnlyFallbackKernel_whenCallingOp_thenCallsFallbackKernel) {
#pragma once
#include <gtest/gtest.h>
+#include <gmock/gmock.h>
#include <ATen/core/Tensor.h>
#include <ATen/core/dispatch/Dispatcher.h>
auto op = c10::Dispatcher::singleton().findSchema(op_name, "");
EXPECT_FALSE(op.has_value());
}
+
+template<class Exception, class Functor>
+inline void expectThrows(Functor&& functor, const char* expectMessageContains) {
+ try {
+ std::forward<Functor>(functor)();
+ } catch (const Exception& e) {
+ EXPECT_THAT(e.what(), testing::HasSubstr(expectMessageContains));
+ return;
+ }
+ ADD_FAILURE() << "Expected to throw exception containing \""
+ << expectMessageContains << "\" but didn't throw";
+}