????5????????????????????

???????????
??????????--gtest_filter???й????????д????????????
????--gtest_filter=QueueTest.DefaultCons
????--gtest_filter=QueueTest.*
????????????????? /n??n??????????д??????????
????--gtest_filter=QueueTest*
???????????????У?????????????????????????????????????????????????β????
??????????????????????
????// ????????????????
????template <class E?? class F>
????class Que
????{
????public:
????Que() {}
????void Enque(const E& el) {}
????E* Deque() {}
????F size() const
????{
????return (F)123;
????}
????};
???????????????????????????????????????~~
??????????β????????????
???????濪??????????????ζ????????????в????
?????????????淽??
???????????????????????????????????????????????????????????в????????gtest??????????????????????????????δ?????????????
?????????????
??????????????????????????????????????????????????????????
????????????????????
????template <class A?? class B>
????struct Params
????{
????typedef typename A TypeA;
????typedef typename B TypeB;
????}
??????????????????
template <class T>
class TestX : public testing::Test
{
protected:
TestX() : m_i(CreateIndex<typename T::TypeA?? typename T::TypeB())
{}
virtual ~TestX()
{
delete m_i;
}
void Setup() {}
void TearDown() {}
// Index????????????
Index<typename T::TypeA?? typename T::TypeB>* const m_i;
};
????????????????????б??д??
????typedef testing::Types<Params<int?? int>?? Params<char?? char> > Impls;
??????????????д???????????
????TYPED_TEST_CASE(TestX?? Impls);
????TYPED_TEST(TestX?? DefaultCons)
????{
????// ?????????????????д???′???
????typename TypeParam::TypeA sA;
????typename TypeParam::TypeB sB;
????ASSERT_EQ(0?? this->m_i->length());
????}