Ninja
state_test.cc
Go to the documentation of this file.
00001 // Copyright 2011 Google Inc. All Rights Reserved.
00002 //
00003 // Licensed under the Apache License, Version 2.0 (the "License");
00004 // you may not use this file except in compliance with the License.
00005 // You may obtain a copy of the License at
00006 //
00007 //     http://www.apache.org/licenses/LICENSE-2.0
00008 //
00009 // Unless required by applicable law or agreed to in writing, software
00010 // distributed under the License is distributed on an "AS IS" BASIS,
00011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00012 // See the License for the specific language governing permissions and
00013 // limitations under the License.
00014 
00015 #include <gtest/gtest.h>
00016 
00017 #include "graph.h"
00018 #include "state.h"
00019 
00020 namespace {
00021 
00022 TEST(State, Basic) {
00023   State state;
00024 
00025   EvalString command;
00026   command.AddText("cat ");
00027   command.AddSpecial("in");
00028   command.AddText(" > ");
00029   command.AddSpecial("out");
00030 
00031   Rule* rule = new Rule("cat");
00032   rule->AddBinding("command", command);
00033   state.AddRule(rule);
00034 
00035   Edge* edge = state.AddEdge(rule);
00036   state.AddIn(edge, "in1");
00037   state.AddIn(edge, "in2");
00038   state.AddOut(edge, "out");
00039 
00040   EXPECT_EQ("cat in1 in2 > out", edge->EvaluateCommand());
00041 
00042   EXPECT_FALSE(state.GetNode("in1")->dirty());
00043   EXPECT_FALSE(state.GetNode("in2")->dirty());
00044   EXPECT_FALSE(state.GetNode("out")->dirty());
00045 }
00046 
00047 }  // namespace