Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Unified Diff: pkg/path/test/posix_test.dart

Issue 59483008: Add isWithin to pkg/path. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/path/lib/path.dart ('k') | pkg/path/test/relative_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/path/test/posix_test.dart
diff --git a/pkg/path/test/posix_test.dart b/pkg/path/test/posix_test.dart
index 1156379a8555dc574f839c8523fdeb277f4baa0d..b693fcf4a7372532432d36e6adff7529cbae55bf 100644
--- a/pkg/path/test/posix_test.dart
+++ b/pkg/path/test/posix_test.dart
@@ -7,6 +7,8 @@ library path.test.posix_test;
import 'package:unittest/unittest.dart';
import 'package:path/path.dart' as path;
+import 'utils.dart';
+
main() {
var builder = new path.Builder(style: path.Style.posix, root: '/root/path');
@@ -398,7 +400,7 @@ main() {
test('with a root parameter and a relative root', () {
var r = new path.Builder(style: path.Style.posix, root: 'relative/root');
expect(r.relative('/foo/bar/baz', from: '/foo/bar'), equals('baz'));
- expect(() => r.relative('..', from: '/foo/bar'), throwsArgumentError);
+ expect(() => r.relative('..', from: '/foo/bar'), throwsPathException);
expect(r.relative('/foo/bar/baz', from: 'foo/bar'),
equals('/foo/bar/baz'));
expect(r.relative('..', from: 'foo/bar'), equals('../../..'));
@@ -411,6 +413,27 @@ main() {
});
});
+ group('isWithin', () {
+ test('simple cases', () {
+ expect(builder.isWithin('foo/bar', 'foo/bar'), isFalse);
+ expect(builder.isWithin('foo/bar', 'foo/bar/baz'), isTrue);
+ expect(builder.isWithin('foo/bar', 'foo/baz'), isFalse);
+ expect(builder.isWithin('foo/bar', '../path/foo/bar/baz'), isTrue);
+ expect(builder.isWithin('/', '/foo/bar'), isTrue);
+ expect(builder.isWithin('baz', '/root/path/baz/bang'), isTrue);
+ expect(builder.isWithin('baz', '/root/path/bang/baz'), isFalse);
+ });
+
+ test('from a relative root', () {
+ var r = new path.Builder(style: path.Style.posix, root: 'foo/bar');
+ expect(builder.isWithin('.', 'a/b/c'), isTrue);
+ expect(builder.isWithin('.', '../a/b/c'), isFalse);
+ expect(builder.isWithin('.', '../../a/foo/b/c'), isFalse);
+ expect(builder.isWithin('/', '/baz/bang'), isTrue);
+ expect(builder.isWithin('.', '/baz/bang'), isFalse);
+ });
+ });
+
group('resolve', () {
test('allows up to seven parts', () {
expect(builder.resolve('a'), '/root/path/a');
« no previous file with comments | « pkg/path/lib/path.dart ('k') | pkg/path/test/relative_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698