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   Rule* rule = new Rule("cat");
00025   string err;
00026   EXPECT_TRUE(rule->ParseCommand("cat $in > $out", &err));
00027   ASSERT_EQ("", err);
00028   state.AddRule(rule);
00029   Edge* edge = state.AddEdge(rule);
00030   state.AddIn(edge, "in1");
00031   state.AddIn(edge, "in2");
00032   state.AddOut(edge, "out");
00033 
00034   EXPECT_EQ("cat in1 in2 > out", edge->EvaluateCommand());
00035 
00036   EXPECT_FALSE(state.GetNode("in1")->dirty());
00037   EXPECT_FALSE(state.GetNode("in2")->dirty());
00038   EXPECT_FALSE(state.GetNode("out")->dirty());
00039 }
00040 
00041 }  // namespace