Я создал шаблонную функцию, в которую можно поместить любой тип. Теперь это правда, что эта функция всегда будет работать. Если тип T является int, int всегда выходит из функции. Если строка входит, строка выходит.
Теперь я только что посмотрел документацию по бусту. Повышение означает, что я должен использовать BOOST_AUTO_TEST_CASE_TEMPLATE.
Допустим, у меня следующая ситуация:
BOOST_AUTO_TEST_SUITE (MyTestSuite)
typedef boost :: mpl :: list <int, long, short, double, float, std :: string> TestTypes;
BOOST_AUTO_TEST_CASE_TEMPLATE (MyTestCase, T, TestTypes)
{
// These three values will be separated by ',' and can be accessed seprately thanks to their individual getters.
std :: string input = "5,6,7";
Myclass <T> myClass (input);
BOOST_TEST (myClass.getFirst() == 5);
BOOST_TEST (myClass.getSecond() == 6);
BOOST_TEST (myClass.getThird() == 7);
}
BOOST_AUTO_TEST_SUITE_END()
Как видите, я не хочу проверять, верный ли это тип, который я получаю, но совпадает ли возвращаемое значение со значениями, которые я дал. Так что, если я даю 5 и тип double, то мой класс делает его 5,00. Мой чек в настоящее время не делает этого. Как я могу убедиться, что номер, который я хочу проверить, всегда совпадает с номером, который я даю? Это может показаться немного сложным, но если вам нужна дополнительная информация, я отредактирую это сообщение.
И скажем, это работает. Затем я хочу использовать минимальное и максимальное значение этого типа в качестве входных данных. Как я могу это сделать? Как получить минимальное и максимальное значение T?