| // Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:test/test.dart'; |
| |
| import 'package:path/path.dart'; |
| |
| void main() { |
| group("considers equal", () { |
| test("two identical paths", () { |
| var set = new PathSet(); |
| expect(set.add(join("foo", "bar")), isTrue); |
| expect(set.add(join("foo", "bar")), isFalse); |
| expect(set, hasLength(1)); |
| expect(set, contains(join("foo", "bar"))); |
| }); |
| |
| test("two logically equivalent paths", () { |
| var set = new PathSet(); |
| expect(set.add("foo"), isTrue); |
| expect(set.add(absolute("foo")), isFalse); |
| expect(set, hasLength(1)); |
| expect(set, contains("foo")); |
| expect(set, contains(absolute("foo"))); |
| }); |
| |
| test("two nulls", () { |
| var set = new PathSet(); |
| expect(set.add(null), isTrue); |
| expect(set.add(null), isFalse); |
| expect(set, hasLength(1)); |
| expect(set, contains(null)); |
| }); |
| }); |
| |
| group("considers unequal", () { |
| test("two distinct paths", () { |
| var set = new PathSet(); |
| expect(set.add("foo"), isTrue); |
| expect(set.add("bar"), isTrue); |
| expect(set, hasLength(2)); |
| expect(set, contains("foo")); |
| expect(set, contains("bar")); |
| }); |
| |
| test("a path and null", () { |
| var set = new PathSet(); |
| expect(set.add("foo"), isTrue); |
| expect(set.add(null), isTrue); |
| expect(set, hasLength(2)); |
| expect(set, contains("foo")); |
| expect(set, contains(null)); |
| }); |
| }); |
| |
| test("uses the custom context", () { |
| var set = new PathSet(context: windows); |
| expect(set.add("FOO"), isTrue); |
| expect(set.add("foo"), isFalse); |
| expect(set, hasLength(1)); |
| expect(set, contains("fOo")); |
| }); |
| |
| group(".of()", () { |
| test("copies the existing set's keys", () { |
| var set = new PathSet.of(["foo", "bar"]); |
| expect(set, hasLength(2)); |
| expect(set, contains("foo")); |
| expect(set, contains("bar")); |
| }); |
| |
| test("uses the first value in the case of duplicates", () { |
| var set = new PathSet.of(["foo", absolute("foo")]); |
| expect(set, hasLength(1)); |
| expect(set, contains("foo")); |
| expect(set, contains(absolute("foo"))); |
| expect(set.first, "foo"); |
| }); |
| }); |
| } |