Skip to content

Commit 5773aee

Browse files
committed
complete integration tests
1 parent c470075 commit 5773aee

File tree

2 files changed

+142
-125
lines changed

2 files changed

+142
-125
lines changed

Scripts/Services/VisualRecognition/VisualRecognition.cs

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,7 +1271,7 @@ public bool CreateCollection(OnCreateCollection callback, string name, string cu
12711271
req.Parameters["version"] = VisualRecognitionVersion.Version;
12721272
req.Forms = new Dictionary<string, RESTConnector.Form>();
12731273
req.Forms["name"] = new RESTConnector.Form(name);
1274-
req.Forms["disregard"] = new RESTConnector.Form("empty");
1274+
req.Forms["disregard"] = new RESTConnector.Form(new byte[4]);
12751275

12761276
req.Timeout = 20.0f * 60.0f;
12771277
req.OnResponse = OnCreateCollectionResp;
@@ -1581,7 +1581,7 @@ public bool AddCollectionImage(OnAddCollectionImage callback, string collectionI
15811581
Log.Error("VisualRecognition", "Failed to upload {0}!", imagePath);
15821582
}
15831583

1584-
return AddCollectionImage(callback, collectionID, imageData, GetMetadataJson(metadata), customData);
1584+
return AddCollectionImage(callback, collectionID, imageData, Path.GetFileName(imagePath), GetMetadataJson(metadata), customData);
15851585
}
15861586

15871587
/// <summary>
@@ -1633,7 +1633,7 @@ public bool AddCollectionImage(OnAddCollectionImage callback, string collectionI
16331633
Log.Error("VisualRecognition", "Failed to read {0}!", imagePath);
16341634
}
16351635

1636-
return AddCollectionImage(callback, collectionID, imageData, metadata, customData);
1636+
return AddCollectionImage(callback, collectionID, imageData, Path.GetFileName(imagePath), metadata, customData);
16371637
}
16381638

16391639
/// <summary>
@@ -1645,7 +1645,7 @@ public bool AddCollectionImage(OnAddCollectionImage callback, string collectionI
16451645
/// <param name="metadata">Optional json metadata associated with the specified image.</param>
16461646
/// <param name="customData">Optional custom data.</param>
16471647
/// <returns></returns>
1648-
public bool AddCollectionImage(OnAddCollectionImage callback, string collectionID, byte[] imageData, string metadata = null, string customData = null)
1648+
public bool AddCollectionImage(OnAddCollectionImage callback, string collectionID, byte[] imageData, string filename, string metadata = null, string customData = null)
16491649
{
16501650
if (callback == null)
16511651
throw new ArgumentNullException("callback");
@@ -1672,14 +1672,14 @@ public bool AddCollectionImage(OnAddCollectionImage callback, string collectionI
16721672
req.Parameters["api_key"] = mp_ApiKey;
16731673
req.Parameters["version"] = VisualRecognitionVersion.Version;
16741674
req.Forms = new Dictionary<string, RESTConnector.Form>();
1675-
req.Forms["image_file"] = new RESTConnector.Form(imageData);
1676-
req.Forms["metadata"] = new RESTConnector.Form(metadata);
1675+
req.Forms["image_file"] = new RESTConnector.Form(imageData, filename, GetMimeType(filename));
1676+
req.Forms["metadata"] = new RESTConnector.Form(Encoding.UTF8.GetBytes(metadata), "application/json");
16771677

16781678
req.Timeout = 20.0f * 60.0f;
16791679
req.OnResponse = OnAddCollectionImageResp;
16801680

16811681
return connector.Send(req);
1682-
}
1682+
}
16831683

16841684
private class AddCollectionImageReq : RESTConnector.Request
16851685
{
@@ -2035,8 +2035,8 @@ private void OnGetCollectionImageMetadataResp(RESTConnector.Request req, RESTCon
20352035
}
20362036
}
20372037

2038-
if (((GetCollectionImageReq)req).Callback != null)
2039-
((GetCollectionImageReq)req).Callback(resp.Success ? image : null, ((GetCollectionImageReq)req).Data);
2038+
if (((GetCollectionImageMetadataReq)req).Callback != null)
2039+
((GetCollectionImageMetadataReq)req).Callback(resp.Success ? image : null, ((GetCollectionImageMetadataReq)req).Data);
20402040
}
20412041
#endregion
20422042

@@ -2211,12 +2211,22 @@ private string GetMetadataJson(Dictionary<string, string> metadata)
22112211
string json = "{";
22122212
string metadataItem = "\n\t\"{0}\":\"{1}\"";
22132213

2214-
foreach(KeyValuePair<string, string> kv in metadata)
2215-
{
2216-
json += string.Format(metadataItem, kv.Key, kv.Value);
2217-
}
2218-
2219-
json += "\n}";
2214+
int i = 0;
2215+
foreach (KeyValuePair<string, string> kv in metadata)
2216+
{
2217+
i++;
2218+
string comma = i < metadata.Count ? "," : "";
2219+
json += string.Format(metadataItem, kv.Key, kv.Value) + comma;
2220+
}
2221+
2222+
//for(int i = 0; i < metadata.Count; i++)
2223+
//{
2224+
// KeyValuePair<string, string> kv = metadata.;
2225+
// string comma = i < metadata.Count - 1 ? "," : "";
2226+
// json += string.Format(metadataItem, kv.Key, kv.Value) + comma;
2227+
//}
2228+
2229+
json += "\n}";
22202230

22212231
return json;
22222232
}

Scripts/UnitTests/TestVisualRecognition.cs

Lines changed: 117 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -74,114 +74,114 @@ public class TestVisualRecognition : UnitTest
7474

7575
public override IEnumerator RunTest()
7676
{
77-
// test get classifiers
78-
Log.Debug("TestVisualRecognition", "Getting all classifiers!");
79-
m_VisualRecognition.GetClassifiers(OnGetClassifiers);
80-
while (!m_GetClassifiersTested)
81-
yield return null;
82-
83-
// test find classifier
84-
Log.Debug("TestVisualRecognition", "Finding classifier {0}!", m_ClassifierName);
85-
m_VisualRecognition.FindClassifier(OnFindClassifier, m_ClassifierName);
86-
while (!m_FindClassifierTested)
87-
yield return null;
88-
89-
if (m_TrainClassifier)
90-
{
91-
// test train classifier
92-
Log.Debug("TestVisualRecognition", "Training classifier!");
93-
string m_positiveExamplesPath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/giraffe_positive_examples.zip";
94-
string m_negativeExamplesPath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/negative_examples.zip";
95-
Dictionary<string, string> positiveExamples = new Dictionary<string, string>();
96-
positiveExamples.Add(m_ClassName_Giraffe, m_positiveExamplesPath);
97-
Test(m_VisualRecognition.TrainClassifier(OnTrainClassifier, m_ClassifierName, positiveExamples, m_negativeExamplesPath));
98-
while (!m_TrainClasifierTested)
99-
yield return null;
100-
}
101-
102-
// Wait until classifier is ready
103-
if (!m_IsClassifierReady)
104-
{
105-
Log.Debug("TestVisualRecognition", "Checking classifier {0} status!", m_ClassifierId);
106-
CheckClassifierStatus(OnCheckClassifierStatus);
107-
while (!m_IsClassifierReady)
108-
yield return null;
109-
}
110-
111-
if (!string.IsNullOrEmpty(m_ClassifierId))
112-
{
113-
// test get classifier
114-
Log.Debug("TestVisualRecognition", "Getting classifier {0}!", m_ClassifierId);
115-
m_VisualRecognition.GetClassifier(OnGetClassifier, m_ClassifierId);
116-
while (!m_GetClassifierTested)
117-
yield return null;
118-
119-
// Update classifier
120-
Log.Debug("TestVisualRecognition", "Updating classifier {0}", m_ClassifierId);
121-
string m_positiveUpdated = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/turtle_positive_examples.zip";
122-
Dictionary<string, string> positiveUpdatedExamples = new Dictionary<string, string>();
123-
positiveUpdatedExamples.Add(m_ClassName_Turtle, m_positiveUpdated);
124-
m_VisualRecognition.UpdateClassifier(OnUpdateClassifier, m_ClassifierId, m_ClassifierName, positiveUpdatedExamples);
125-
while (!m_UpdateClassifierTested)
126-
yield return null;
127-
128-
// Wait for updated classifier to be ready.
129-
Log.Debug("TestVisualRecognition", "Checking updated classifier {0} status!", m_ClassifierId);
130-
CheckClassifierStatus(OnCheckUpdatedClassifierStatus);
131-
while (!m_IsUpdatedClassifierReady)
132-
yield return null;
133-
134-
string[] m_owners = { "IBM", "me" };
135-
string[] m_classifierIds = { "default", m_ClassifierId };
136-
137-
// test classify image get
138-
Log.Debug("TestVisualRecognition", "Classifying image using GET!");
139-
m_VisualRecognition.Classify(OnClassifyGet, m_ImageURL, m_owners, m_classifierIds);
140-
while (!m_ClassifyGETTested)
141-
yield return null;
142-
143-
// test classify image post
144-
Log.Debug("TestVisualRecognition", "Classifying image using POST!");
145-
string m_classifyImagePath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/giraffe_to_classify.jpg";
146-
m_VisualRecognition.Classify(m_classifyImagePath, OnClassifyPost, m_owners, m_classifierIds);
147-
while (!m_ClassifyPOSTTested)
148-
yield return null;
149-
}
150-
151-
// test detect faces get
152-
Log.Debug("TestVisualRecognition", "Detecting face image using GET!");
153-
m_VisualRecognition.DetectFaces(OnDetectFacesGet, m_ImageFaceURL);
154-
while (!m_DetectFacesGETTested)
155-
yield return null;
156-
157-
// test detect faces post
158-
Log.Debug("TestVisualRecognition", "Detecting face image using POST!");
159-
string m_detectFaceImagePath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/obama.jpg";
160-
m_VisualRecognition.DetectFaces(m_detectFaceImagePath, OnDetectFacesPost);
161-
while (!m_DetectFacesPOSTTested)
162-
yield return null;
163-
164-
// test recognize text get
165-
Log.Debug("TestVisualRecognition", "Recognizing text image using GET!");
166-
m_VisualRecognition.RecognizeText(OnRecognizeTextGet, m_ImageTextURL);
167-
while (!m_RecognizeTextGETTested)
168-
yield return null;
77+
// test get classifiers
78+
Log.Debug("TestVisualRecognition", "Getting all classifiers!");
79+
m_VisualRecognition.GetClassifiers(OnGetClassifiers);
80+
while (!m_GetClassifiersTested)
81+
yield return null;
82+
83+
// test find classifier
84+
Log.Debug("TestVisualRecognition", "Finding classifier {0}!", m_ClassifierName);
85+
m_VisualRecognition.FindClassifier(OnFindClassifier, m_ClassifierName);
86+
while (!m_FindClassifierTested)
87+
yield return null;
88+
89+
if (m_TrainClassifier)
90+
{
91+
// test train classifier
92+
Log.Debug("TestVisualRecognition", "Training classifier!");
93+
string m_positiveExamplesPath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/giraffe_positive_examples.zip";
94+
string m_negativeExamplesPath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/negative_examples.zip";
95+
Dictionary<string, string> positiveExamples = new Dictionary<string, string>();
96+
positiveExamples.Add(m_ClassName_Giraffe, m_positiveExamplesPath);
97+
Test(m_VisualRecognition.TrainClassifier(OnTrainClassifier, m_ClassifierName, positiveExamples, m_negativeExamplesPath));
98+
while (!m_TrainClasifierTested)
99+
yield return null;
100+
}
169101

170-
// test recognize text post
171-
Log.Debug("TestVisualRecognition", "Recognizing text image using POST!");
172-
string m_recognizeTextImagePath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/from_platos_apology.png";
173-
m_VisualRecognition.RecognizeText(m_recognizeTextImagePath, OnRecognizeTextPost);
174-
while (!m_RecognizeTextPOSTTested)
175-
yield return null;
102+
// Wait until classifier is ready
103+
if (!m_IsClassifierReady)
104+
{
105+
Log.Debug("TestVisualRecognition", "Checking classifier {0} status!", m_ClassifierId);
106+
CheckClassifierStatus(OnCheckClassifierStatus);
107+
while (!m_IsClassifierReady)
108+
yield return null;
109+
}
176110

177-
// test delete classifier
178-
Log.Debug("TestVisualRecognition", "Deleting classifier {0}!", m_ClassifierId);
179-
m_VisualRecognition.DeleteClassifier(OnDeleteClassifier, m_ClassifierId);
180-
while (!m_DeleteClassifierTested)
181-
yield return null;
111+
if (!string.IsNullOrEmpty(m_ClassifierId))
112+
{
113+
// test get classifier
114+
Log.Debug("TestVisualRecognition", "Getting classifier {0}!", m_ClassifierId);
115+
m_VisualRecognition.GetClassifier(OnGetClassifier, m_ClassifierId);
116+
while (!m_GetClassifierTested)
117+
yield return null;
118+
119+
// Update classifier
120+
Log.Debug("TestVisualRecognition", "Updating classifier {0}", m_ClassifierId);
121+
string m_positiveUpdated = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/turtle_positive_examples.zip";
122+
Dictionary<string, string> positiveUpdatedExamples = new Dictionary<string, string>();
123+
positiveUpdatedExamples.Add(m_ClassName_Turtle, m_positiveUpdated);
124+
m_VisualRecognition.UpdateClassifier(OnUpdateClassifier, m_ClassifierId, m_ClassifierName, positiveUpdatedExamples);
125+
while (!m_UpdateClassifierTested)
126+
yield return null;
127+
128+
// Wait for updated classifier to be ready.
129+
Log.Debug("TestVisualRecognition", "Checking updated classifier {0} status!", m_ClassifierId);
130+
CheckClassifierStatus(OnCheckUpdatedClassifierStatus);
131+
while (!m_IsUpdatedClassifierReady)
132+
yield return null;
133+
134+
string[] m_owners = { "IBM", "me" };
135+
string[] m_classifierIds = { "default", m_ClassifierId };
136+
137+
// test classify image get
138+
Log.Debug("TestVisualRecognition", "Classifying image using GET!");
139+
m_VisualRecognition.Classify(OnClassifyGet, m_ImageURL, m_owners, m_classifierIds);
140+
while (!m_ClassifyGETTested)
141+
yield return null;
142+
143+
// test classify image post
144+
Log.Debug("TestVisualRecognition", "Classifying image using POST!");
145+
string m_classifyImagePath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/giraffe_to_classify.jpg";
146+
m_VisualRecognition.Classify(m_classifyImagePath, OnClassifyPost, m_owners, m_classifierIds);
147+
while (!m_ClassifyPOSTTested)
148+
yield return null;
149+
}
182150

183-
// test list collections
184-
Log.Debug("TestVisualRecognition", "Attempting to list collections!");
151+
// test detect faces get
152+
Log.Debug("TestVisualRecognition", "Detecting face image using GET!");
153+
m_VisualRecognition.DetectFaces(OnDetectFacesGet, m_ImageFaceURL);
154+
while (!m_DetectFacesGETTested)
155+
yield return null;
156+
157+
// test detect faces post
158+
Log.Debug("TestVisualRecognition", "Detecting face image using POST!");
159+
string m_detectFaceImagePath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/obama.jpg";
160+
m_VisualRecognition.DetectFaces(m_detectFaceImagePath, OnDetectFacesPost);
161+
while (!m_DetectFacesPOSTTested)
162+
yield return null;
163+
164+
// test recognize text get
165+
Log.Debug("TestVisualRecognition", "Recognizing text image using GET!");
166+
m_VisualRecognition.RecognizeText(OnRecognizeTextGet, m_ImageTextURL);
167+
while (!m_RecognizeTextGETTested)
168+
yield return null;
169+
170+
// test recognize text post
171+
Log.Debug("TestVisualRecognition", "Recognizing text image using POST!");
172+
string m_recognizeTextImagePath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers/from_platos_apology.png";
173+
m_VisualRecognition.RecognizeText(m_recognizeTextImagePath, OnRecognizeTextPost);
174+
while (!m_RecognizeTextPOSTTested)
175+
yield return null;
176+
177+
// test delete classifier
178+
Log.Debug("TestVisualRecognition", "Deleting classifier {0}!", m_ClassifierId);
179+
m_VisualRecognition.DeleteClassifier(OnDeleteClassifier, m_ClassifierId);
180+
while (!m_DeleteClassifierTested)
181+
yield return null;
182+
183+
// test list collections
184+
Log.Debug("TestVisualRecognition", "Attempting to list collections!");
185185
m_VisualRecognition.GetCollections(OnGetCollections);
186186
while (!m_ListCollectionsTested)
187187
yield return null;
@@ -211,7 +211,7 @@ public override IEnumerator RunTest()
211211

212212
// test list images
213213
Log.Debug("TestVisualRecognition", "Attempting to list images!");
214-
m_VisualRecognition.GetCollections(OnGetCollections);
214+
m_VisualRecognition.GetCollectionImages(OnGetCollectionImages, m_CreatedCollectionID);
215215
while (!m_ListImagesTested)
216216
yield return null;
217217

@@ -632,7 +632,7 @@ private void OnGetCollection(CreateCollection collection, string customData)
632632
Test(collection != null);
633633
}
634634

635-
private void OnGetCollections(GetCollectionImages collections, string customData)
635+
private void OnGetCollectionImages(GetCollectionImages collections, string customData)
636636
{
637637
if(collections != null)
638638
{
@@ -645,8 +645,8 @@ private void OnGetCollections(GetCollectionImages collections, string customData
645645
Log.Debug("TestVisualRecognition", "Get Collections failed!");
646646
}
647647

648-
m_ListCollectionsTested = true;
649648
Test(collections != null);
649+
m_ListImagesTested = true;
650650
}
651651

652652
private void OnAddImageToCollection(CollectionsConfig images, string customData)
@@ -665,6 +665,7 @@ private void OnAddImageToCollection(CollectionsConfig images, string customData)
665665
}
666666

667667
Test(images != null);
668+
m_AddImagesToCollectionTested = true;
668669
}
669670

670671
private void OnDeleteCollectionImage(bool success, string customData)
@@ -675,6 +676,7 @@ private void OnDeleteCollectionImage(bool success, string customData)
675676
Log.Debug("TestVisualRecognition", "Delete collection image failed!");
676677

677678
Test(success);
679+
m_DeleteImageFromCollectionTested = true;
678680
}
679681

680682
private void OnGetImage(GetCollectionsBrief image, string customData)
@@ -690,7 +692,9 @@ private void OnGetImage(GetCollectionsBrief image, string customData)
690692
}
691693

692694
Test(image != null);
693-
}
695+
m_ListImageDetailsTested = true;
696+
697+
}
694698

695699
private void OnDeleteMetadata(bool success, string customData)
696700
{
@@ -700,6 +704,7 @@ private void OnDeleteMetadata(bool success, string customData)
700704
Log.Debug("TestVisualRecognition", "Delete image metadata failed!");
701705

702706
Test(success);
707+
m_DeleteImageMetadataTested = true;
703708
}
704709

705710
private void OnGetMetadata(object responseObject, string customData)
@@ -708,7 +713,8 @@ private void OnGetMetadata(object responseObject, string customData)
708713
Log.Debug("TestVisualRecognition", "ResponseObject: {0}", responseObject);
709714

710715
Test(responseObject != null);
711-
}
716+
m_ListImageMetadataTested = true;
717+
}
712718

713719
private void OnFindSimilar(SimilarImagesConfig images, string customData)
714720
{
@@ -725,6 +731,7 @@ private void OnFindSimilar(SimilarImagesConfig images, string customData)
725731
}
726732

727733
Test(images != null);
734+
m_FindSimilarTested = true;
728735
}
729736
}
730737
}

0 commit comments

Comments
 (0)