4 #include "boost/scoped_ptr.hpp"
5 #include "gtest/gtest.h"
7 #include "caffe/common.hpp"
8 #include "caffe/layer.hpp"
9 #include "caffe/layer_factory.hpp"
10 #include "caffe/util/db.hpp"
11 #include "caffe/util/io.hpp"
13 #include "caffe/test/test_caffe_main.hpp"
17 template <typename TypeParam>
18 class LayerFactoryTest : public MultiDeviceTest<TypeParam> {};
20 TYPED_TEST_CASE(LayerFactoryTest, TestDtypesAndDevices);
22 TYPED_TEST(LayerFactoryTest, TestCreateLayer) {
23 typedef typename TypeParam::Dtype Dtype;
24 typename LayerRegistry<Dtype>::CreatorRegistry& registry =
25 LayerRegistry<Dtype>::Registry();
26 shared_ptr<Layer<Dtype> > layer;
27 for (typename LayerRegistry<Dtype>::CreatorRegistry::iterator iter =
28 registry.begin(); iter != registry.end(); ++iter) {
29 // Special case: PythonLayer is checked by pytest
30 if (iter->first == "Python") { continue; }
31 LayerParameter layer_param;
32 // Data layers expect a DB
33 if (iter->first == "Data") {
36 boost::scoped_ptr<db::DB> db(db::GetDB(DataParameter_DB_LEVELDB));
37 db->Open(tmp, db::NEW);
39 layer_param.mutable_data_param()->set_source(tmp);
41 layer_param.set_type(iter->first);
42 layer = LayerRegistry<Dtype>::CreateLayer(layer_param);
43 EXPECT_EQ(iter->first, layer->type());