forked from aws-amplify/aws-sdk-ios
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAWSComprehendTests.swift
205 lines (186 loc) · 8.57 KB
/
AWSComprehendTests.swift
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
//
// Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License").
// You may not use this file except in compliance with the License.
// A copy of the License is located at
//
// http://aws.amazon.com/apache2.0
//
// or in the "license" file accompanying this file. This file is distributed
// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing
// permissions and limitations under the License.
//
import XCTest
import AWSComprehend
class AWSComprehendTests: XCTestCase {
override class func setUp() {
super.setUp()
AWSTestUtility.setupSessionCredentialsProvider()
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testDetectDominantLanguageEnglish() {
let comprehendClient = AWSComprehend.default()
let detectDominantLanguageRequest = AWSComprehendDetectDominantLanguageRequest()
detectDominantLanguageRequest!.text = "The sun shines in Seattle";
comprehendClient.detectDominantLanguage(detectDominantLanguageRequest!).continueWith { (task) -> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertNotNil(task.result, "Result unexpectedly nil")
return nil
}
XCTAssertNotNil(result)
XCTAssertGreaterThan(result.languages!.count, 0, "Got at least 1 dominant language")
XCTAssertEqual(result.languages!.first?.languageCode, "en", "Dominant language is English")
return nil
}.waitUntilFinished()
}
func testDetectDominantLanguageSpanish() {
let comprehendClient = AWSComprehend.default()
let detectDominantLanguageRequest = AWSComprehendDetectDominantLanguageRequest()
detectDominantLanguageRequest!.text = "El sol brilla en Seattle";
comprehendClient.detectDominantLanguage(detectDominantLanguageRequest!).continueWith { (task) -> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertNotNil(task.result, "Result unexpectedly nil")
return nil
}
XCTAssertNotNil(result)
XCTAssertGreaterThan(result.languages!.count, 0, "Got at least 1 dominant language")
XCTAssertEqual(result.languages!.first?.languageCode, "es", "Dominant language is Spanish")
return nil
}.waitUntilFinished()
}
func testDetectNamedEntities() {
let comprehendClient = AWSComprehend.default()
let detectEntitiesRequest = AWSComprehendDetectEntitiesRequest()
detectEntitiesRequest!.languageCode = AWSComprehendLanguageCode.en
detectEntitiesRequest!.text = "The sun shines in Seattle"
comprehendClient.detectEntities(detectEntitiesRequest!).continueWith{ (task) -> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertFalse(true, "got error: \(String(describing: task.error))")
return nil
}
XCTAssertNotNil(result)
XCTAssertGreaterThan(result.entities!.count, 0, "Found least 1 entity")
XCTAssertEqual(result.entities!.first?.text, "Seattle", "Entity is Seattle")
return nil
}.waitUntilFinished()
}
func testDetectKeyPhrases() {
let comprehendClient = AWSComprehend.default()
let detectKeyPhrasesRequest = AWSComprehendDetectKeyPhrasesRequest()
detectKeyPhrasesRequest!.languageCode = AWSComprehendLanguageCode.en
detectKeyPhrasesRequest!.text = "The sun shines in Seattle"
comprehendClient.detectKeyPhrases(detectKeyPhrasesRequest!).continueWith{ (task)-> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertNotNil(task.result, "Result unexpectedly nil")
return nil
}
XCTAssertNotNil(result)
XCTAssertGreaterThan(result.keyPhrases!.count, 0, "Found least 1 key phrase")
XCTAssertEqual(result.keyPhrases!.first?.text, "The sun", "Key phrase is 'the sun'")
return nil
}.waitUntilFinished()
}
func testDetectSentimentPositive() {
let comprehendClient = AWSComprehend.default()
let detectSentimentRequest = AWSComprehendDetectSentimentRequest()
detectSentimentRequest!.languageCode = AWSComprehendLanguageCode.en
detectSentimentRequest!.text = "The sun shines in Seattle!!"
comprehendClient.detectSentiment(detectSentimentRequest!).continueWith{ (task)-> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertNotNil(task.result, "Result unexpectedly nil")
return nil
}
XCTAssertNotNil(result)
XCTAssertEqual(result.sentiment, AWSComprehendSentimentType.positive, "Detected positive sentiment")
return nil
}.waitUntilFinished()
}
func testDetectSentimentNeutral() {
let comprehendClient = AWSComprehend.default()
let detectSentimentRequest = AWSComprehendDetectSentimentRequest()
detectSentimentRequest!.languageCode = AWSComprehendLanguageCode.en
detectSentimentRequest!.text = "I have no strong feelings one way or the other"
comprehendClient.detectSentiment(detectSentimentRequest!).continueWith{ (task)-> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertNotNil(task.result, "Result unexpectedly nil")
return nil
}
XCTAssertNotNil(result)
XCTAssertEqual(result.sentiment, AWSComprehendSentimentType.neutral, "Detected neutral sentiment")
return nil
}.waitUntilFinished()
}
func testDetectSentimentNegative() {
let comprehendClient = AWSComprehend.default()
let detectSentimentRequest = AWSComprehendDetectSentimentRequest()
detectSentimentRequest!.languageCode = AWSComprehendLanguageCode.en
detectSentimentRequest!.text = "This view is horrible"
comprehendClient.detectSentiment(detectSentimentRequest!).continueWith{ (task)-> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertNotNil(task.result, "Result unexpectedly nil")
return nil
}
XCTAssertNotNil(result)
XCTAssertEqual(result.sentiment, AWSComprehendSentimentType.negative, "Detected negative sentiment")
return nil
}.waitUntilFinished()
}
func testDetectBatchEntities() {
let comprehendClient = AWSComprehend.default()
let inputStrings:[String] = ["I love AWS Mobile SDK", "Today is Sunday", "Tomorrow is Monday","I love AWS Amplify"]
let batchEntityRequest = AWSComprehendBatchDetectEntitiesRequest()
batchEntityRequest!.languageCode = AWSComprehendLanguageCode.en
batchEntityRequest!.textList = inputStrings
comprehendClient.batchDetectEntities(batchEntityRequest!).continueWith{ (task)-> Any? in
if let error = task.error {
XCTAssertNil(error)
return nil
}
if let error = task.error {
XCTAssertNil(error)
return nil
}
guard let result = task.result else {
XCTAssertNotNil(task.result, "Result unexpectedly nil")
return nil
}
XCTAssertNotNil(result)
XCTAssertNotNil(result.resultList)
XCTAssertEqual(result.resultList!.count, 4, "Should return 4 results")
return nil
}.waitUntilFinished()
}
}