Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
2f12aed5
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2f12aed5
编写于
4月 07, 2020
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more test for uri tst, fix query, fragmen compare
上级
f43d8bc0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
100 addition
and
4 deletion
+100
-4
src/vs/base/common/map.ts
src/vs/base/common/map.ts
+6
-4
src/vs/base/test/common/map.test.ts
src/vs/base/test/common/map.test.ts
+94
-0
未找到文件。
src/vs/base/common/map.ts
浏览文件 @
2f12aed5
...
...
@@ -5,7 +5,7 @@
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
CharCode
}
from
'
vs/base/common/charCode
'
;
import
{
compareIgnoreCase
}
from
'
vs/base/common/strings
'
;
import
{
compareIgnoreCase
,
compare
}
from
'
vs/base/common/strings
'
;
/**
* @deprecated ES6: use `[...SetOrMap.values()]`
...
...
@@ -184,8 +184,10 @@ export class UriIterator implements IKeyIterator<URI> {
this
.
_states
.
push
(
UriIteratorState
.
Authority
);
}
if
(
this
.
_value
.
path
)
{
this
.
_states
.
push
(
UriIteratorState
.
Path
);
this
.
_pathIterator
.
reset
(
key
.
path
);
if
(
this
.
_pathIterator
.
value
())
{
this
.
_states
.
push
(
UriIteratorState
.
Path
);
}
}
if
(
this
.
_value
.
query
)
{
this
.
_states
.
push
(
UriIteratorState
.
Query
);
...
...
@@ -219,9 +221,9 @@ export class UriIterator implements IKeyIterator<URI> {
}
else
if
(
this
.
_states
[
this
.
_stateIdx
]
===
UriIteratorState
.
Path
)
{
return
this
.
_pathIterator
.
cmp
(
a
);
}
else
if
(
this
.
_states
[
this
.
_stateIdx
]
===
UriIteratorState
.
Query
)
{
return
compare
IgnoreCase
(
a
,
this
.
_value
.
query
);
return
compare
(
a
,
this
.
_value
.
query
);
}
else
if
(
this
.
_states
[
this
.
_stateIdx
]
===
UriIteratorState
.
Fragment
)
{
return
compare
IgnoreCase
(
a
,
this
.
_value
.
fragment
);
return
compare
(
a
,
this
.
_value
.
fragment
);
}
throw
new
Error
();
}
...
...
src/vs/base/test/common/map.test.ts
浏览文件 @
2f12aed5
...
...
@@ -550,6 +550,100 @@ suite('Map', () => {
assert
.
equal
(
map
.
findSuperstr
(
'
/userr
'
),
undefined
);
});
test
(
'
TernarySearchTree (URI) - basics
'
,
function
()
{
let
trie
=
new
TernarySearchTree
<
URI
,
number
>
(
new
UriIterator
());
trie
.
set
(
URI
.
file
(
'
/user/foo/bar
'
),
1
);
trie
.
set
(
URI
.
file
(
'
/user/foo
'
),
2
);
trie
.
set
(
URI
.
file
(
'
/user/foo/flip/flop
'
),
3
);
assert
.
equal
(
trie
.
get
(
URI
.
file
(
'
/user/foo/bar
'
)),
1
);
assert
.
equal
(
trie
.
get
(
URI
.
file
(
'
/user/foo
'
)),
2
);
assert
.
equal
(
trie
.
get
(
URI
.
file
(
'
/user/foo/flip/flop
'
)),
3
);
assert
.
equal
(
trie
.
findSubstr
(
URI
.
file
(
'
/user/bar
'
)),
undefined
);
assert
.
equal
(
trie
.
findSubstr
(
URI
.
file
(
'
/user/foo
'
)),
2
);
assert
.
equal
(
trie
.
findSubstr
(
URI
.
file
(
'
/user/foo/ba
'
)),
2
);
assert
.
equal
(
trie
.
findSubstr
(
URI
.
file
(
'
/user/foo/far/boo
'
)),
2
);
assert
.
equal
(
trie
.
findSubstr
(
URI
.
file
(
'
/user/foo/bar
'
)),
1
);
assert
.
equal
(
trie
.
findSubstr
(
URI
.
file
(
'
/user/foo/bar/far/boo
'
)),
1
);
});
test
(
'
TernarySearchTree (URI) - lookup
'
,
function
()
{
const
map
=
new
TernarySearchTree
<
URI
,
number
>
(
new
UriIterator
());
map
.
set
(
URI
.
parse
(
'
http://foo.bar/user/foo/bar
'
),
1
);
map
.
set
(
URI
.
parse
(
'
http://foo.bar/user/foo?query
'
),
2
);
map
.
set
(
URI
.
parse
(
'
http://foo.bar/user/foo?QUERY
'
),
3
);
map
.
set
(
URI
.
parse
(
'
http://foo.bar/user/foo/flip/flop
'
),
3
);
assert
.
equal
(
map
.
get
(
URI
.
parse
(
'
http://foo.bar/foo
'
)),
undefined
);
assert
.
equal
(
map
.
get
(
URI
.
parse
(
'
http://foo.bar/user
'
)),
undefined
);
assert
.
equal
(
map
.
get
(
URI
.
parse
(
'
http://foo.bar/user/foo/bar
'
)),
1
);
assert
.
equal
(
map
.
get
(
URI
.
parse
(
'
http://foo.bar/user/foo?query
'
)),
2
);
assert
.
equal
(
map
.
get
(
URI
.
parse
(
'
http://foo.bar/user/foo?Query
'
)),
undefined
);
assert
.
equal
(
map
.
get
(
URI
.
parse
(
'
http://foo.bar/user/foo?QUERY
'
)),
3
);
assert
.
equal
(
map
.
get
(
URI
.
parse
(
'
http://foo.bar/user/foo/bar/boo
'
)),
undefined
);
});
test
(
'
TernarySearchTree (PathSegments) - superstr
'
,
function
()
{
const
map
=
new
TernarySearchTree
<
URI
,
number
>
(
new
UriIterator
());
map
.
set
(
URI
.
file
(
'
/user/foo/bar
'
),
1
);
map
.
set
(
URI
.
file
(
'
/user/foo
'
),
2
);
map
.
set
(
URI
.
file
(
'
/user/foo/flip/flop
'
),
3
);
map
.
set
(
URI
.
file
(
'
/usr/foo
'
),
4
);
let
item
:
IteratorResult
<
number
>
;
let
iter
=
map
.
findSuperstr
(
URI
.
file
(
'
/user
'
))
!
;
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
2
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
1
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
3
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
undefined
);
assert
.
equal
(
item
.
done
,
true
);
iter
=
map
.
findSuperstr
(
URI
.
file
(
'
/usr
'
))
!
;
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
4
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
undefined
);
assert
.
equal
(
item
.
done
,
true
);
iter
=
map
.
findSuperstr
(
URI
.
file
(
'
/
'
))
!
;
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
2
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
1
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
3
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
4
);
assert
.
equal
(
item
.
done
,
false
);
item
=
iter
.
next
();
assert
.
equal
(
item
.
value
,
undefined
);
assert
.
equal
(
item
.
done
,
true
);
assert
.
equal
(
map
.
findSuperstr
(
URI
.
file
(
'
/not
'
)),
undefined
);
assert
.
equal
(
map
.
findSuperstr
(
URI
.
file
(
'
/us
'
)),
undefined
);
assert
.
equal
(
map
.
findSuperstr
(
URI
.
file
(
'
/usrr
'
)),
undefined
);
assert
.
equal
(
map
.
findSuperstr
(
URI
.
file
(
'
/userr
'
)),
undefined
);
});
test
(
'
ResourceMap - basics
'
,
function
()
{
const
map
=
new
ResourceMap
<
any
>
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录