1e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// found in the LICENSE file. 4e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 5e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 6e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "tools/gn/err.h" 7e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "tools/gn/label.h" 8e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "tools/gn/value.h" 9e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "tools/gn/visibility.h" 10e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 11e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST(Visibility, CanSeeMe) { 12e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Value list(NULL, Value::LIST); 13e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch list.list_value().push_back(Value(NULL, "//rec/*")); // Recursive. 14e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch list.list_value().push_back(Value(NULL, "//dir:*")); // One dir. 15e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch list.list_value().push_back(Value(NULL, "//my:name")); // Exact match. 16e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 17e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Err err; 18e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Visibility vis; 19e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(vis.Set(SourceDir("//"), list, &err)); 20e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 21e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(vis.CanSeeMe(Label(SourceDir("//random/"), "thing"))); 22e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(vis.CanSeeMe(Label(SourceDir("//my/"), "notname"))); 23e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 24e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(vis.CanSeeMe(Label(SourceDir("//my/"), "name"))); 25e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(vis.CanSeeMe(Label(SourceDir("//rec/"), "anything"))); 26e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(vis.CanSeeMe(Label(SourceDir("//rec/a/"), "anything"))); 27e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(vis.CanSeeMe(Label(SourceDir("//rec/b/"), "anything"))); 28e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(vis.CanSeeMe(Label(SourceDir("//dir/"), "anything"))); 29e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(vis.CanSeeMe(Label(SourceDir("//dir/a/"), "anything"))); 30e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(vis.CanSeeMe(Label(SourceDir("//directory/"), "anything"))); 31e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 32e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 33e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST(Visibility, Public) { 34e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Err err; 35e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Visibility vis; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Value list(NULL, Value::LIST); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci list.list_value().push_back(Value(NULL, "*")); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(vis.Set(SourceDir("//"), list, &err)); 40e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 41e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(vis.CanSeeMe(Label(SourceDir("//random/"), "thing"))); 42e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(vis.CanSeeMe(Label(SourceDir("//"), ""))); 43e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 44e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 45e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST(Visibility, Private) { 46e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Err err; 47e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Visibility vis; 48e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(vis.Set(SourceDir("//"), Value(NULL, Value::LIST), &err)); 49e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 50e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(vis.CanSeeMe(Label(SourceDir("//random/"), "thing"))); 51e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(vis.CanSeeMe(Label(SourceDir("//"), ""))); 52e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 53