This repository has been archived by the owner on Aug 27, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathswift_idl-test.py
executable file
·115 lines (104 loc) · 4.23 KB
/
swift_idl-test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import unittest
import swift_idl as IDL
test_structure = {
"key.kind" : "source.lang.swift.decl.struct",
"key.offset" : 19,
"key.nameoffset" : 26,
"key.namelength" : 3,
"key.inheritedtypes" : [
{
"key.name" : "JSONDecodable"
}
],
"key.bodylength" : 110,
"key.accessibility" : "source.lang.swift.accessibility.internal",
"key.substructure" : [
{
"key.kind" : "source.lang.swift.decl.var.instance",
"key.offset" : 72,
"key.attributes" : [
{
"key.attribute" : "source.decl.attribute.__raw_doc_comment"
}
],
"key.nameoffset" : 76,
"key.namelength" : 2,
"key.length" : 15,
"key.accessibility" : "source.lang.swift.accessibility.internal",
"key.substructure" : [
],
"key.typename" : "Int",
"key.name" : "id"
},
{
"key.kind" : "source.lang.swift.decl.var.instance",
"key.offset" : 92,
"key.nameoffset" : 96,
"key.namelength" : 5,
"key.length" : 17,
"key.accessibility" : "source.lang.swift.accessibility.internal",
"key.substructure" : [
],
"key.typename" : "String",
"key.name" : "query"
},
{
"key.kind" : "source.lang.swift.decl.var.instance",
"key.offset" : 126,
"key.attributes" : [
{
"key.attribute" : "source.decl.attribute.__raw_doc_comment"
}
],
"key.nameoffset" : 130,
"key.namelength" : 1,
"key.length" : 13,
"key.accessibility" : "source.lang.swift.accessibility.internal",
"key.substructure" : [
],
"key.typename" : "String",
"key.name" : "z"
}
],
"key.name" : "Foo",
"key.length" : 138,
"key.bodyoffset" : 46
}
test_syntax = [
{ "offset" : 0, "length" : 6, "type" : "source.lang.swift.syntaxtype.keyword" },
{ "offset" : 7, "length" : 10, "type" : "source.lang.swift.syntaxtype.identifier" },
{ "offset" : 19, "length" : 6, "type" : "source.lang.swift.syntaxtype.keyword" },
{ "offset" : 26, "length" : 3, "type" : "source.lang.swift.syntaxtype.identifier" },
{ "offset" : 31, "length" : 13, "type" : "source.lang.swift.syntaxtype.typeidentifier" },
{ "offset" : 47, "length" : 21, "type" : "source.lang.swift.syntaxtype.comment" },
{ "offset" : 72, "length" : 3, "type" : "source.lang.swift.syntaxtype.keyword" },
{ "offset" : 76, "length" : 2, "type" : "source.lang.swift.syntaxtype.identifier" },
{ "offset" : 80, "length" : 3, "type" : "source.lang.swift.syntaxtype.typeidentifier" },
{ "offset" : 86, "length" : 1, "type" : "source.lang.swift.syntaxtype.number" },
{ "offset" : 92, "length" : 3, "type" : "source.lang.swift.syntaxtype.keyword" },
{ "offset" : 96, "length" : 5, "type" : "source.lang.swift.syntaxtype.identifier" },
{ "offset" : 103, "length" : 6, "type" : "source.lang.swift.syntaxtype.typeidentifier" },
{ "offset" : 110, "length" : 12, "type" : "source.lang.swift.syntaxtype.comment" },
{ "offset" : 126, "length" : 3, "type" : "source.lang.swift.syntaxtype.keyword" },
{ "offset" : 130, "length" : 1, "type" : "source.lang.swift.syntaxtype.identifier" },
{ "offset" : 133, "length" : 6, "type" : "source.lang.swift.syntaxtype.typeidentifier" },
{ "offset" : 144, "length" : 12, "type" : "source.lang.swift.syntaxtype.comment" }
]
test_source = '''import Foundation
struct Foo: JSONDecodable { // sample:"foo,,bar"
let id: Int = 3
let query: String // json:"q"
let z: String // json:"-"
}
'''
class SampleStructTest(unittest.TestCase):
def test_getSwiftTokens(self):
tk = IDL.getSwiftTokens(test_syntax, test_source)
self.assertEqual('import', tk[0].content)
self.assertEqual(1, tk[0].line)
self.assertEqual('source.lang.swift.syntaxtype.keyword', tk[0].tokenType)
self.assertEqual('}\n', tk[-1].content)
self.assertEqual(7, tk[-1].line)
self.assertEqual('omittedtoken', tk[-1].tokenType)
if __name__ == '__main__':
unittest.main()