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