1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2009 The Android Open Source Project 3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License"); 5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License. 6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at 7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// http://www.apache.org/licenses/LICENSE-2.0 9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software 11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS, 12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and 14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License. 15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 1649fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 1739910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/action_pipe.h" 18aab50e31f0b80ed53a9b8d5dbabcf943974bd32cAlex Deymo 1949fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com#include <gtest/gtest.h> 2039910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include <string> 2139910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/action.h" 2249fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 234fe15d017c145aca449c2248420c1b4ec8c23758Andrew de los Reyesusing std::string; 244fe15d017c145aca449c2248420c1b4ec8c23758Andrew de los Reyes 2549fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comnamespace chromeos_update_engine { 2649fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 2749fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comusing chromeos_update_engine::ActionPipe; 2849fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 2949fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comclass ActionPipeTestAction; 3049fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 3149fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comtemplate<> 3249fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comclass ActionTraits<ActionPipeTestAction> { 3349fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com public: 3449fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com typedef string OutputObjectType; 3549fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com typedef string InputObjectType; 3649fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com}; 3749fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 3849fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com// This is a simple Action class for testing. 39a178e5e6efc0849e286b9275d3b052ada6b1a43fYunlian Jiangclass ActionPipeTestAction : public Action<ActionPipeTestAction> { 40a178e5e6efc0849e286b9275d3b052ada6b1a43fYunlian Jiang public: 4149fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com typedef string InputObjectType; 4249fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com typedef string OutputObjectType; 4349fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com ActionPipe<string>* in_pipe() { return in_pipe_.get(); } 4449fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com ActionPipe<string>* out_pipe() { return out_pipe_.get(); } 4549fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com void PerformAction() {} 4649fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com string Type() const { return "ActionPipeTestAction"; } 4749fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com}; 4849fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 4949fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comclass ActionPipeTest : public ::testing::Test { }; 5049fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 5149fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com// This test creates two simple Actions and sends a message via an ActionPipe 5249fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com// from one to the other. 5349fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.comTEST(ActionPipeTest, SimpleTest) { 5449fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com ActionPipeTestAction a, b; 5549fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com BondActions(&a, &b); 5649fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com a.out_pipe()->set_contents("foo"); 5749fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com EXPECT_EQ("foo", b.in_pipe()->contents()); 5849fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com} 5949fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com 6049fdf1889b965be25f929eeebc5b60cd40b9043rspangler@google.com} // namespace chromeos_update_engine 61