2016-06-15 12:01:05 -04:00
|
|
|
import {DefaultUrlSerializer} from '../src/url_serializer';
|
|
|
|
import {UrlTree, containsTree} from '../src/url_tree';
|
|
|
|
|
|
|
|
describe('UrlTree', () => {
|
|
|
|
const serializer = new DefaultUrlSerializer();
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
describe('containsTree', () => {
|
|
|
|
describe('exact = true', () => {
|
|
|
|
it('should return true when two tree are the same', () => {
|
|
|
|
const url = '/one/(one//left:three)(right:four)';
|
2016-06-15 12:01:05 -04:00
|
|
|
const t1 = serializer.parse(url);
|
|
|
|
const t2 = serializer.parse(url);
|
|
|
|
expect(containsTree(t1, t2, true)).toBe(true);
|
|
|
|
expect(containsTree(t2, t1, true)).toBe(true);
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
it('should return false when paths are not the same', () => {
|
|
|
|
const t1 = serializer.parse('/one/two(right:three)');
|
|
|
|
const t2 = serializer.parse('/one/two2(right:three)');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, true)).toBe(false);
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
it('should return false when container has an extra child', () => {
|
|
|
|
const t1 = serializer.parse('/one/two(right:three)');
|
|
|
|
const t2 = serializer.parse('/one/two');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, true)).toBe(false);
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
it('should return false when containee has an extra child', () => {
|
|
|
|
const t1 = serializer.parse('/one/two');
|
|
|
|
const t2 = serializer.parse('/one/two(right:three)');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, true)).toBe(false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
describe('exact = false', () => {
|
|
|
|
it('should return true when containee is missing a segment', () => {
|
|
|
|
const t1 = serializer.parse('/one/(two//left:three)(right:four)');
|
|
|
|
const t2 = serializer.parse('/one/(two//left:three)');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, false)).toBe(true);
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
it('should return true when containee is missing some paths', () => {
|
|
|
|
const t1 = serializer.parse('/one/two/three');
|
|
|
|
const t2 = serializer.parse('/one/two');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, false)).toBe(true);
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
it('should return true container has its paths splitted into multiple segments', () => {
|
|
|
|
const t1 = serializer.parse('/one/(two//left:three)');
|
|
|
|
const t2 = serializer.parse('/one/two');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, false)).toBe(true);
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
it('should return false when containee has extra segments', () => {
|
|
|
|
const t1 = serializer.parse('/one/two');
|
|
|
|
const t2 = serializer.parse('/one/(two//left:three)');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, false)).toBe(false);
|
|
|
|
});
|
|
|
|
|
2016-06-21 14:49:42 -04:00
|
|
|
it('should return containee has segments that the container does not have', () => {
|
|
|
|
const t1 = serializer.parse('/one/(two//left:three)');
|
|
|
|
const t2 = serializer.parse('/one/(two//right:four)');
|
2016-06-15 12:01:05 -04:00
|
|
|
expect(containsTree(t1, t2, false)).toBe(false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|