// SetLocalValue // . Either start/end a group, or set a modifier locally Emitter& Emitter::SetLocalValue(EMITTER_MANIP value) { if(!good()) return *this; switch(value) { case BeginSeq: EmitBeginSeq(); break; case EndSeq: EmitEndSeq(); break; case BeginMap: EmitBeginMap(); break; case EndMap: EmitEndMap(); break; case Key: EmitKey(); break; case Value: EmitValue(); break; default: m_pState->SetLocalValue(value); break; } return *this; }
TEST_F(CombineProcessorTest, TestAll) { try { // register entity PbPythonProcessorConfig pb_config; baidu::flume::PbEntity* entity = pb_config.add_functor(); std::string name = flume::Reflection<Functor>::TypeName<TestCombineFn>(); entity->set_name(name); entity->set_config(""); pb_config.add_side_input_type(PCOLLECTION_TYPE); std::string config; pb_config.SerializeToString(&config); flume::MockEmitter<boost::python::object> emitter; boost::python::object three(3); EXPECT_CALL(emitter, EmitValue(three)); ProcessorImpl<CombineProcessor, 0> impl; const char* kKeys[] = {"split1", "split2"}; std::vector<boost::python::object> objects; objects.push_back(boost::python::object(1)); objects.push_back(boost::python::object(2)); std::auto_ptr<flume::core::Iterator> iter = baidu::bigflow::python::iterator( objects.begin(), objects.end() ); std::vector<flume::core::Iterator*> vec_iter; vec_iter.push_back(iter.get()); impl.Setup(config); impl.BeginGroup(std::vector<toft::StringPiece>(kKeys, kKeys + TOFT_ARRAY_SIZE(kKeys)), vec_iter, &emitter); impl.EndGroup(); }catch(...) { PyErr_Print(); ASSERT_TRUE(false); } }