diff --git a/hw4_test_coverage/client.go b/hw4_test_coverage/client.go new file mode 100755 index 0000000..4dfabb7 --- /dev/null +++ b/hw4_test_coverage/client.go @@ -0,0 +1,135 @@ +package main + +import ( + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net" + "net/http" + "net/url" + "strconv" + "time" +) + +const ( + orderAsc = iota + orderDesc +) + +var ( + errTest = errors.New("testing") + client = &http.Client{Timeout: time.Second} +) + +type User struct { + Id int + Name string + Age int + About string + Gender string +} + +type SearchResponse struct { + Users []User + NextPage bool +} + +type SearchErrorResponse struct { + Error string +} + +const ( + OrderByAsc = -1 + OrderByAsIs = 0 + OrderByDesc = 1 + + ErrorBadOrderField = `OrderField invalid` +) + +type SearchRequest struct { + Limit int + Offset int // Можно учесть после сортировки + Query string // подстрока в 1 из полей + OrderField string + // -1 по убыванию, 0 как встретилось, 1 по возрастанию + OrderBy int +} + +type SearchClient struct { + // токен, по которому происходит авторизация на внешней системе, уходит туда через хедер + AccessToken string + // урл внешней системы, куда идти + URL string +} + +// FindUsers отправляет запрос во внешнюю систему, которая непосредственно ищет пользоваталей +func (srv *SearchClient) FindUsers(req SearchRequest) (*SearchResponse, error) { + + searcherParams := url.Values{} + + if req.Limit < 0 { + return nil, fmt.Errorf("limit must be > 0") + } + if req.Limit > 25 { + req.Limit = 25 + } + if req.Offset < 0 { + return nil, fmt.Errorf("offset must be > 0") + } + + //нужно для получения следующей записи, на основе которой мы скажем - можно показать переключатель следующей страницы или нет + req.Limit++ + + searcherParams.Add("limit", strconv.Itoa(req.Limit)) + searcherParams.Add("offset", strconv.Itoa(req.Offset)) + searcherParams.Add("query", req.Query) + searcherParams.Add("order_field", req.OrderField) + searcherParams.Add("order_by", strconv.Itoa(req.OrderBy)) + + searcherReq, err := http.NewRequest("GET", srv.URL+"?"+searcherParams.Encode(), nil) + searcherReq.Header.Add("AccessToken", srv.AccessToken) + + resp, err := client.Do(searcherReq) + if err != nil { + if err, ok := err.(net.Error); ok && err.Timeout() { + return nil, fmt.Errorf("timeout for %s", searcherParams.Encode()) + } + return nil, fmt.Errorf("unknown error %s", err) + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + + switch resp.StatusCode { + case http.StatusUnauthorized: + return nil, fmt.Errorf("Bad AccessToken") + case http.StatusInternalServerError: + return nil, fmt.Errorf("SearchServer fatal error") + case http.StatusBadRequest: + errResp := SearchErrorResponse{} + err = json.Unmarshal(body, &errResp) + if err != nil { + return nil, fmt.Errorf("cant unpack error json: %s", err) + } + if errResp.Error == "ErrorBadOrderField" { + return nil, fmt.Errorf("OrderFeld %s invalid", req.OrderField) + } + return nil, fmt.Errorf("unknown bad request error: %s", errResp.Error) + } + + data := []User{} + err = json.Unmarshal(body, &data) + if err != nil { + return nil, fmt.Errorf("cant unpack result json: %s", err) + } + + result := SearchResponse{} + if len(data) == req.Limit { + result.NextPage = true + result.Users = data[0 : len(data)-1] + } else { + result.Users = data[0:len(data)] + } + + return &result, err +} diff --git a/hw4_test_coverage/client_test.go b/hw4_test_coverage/client_test.go new file mode 100755 index 0000000..67391e5 --- /dev/null +++ b/hw4_test_coverage/client_test.go @@ -0,0 +1,182 @@ +package main + +import ( + "encoding/json" + "encoding/xml" + "fmt" + "io" + "net/http" + "net/http/httptest" + "os" + "reflect" + "sort" + "strconv" + "strings" + "testing" +) + +type UserXML struct { + ID int `xml:"id"` + FirstName string `xml:"first_name"` + LastName string `xml:"last_name"` + Age int `xml:"age"` + About string `xml:"about"` + Gender string `xml:"gender"` +} + +var usersXML []UserXML +var users []User +var filePath = "dataset.xml" + +func SearchServer(w http.ResponseWriter, r *http.Request) { + file, _ := os.Open(filePath) + + orderField := r.FormValue("order_field") + if orderField == "" { + orderField = "Name" + } else if orderField != "Id" && orderField != "Name" && orderField != "Age" { + w.WriteHeader(http.StatusInternalServerError) + } + + query := r.FormValue("query") + offset, _ := strconv.Atoi(r.FormValue("offset")) + limit, _ := strconv.Atoi(r.FormValue("limit")) + orderBy, _ := strconv.Atoi(r.FormValue("order_by")) + + decoder := xml.NewDecoder(file) + + if len(usersXML) == 0 { + for { + var userXML UserXML + tok, tokenErr := decoder.Token() + if tokenErr != nil && tokenErr != io.EOF { + fmt.Println("error happend", tokenErr) + break + } else if tokenErr == io.EOF { + break + } + if tok == nil { + fmt.Println("t is nil break") + } + switch tok := tok.(type) { + case xml.StartElement: + if tok.Name.Local == "row" { + if err := decoder.DecodeElement(&userXML, &tok); err != nil { + fmt.Println("error happend", err) + } + usersXML = append(usersXML, userXML) + } + } + } + } + + var shortUsersXML []UserXML + + for _, userXML := range usersXML { + if len(query) > 0 { + if strings.Contains(userXML.FirstName, query) || strings.Contains(userXML.LastName, query) || strings.Contains(userXML.About, query) { + shortUsersXML = append(shortUsersXML, userXML) + } + } else { + shortUsersXML = append(shortUsersXML, userXML) + } + } + + sort.Slice(shortUsersXML, func(i, j int) bool { + if orderField == "Name" { + if shortUsersXML[i].FirstName < shortUsersXML[j].FirstName { + return true + } + if shortUsersXML[i].FirstName > shortUsersXML[j].FirstName { + return false + } + return shortUsersXML[i].LastName < shortUsersXML[j].LastName + } + iValue := reflect.Indirect(reflect.ValueOf(&shortUsersXML[i])).FieldByName(orderField) + jValue := reflect.Indirect(reflect.ValueOf(&shortUsersXML[j])).FieldByName(orderField) + if orderBy == -1 { + return int(iValue.Int()) > int(jValue.Int()) + } else if orderBy == 1 { + return int(iValue.Int()) < int(jValue.Int()) + } + return true + }) + + for _, userXML := range shortUsersXML { + users = append(users, User{ + Id: userXML.ID, + Name: userXML.FirstName + " " + userXML.LastName, + Age: userXML.Age, + About: userXML.About, + Gender: userXML.Gender, + }) + } + + limitedOffsettedUsers := users[offset : offset+limit] + + w.WriteHeader(http.StatusOK) + json, _ := json.Marshal(limitedOffsettedUsers) + io.WriteString(w, string(json[:])) +} + +type TestCase struct { + SearchRequest *SearchRequest + Result *SearchResponse + IsError bool +} + +func TestSearchClientFindUsers(t *testing.T) { + cases := []TestCase{ + TestCase{ + SearchRequest: &SearchRequest{ + Limit: 1, + Offset: 1, // Можно учесть после сортировки + Query: "tt", // подстрока в 1 из полей + OrderField: "Name", + OrderBy: 1, // -1 по убыванию, 0 как встретилось, 1 по возрастанию + }, + Result: &SearchResponse{ + Users: []User{ + User{ + Id: 3, + Name: "Everett Dillard", + Age: 27, + About: "Sint eu id sint irure officia amet cillum. Amet consectetur enim mollit culpa laborum ipsum adipisicing est laboris." + + " Adipisicing fugiat esse dolore aliquip quis laborum aliquip dolore. Pariatur do elit eu nostrud occaecat.\n", + Gender: "male", + }, + }, + NextPage: true, + }, + IsError: false, + }, + TestCase{ + SearchRequest: &SearchRequest{ + OrderField: "asd", + }, + Result: nil, + IsError: true, + }, + } + + ts := httptest.NewServer(http.HandlerFunc(SearchServer)) + + for caseNum, caseItem := range cases { + client := &SearchClient{ + URL: ts.URL, + AccessToken: "accessToken", + } + result, err := client.FindUsers(*caseItem.SearchRequest) + + if err != nil && !caseItem.IsError { + t.Errorf("[%d] unexpected error: %#v", caseNum, err) + } + if err == nil && caseItem.IsError { + t.Errorf("[%d] expected error, got nil", caseNum) + } + if !reflect.DeepEqual(caseItem.Result, result) { + t.Errorf("[%d] wrong result, expected %#v, got %#v", caseNum, caseItem.Result, result) + } + } + ts.Close() +} diff --git a/hw4_test_coverage/dataset.xml b/hw4_test_coverage/dataset.xml new file mode 100755 index 0000000..db2c000 --- /dev/null +++ b/hw4_test_coverage/dataset.xml @@ -0,0 +1,703 @@ + + + + 0 + 1a6fa827-62f1-45f6-b579-aaead2b47169 + false + $2,144.93 + http://placehold.it/32x32 + 22 + green + Boyd + Wolf + male + HOPELI + boydwolf@hopeli.com + +1 (956) 593-2402 +
586 Winthrop Street, Edneyville, Mississippi, 9555
+ Nulla cillum enim voluptate consequat laborum esse excepteur occaecat commodo nostrud excepteur ut cupidatat. Occaecat minim incididunt ut proident ad sint nostrud ad laborum sint pariatur. Ut nulla commodo dolore officia. Consequat anim eiusmod amet commodo eiusmod deserunt culpa. Ea sit dolore nostrud cillum proident nisi mollit est Lorem pariatur. Lorem aute officia deserunt dolor nisi aliqua consequat nulla nostrud ipsum irure id deserunt dolore. Minim reprehenderit nulla exercitation labore ipsum. + + 2017-02-05T06:23:27 -03:00 + apple +
+ + 1 + 46c06b5e-dd08-4e26-bf85-b15d280e5e07 + false + $2,705.71 + http://placehold.it/32x32 + 21 + green + Hilda + Mayer + female + QUINTITY + hildamayer@quintity.com + +1 (932) 421-2117 +
311 Friel Place, Loyalhanna, Kansas, 6845
+ Sit commodo consectetur minim amet ex. Elit aute mollit fugiat labore sint ipsum dolor cupidatat qui reprehenderit. Eu nisi in exercitation culpa sint aliqua nulla nulla proident eu. Nisi reprehenderit anim cupidatat dolor incididunt laboris mollit magna commodo ex. Cupidatat sit id aliqua amet nisi et voluptate voluptate commodo ex eiusmod et nulla velit. + + 2016-11-20T04:40:07 -03:00 + banana +
+ + 2 + 0601af31-061f-4249-988d-32027a545b85 + false + $1,047.64 + http://placehold.it/32x32 + 25 + blue + Brooks + Aguilar + male + ZILLACOM + brooksaguilar@zillacom.com + +1 (924) 416-3150 +
806 Williams Court, Vandiver, North Carolina, 9205
+ Velit ullamco est aliqua voluptate nisi do. Voluptate magna anim qui cillum aliqua sint veniam reprehenderit consectetur enim. Laborum dolore ut eiusmod ipsum ad anim est do tempor culpa ad do tempor. Nulla id aliqua dolore dolore adipisicing. + + 2016-09-05T06:52:19 -03:00 + strawberry +
+ + 3 + c472acb3-3fee-4177-960f-ea133195d594 + false + $2,960.95 + http://placehold.it/32x32 + 27 + blue + Everett + Dillard + male + LYRIA + everettdillard@lyria.com + +1 (991) 418-2856 +
480 Morgan Avenue, Kansas, Pennsylvania, 9303
+ Sint eu id sint irure officia amet cillum. Amet consectetur enim mollit culpa laborum ipsum adipisicing est laboris. Adipisicing fugiat esse dolore aliquip quis laborum aliquip dolore. Pariatur do elit eu nostrud occaecat. + + 2015-10-02T08:16:01 -03:00 + strawberry +
+ + 4 + bb040af8-5c6b-4e98-b6e1-ee6b73ea5c1f + true + $3,970.65 + http://placehold.it/32x32 + 30 + blue + Owen + Lynn + male + COMDOM + owenlynn@comdom.com + +1 (969) 439-3901 +
131 Moffat Street, Winfred, Delaware, 8183
+ Elit anim elit eu et deserunt veniam laborum commodo irure nisi ut labore reprehenderit fugiat. Ipsum adipisicing labore ullamco occaecat ut. Ea deserunt ad dolor eiusmod aute non enim adipisicing sit ullamco est ullamco. Elit in proident pariatur elit ullamco quis. Exercitation amet nisi fugiat voluptate esse sit et consequat sit pariatur labore et. + + 2014-04-08T11:53:21 -03:00 + banana +
+ + 5 + a1a4a984-460f-4c68-8f27-975d5a1d87bd + true + $3,559.87 + http://placehold.it/32x32 + 30 + green + Beulah + Stark + female + SIGNITY + beulahstark@signity.com + +1 (834) 410-3503 +
820 Prescott Place, Rowe, Missouri, 8760
+ Enim cillum eu cillum velit labore. In sint esse nulla occaecat voluptate pariatur aliqua aliqua non officia nulla aliqua. Fugiat nostrud irure officia minim cupidatat laborum ad incididunt dolore. Fugiat nostrud eiusmod ex ea nulla commodo. Reprehenderit sint qui anim non ad id adipisicing qui officia Lorem. + + 2015-11-07T10:32:03 -03:00 + apple +
+ + 6 + fb0ded4f-611a-4255-be19-b4be07d9fe59 + false + $3,678.75 + http://placehold.it/32x32 + 39 + blue + Jennings + Mays + male + QUANTALIA + jenningsmays@quantalia.com + +1 (999) 415-3794 +
825 Butler Street, Catherine, Virgin Islands, 8625
+ Veniam consectetur non non aliquip exercitation quis qui. Aliquip duis ut ad commodo consequat ipsum cupidatat id anim voluptate deserunt enim laboris. Sunt nostrud voluptate do est tempor esse anim pariatur. Ea do amet Lorem in mollit ipsum irure Lorem exercitation. Exercitation deserunt adipisicing nulla aute ex amet sint tempor incididunt magna. Quis et consectetur dolor nulla reprehenderit culpa laboris voluptate ut mollit. Qui ipsum nisi ullamco sit exercitation nisi magna fugiat anim consectetur officia. + + 2014-07-29T05:50:51 -03:00 + banana +
+ + 7 + f8f6bdc9-fc2a-4147-b0ad-29ae751da5bb + true + $3,466.80 + http://placehold.it/32x32 + 34 + green + Leann + Travis + female + ULTRASURE + leanntravis@ultrasure.com + +1 (990) 522-2940 +
638 Russell Street, Cotopaxi, New Hampshire, 4289
+ Lorem magna dolore et velit ut officia. Cupidatat deserunt elit mollit amet nulla voluptate sit. Quis aute aliquip officia deserunt sint sint nisi. Laboris sit et ea dolore consequat laboris non. Consequat do enim excepteur qui mollit consectetur eiusmod laborum ut duis mollit dolor est. Excepteur amet duis enim laborum aliqua nulla ea minim. + + 2015-07-27T12:45:53 -03:00 + banana +
+ + 8 + 18c9d0d6-bd2d-472e-a201-66ba9ccc5b93 + true + $3,447.73 + http://placehold.it/32x32 + 29 + green + Glenn + Jordan + male + NETAGY + glennjordan@netagy.com + +1 (863) 527-3069 +
437 Boardwalk , Hegins, New Jersey, 6108
+ Duis reprehenderit sit velit exercitation non aliqua magna quis ad excepteur anim. Eu cillum cupidatat sit magna cillum irure occaecat sunt officia officia deserunt irure. Cupidatat dolor cupidatat ipsum minim consequat Lorem adipisicing. Labore fugiat cupidatat nostrud voluptate ea eu pariatur non. Ipsum quis occaecat irure amet esse eu fugiat deserunt incididunt Lorem esse duis occaecat mollit. + + 2017-04-05T12:46:54 -03:00 + strawberry +
+ + 9 + 34014378-ff2c-4430-931c-87ccb71cd045 + false + $3,906.52 + http://placehold.it/32x32 + 36 + brown + Rose + Carney + female + CALLFLEX + rosecarney@callflex.com + +1 (942) 420-2284 +
456 Stratford Road, Westboro, Northern Mariana Islands, 8664
+ Voluptate ipsum ad consequat elit ipsum tempor irure consectetur amet. Et veniam sunt in sunt ipsum non elit ullamco est est eu. Exercitation ipsum do deserunt do eu adipisicing id deserunt duis nulla ullamco eu. Ad duis voluptate amet quis commodo nostrud occaecat minim occaecat commodo. Irure sint incididunt est cupidatat laborum in duis enim nulla duis ut in ut. Cupidatat ex incididunt do ullamco do laboris eiusmod quis nostrud excepteur quis ea. + + 2014-11-01T07:35:43 -03:00 + banana +
+ + 10 + 4e9758ef-e295-40eb-bf57-b994daa175dc + false + $1,133.48 + http://placehold.it/32x32 + 30 + blue + Henderson + Maxwell + male + PATHWAYS + hendersonmaxwell@pathways.com + +1 (980) 417-3167 +
956 Beacon Court, Guthrie, New York, 4953
+ Ex et excepteur anim in eiusmod. Cupidatat sunt aliquip exercitation velit minim aliqua ad ipsum cillum dolor do sit dolore cillum. Exercitation eu in ex qui voluptate fugiat amet. + + 2016-09-17T07:35:03 -03:00 + banana +
+ + 11 + 7d6d9ee3-13c0-446f-8c01-67143c85b092 + true + $3,925.47 + http://placehold.it/32x32 + 32 + blue + Gilmore + Guerra + male + COSMOSIS + gilmoreguerra@cosmosis.com + +1 (966) 568-3602 +
239 Grimes Road, Cochranville, Ohio, 5815
+ Labore consectetur do sit et mollit non incididunt. Amet aute voluptate enim et sit Lorem elit. Fugiat proident ullamco ullamco sint pariatur deserunt eu nulla consectetur culpa eiusmod. Veniam irure et deserunt consectetur incididunt ad ipsum sint. Consectetur voluptate adipisicing aute fugiat aliquip culpa qui nisi ut ex esse ex. Sint et anim aliqua pariatur. + + 2015-01-17T10:11:39 -03:00 + strawberry +
+ + 12 + 78906993-eb12-41a8-bbc9-cbd022d3826a + true + $1,846.85 + http://placehold.it/32x32 + 36 + brown + Cruz + Guerrero + male + EXTREMO + cruzguerrero@extremo.com + +1 (826) 446-3359 +
381 Stillwell Place, Matthews, Texas, 3007
+ Sunt enim ad fugiat minim id esse proident laborum magna magna. Velit anim aliqua nulla laborum consequat veniam reprehenderit enim fugiat ipsum mollit nisi. Nisi do reprehenderit aute sint sit culpa id Lorem proident id tempor. Irure ut ipsum sit non quis aliqua in voluptate magna. Ipsum non aliquip quis incididunt incididunt aute sint. Minim dolor in mollit aute duis consectetur. + + 2016-05-28T01:21:28 -03:00 + apple +
+ + 13 + 5b3cc38a-e78d-4e51-8deb-a943be9f02ab + true + $1,119.05 + http://placehold.it/32x32 + 40 + blue + Whitley + Davidson + male + COMTEXT + whitleydavidson@comtext.com + +1 (839) 565-2229 +
198 Chestnut Street, Cliffside, Palau, 4383
+ Consectetur dolore anim veniam aliqua deserunt officia eu. Et ullamco commodo ad officia duis ex incididunt proident consequat nostrud proident quis tempor. Sunt magna ad excepteur eu sint aliqua eiusmod deserunt proident. Do labore est dolore voluptate ullamco est dolore excepteur magna duis quis. Quis laborum deserunt ipsum velit occaecat est laborum enim aute. Officia dolore sit voluptate quis mollit veniam. Laborum nisi ullamco nisi sit nulla cillum et id nisi. + + 2014-06-22T06:04:41 -03:00 + banana +
+ + 14 + 3f75007f-0348-493c-9368-58bfd1f05351 + false + $3,129.89 + http://placehold.it/32x32 + 23 + blue + Nicholson + Newman + male + GENESYNK + nicholsonnewman@genesynk.com + +1 (936) 468-2854 +
405 Post Court, Wilmington, Vermont, 2707
+ Tempor minim reprehenderit dolore et ad. Irure id fugiat incididunt do amet veniam ex consequat. Quis ad ipsum excepteur eiusmod mollit nulla amet velit quis duis ut irure. + + 2016-01-08T11:42:03 -03:00 + apple +
+ + 15 + a281d387-df24-4c8a-9a08-19588749d95e + false + $1,389.16 + http://placehold.it/32x32 + 21 + green + Allison + Valdez + male + XUMONK + allisonvaldez@xumonk.com + +1 (822) 430-2401 +
436 Independence Avenue, Castleton, New Mexico, 7874
+ Labore excepteur voluptate velit occaecat est nisi minim. Laborum ea et irure nostrud enim sit incididunt reprehenderit id est nostrud eu. Ullamco sint nisi voluptate cillum nostrud aliquip et minim. Enim duis esse do aute qui officia ipsum ut occaecat deserunt. Pariatur pariatur nisi do ad dolore reprehenderit et et enim esse dolor qui. Excepteur ullamco adipisicing qui adipisicing tempor minim aliquip. + + 2014-10-13T02:21:35 -03:00 + banana +
+ + 16 + 143317ac-d310-469c-a423-717e8ce85cd8 + true + $3,677.71 + http://placehold.it/32x32 + 35 + brown + Annie + Osborn + female + PHARMEX + annieosborn@pharmex.com + +1 (904) 409-3942 +
288 Albany Avenue, Hiko, Maine, 954
+ Consequat fugiat veniam commodo nisi nostrud culpa pariatur. Aliquip velit adipisicing dolor et nostrud. Eu nostrud officia velit eiusmod ullamco duis eiusmod ad non do quis. + + 2015-10-27T03:54:56 -03:00 + apple +
+ + 17 + eea70a1a-ffd5-4ce2-8a35-34c54e2092e8 + false + $3,314.78 + http://placehold.it/32x32 + 36 + green + Dillard + Mccoy + male + ISOSURE + dillardmccoy@isosure.com + +1 (805) 516-2041 +
857 Brighton Avenue, Turpin, Alaska, 2798
+ Laborum voluptate sit ipsum tempor dolore. Adipisicing reprehenderit minim aliqua est. Consectetur enim deserunt incididunt elit non consectetur nisi esse ut dolore officia do ipsum. + + 2015-08-20T12:07:28 -03:00 + banana +
+ + 18 + 1ec1fd0e-1151-482a-a791-c48fb324f519 + true + $2,812.91 + http://placehold.it/32x32 + 27 + green + Terrell + Hall + male + EXOSTREAM + terrellhall@exostream.com + +1 (893) 553-3156 +
496 Ruby Street, Stewartville, California, 3637
+ Ut nostrud est est elit incididunt consequat sunt ut aliqua sunt sunt. Quis consectetur amet occaecat nostrud duis. Fugiat in irure consequat laborum ipsum tempor non deserunt laboris id ullamco cupidatat sit. Officia cupidatat aliqua veniam et ipsum labore eu do aliquip elit cillum. Labore culpa exercitation sint sint. + + 2014-03-17T05:03:56 -03:00 + banana +
+ + 19 + ed6e22e2-0564-4cbc-ae40-1ed99929489b + false + $2,577.25 + http://placehold.it/32x32 + 26 + blue + Bell + Bauer + male + SILODYNE + bellbauer@silodyne.com + +1 (960) 526-3693 +
838 Arkansas Drive, Springhill, District Of Columbia, 2352
+ Nulla voluptate nostrud nostrud do ut tempor et quis non aliqua cillum in duis. Sit ipsum sit ut non proident exercitation. Quis consequat laboris deserunt adipisicing eiusmod non cillum magna. + + 2015-12-04T03:00:57 -03:00 + apple +
+ + 20 + 036b4c27-ca15-4100-a5f0-f27e5e6ab984 + true + $3,003.27 + http://placehold.it/32x32 + 27 + blue + Lowery + York + male + COMCUR + loweryyork@comcur.com + +1 (853) 406-2484 +
523 Banker Street, Monument, Colorado, 6831
+ Dolor enim sit id dolore enim sint nostrud deserunt. Occaecat minim enim veniam proident mollit Lorem irure ex. Adipisicing pariatur adipisicing aliqua amet proident velit. Magna commodo culpa sit id. + + 2016-07-03T12:01:04 -03:00 + apple +
+ + 21 + 739c1f68-482f-4ae5-a208-43d914019248 + false + $2,410.06 + http://placehold.it/32x32 + 26 + green + Johns + Whitney + male + GEEKY + johnswhitney@geeky.com + +1 (803) 484-3859 +
314 Havemeyer Street, Needmore, South Dakota, 1679
+ Elit sunt exercitation incididunt est ea quis do ad magna. Commodo laboris nisi aliqua eu incididunt eu irure. Labore ullamco quis deserunt non cupidatat sint aute in incididunt deserunt elit velit. Duis est mollit veniam aliquip. Nulla sunt veniam anim et sint dolore. + + 2014-09-19T05:47:21 -03:00 + banana +
+ + 22 + aea9b86f-d15c-42ad-a757-daf4492c9b68 + false + $3,160.04 + http://placehold.it/32x32 + 31 + brown + Beth + Wynn + female + AMTAP + bethwynn@amtap.com + +1 (897) 424-3859 +
517 Grand Street, Talpa, Arizona, 3657
+ Proident non nisi dolore id non. Aliquip ex anim cupidatat dolore amet veniam tempor non adipisicing. Aliqua adipisicing eu esse quis reprehenderit est irure cillum duis dolor ex. Laborum do aute commodo amet. Fugiat aute in excepteur ut aliqua sint fugiat do nostrud voluptate duis do deserunt. Elit esse ipsum duis ipsum. + + 2015-08-16T01:26:26 -03:00 + banana +
+ + 23 + d99b24e4-dfcd-4a74-ab77-2d3d59d837e5 + false + $3,052.48 + http://placehold.it/32x32 + 21 + brown + Gates + Spencer + male + EXOSIS + gatesspencer@exosis.com + +1 (995) 576-2540 +
663 Manhattan Avenue, Hessville, Nevada, 3542
+ Dolore magna magna commodo irure. Proident culpa nisi veniam excepteur sunt qui et laborum tempor. Qui proident Lorem commodo dolore ipsum. + + 2017-04-05T05:56:15 -03:00 + apple +
+ + 24 + cb1a621a-8507-4883-a1f0-a8020c5b2ccd + false + $3,078.24 + http://placehold.it/32x32 + 33 + green + Gonzalez + Anderson + male + SKYBOLD + gonzalezanderson@skybold.com + +1 (905) 406-3807 +
111 Vanderveer Place, Warren, Wyoming, 3528
+ Quis consequat incididunt in ex deserunt minim aliqua ea duis. Culpa nisi excepteur sint est fugiat cupidatat nulla magna do id dolore laboris. Aute cillum eiusmod do amet dolore labore commodo do pariatur sit id. Do irure eiusmod reprehenderit non in duis sunt ex. Labore commodo labore pariatur ex minim qui sit elit. + + 2016-07-11T09:19:57 -03:00 + apple +
+ + 25 + 735a2dbb-26c1-4da2-a888-12f1f5651738 + true + $3,801.68 + http://placehold.it/32x32 + 32 + blue + Katheryn + Jacobs + female + DANJA + katherynjacobs@danja.com + +1 (962) 426-2451 +
947 Nassau Street, Norwood, Montana, 475
+ Magna excepteur anim amet id consequat tempor dolor sunt id enim ipsum ea est ex. In do ea sint qui in minim mollit anim est et minim dolore velit laborum. Officia commodo duis ut proident laboris fugiat commodo do ex duis consequat exercitation. Ad et excepteur ex ea exercitation id fugiat exercitation amet proident adipisicing laboris id deserunt. Commodo proident laborum elit ex aliqua labore culpa ullamco occaecat voluptate voluptate laboris deserunt magna. + + 2015-02-13T03:14:25 -03:00 + strawberry +
+ + 26 + 4c4ef19a-7b1d-4b6a-bd27-9fcf9bcd2499 + true + $3,845.77 + http://placehold.it/32x32 + 39 + blue + Sims + Cotton + male + COLLAIRE + simscotton@collaire.com + +1 (956) 428-2561 +
816 Quentin Street, Dotsero, Washington, 7529
+ Ex cupidatat est velit consequat ad. Tempor non cillum labore non voluptate. Et proident culpa labore deserunt ut aliquip commodo laborum nostrud. Anim minim occaecat est est minim. + + 2014-12-13T11:30:23 -03:00 + strawberry +
+ + 27 + 7a85d617-ccb4-4430-ab01-6c686763f028 + true + $2,929.09 + http://placehold.it/32x32 + 26 + blue + Rebekah + Sutton + female + ENTROPIX + rebekahsutton@entropix.com + +1 (985) 455-2862 +
938 Elmwood Avenue, Roulette, Kentucky, 5161
+ Aliqua exercitation ad nostrud et exercitation amet quis cupidatat esse nostrud proident. Ullamco voluptate ex minim consectetur ea cupidatat in mollit reprehenderit voluptate labore sint laboris. Minim cillum et incididunt pariatur amet do esse. Amet irure elit deserunt quis culpa ut deserunt minim proident cupidatat nisi consequat ipsum. + + 2015-07-20T05:07:54 -03:00 + apple +
+ + 28 + c152e649-b500-4b1f-8aeb-5bad7a4a8551 + false + $2,395.53 + http://placehold.it/32x32 + 32 + green + Cohen + Hines + male + TROPOLI + cohenhines@tropoli.com + +1 (880) 597-3560 +
213 Matthews Place, Frystown, Oklahoma, 5387
+ Deserunt deserunt dolor ex pariatur dolore sunt labore minim deserunt. Tempor non et officia sint culpa quis consectetur pariatur elit sunt. Anim consequat velit exercitation eiusmod aute elit minim velit. Excepteur nulla excepteur duis eiusmod anim reprehenderit officia est ea aliqua nisi deserunt officia eiusmod. Officia enim adipisicing mollit et enim quis magna ea. Officia velit deserunt minim qui. Commodo culpa pariatur eu aliquip voluptate culpa ullamco sit minim laboris fugiat sit. + + 2015-01-25T10:06:18 -03:00 + strawberry +
+ + 29 + fac77e74-c8b0-4c32-88c9-b0a43537ce0a + false + $3,095.95 + http://placehold.it/32x32 + 34 + blue + Clarissa + Henry + female + CENTREE + clarissahenry@centree.com + +1 (898) 540-2363 +
377 Bainbridge Street, Thornport, Virginia, 5454
+ Nostrud enim ea ad reprehenderit tempor ullamco exercitation. Elit in voluptate pariatur sit nisi occaecat laboris esse ipsum. Mollit elit et deserunt ea laboris sunt est amet culpa laboris occaecat ipsum sunt sunt. + + 2014-05-10T11:36:09 -03:00 + strawberry +
+ + 30 + 5adde77d-5aac-4b37-b3a5-aa3bf7b0ac54 + true + $2,549.66 + http://placehold.it/32x32 + 32 + green + Dickson + Silva + male + VORTEXACO + dicksonsilva@vortexaco.com + +1 (920) 473-2187 +
301 Dover Street, Marion, Maryland, 130
+ Ipsum aliqua proident ullamco laboris eu occaecat deserunt. Amet ut adipisicing sint veniam dolore aliquip est mollit ex officia esse eiusmod veniam. Dolore magna minim aliquip sit deserunt. Nostrud occaecat dolore aliqua aliquip voluptate aliquip ad adipisicing. + + 2014-04-10T07:40:13 -03:00 + strawberry +
+ + 31 + 66a32762-e090-4a22-b33d-1de4c5dec09a + true + $2,652.55 + http://placehold.it/32x32 + 37 + green + Everett + Brott + male + JETSILK + palmerscott@jetsilk.com + +1 (856) 402-3448 +
168 Louise Terrace, Clay, Guam, 2096
+ Elit fugiat commodo laborum quis eu consequat. In velit magna sit fugiat non proident ipsum tempor eu. Consectetur exercitation labore eiusmod occaecat adipisicing irure consequat fugiat ullamco aliquip nostrud anim irure enim. Duis do amet cillum eiusmod eu sunt. Minim minim sunt sit sit enim velit sint tempor enim sint aliquip voluptate reprehenderit officia. Voluptate magna sit consequat adipisicing ut eu qui. + + 2015-10-30T12:21:05 -03:00 + banana +
+ + 32 + 49c236e7-89e5-4e9f-94cd-9f7aabf914dc + true + $3,659.51 + http://placehold.it/32x32 + 40 + blue + Christy + Knapp + female + XANIDE + christyknapp@xanide.com + +1 (825) 499-3933 +
914 Porter Avenue, Kirk, Massachusetts, 9088
+ Incididunt culpa dolore laborum cupidatat consequat. Aliquip cupidatat pariatur sit consectetur laboris labore anim labore. Est sint ut ipsum dolor ipsum nisi tempor in tempor aliqua. Aliquip labore cillum est consequat anim officia non reprehenderit ex duis elit. Amet aliqua eu ad velit incididunt ad ut magna. Culpa dolore qui anim consequat commodo aute. + + 2016-12-21T05:48:37 -03:00 + strawberry +
+ + 33 + 15affcba-ff5a-4b01-8795-1c6f636038de + false + $3,239.08 + http://placehold.it/32x32 + 36 + brown + Twila + Snow + female + LUNCHPAD + twilasnow@lunchpad.com + +1 (995) 538-2962 +
646 Hoyt Street, Tilleda, Michigan, 9656
+ Sint non sunt adipisicing sit laborum cillum magna nisi exercitation. Dolore officia esse dolore officia ea adipisicing amet ea nostrud elit cupidatat laboris. Proident culpa ullamco aute incididunt aute. Laboris et nulla incididunt consequat pariatur enim dolor incididunt adipisicing enim fugiat tempor ullamco. Amet est ullamco officia consectetur cupidatat non sunt laborum nisi in ex. Quis labore quis ipsum est nisi ex officia reprehenderit ad adipisicing fugiat. Labore fugiat ea dolore exercitation sint duis aliqua. + + 2014-08-16T08:31:28 -03:00 + apple +
+ + 34 + 077040a1-8c2a-4571-b3f9-89d10e6603f3 + true + $1,616.23 + http://placehold.it/32x32 + 34 + green + Kane + Sharp + male + BUZZOPIA + kanesharp@buzzopia.com + +1 (811) 473-3973 +
858 Alabama Avenue, Mulberry, Tennessee, 3103
+ Lorem proident sint minim anim commodo cillum. Eiusmod velit culpa commodo anim consectetur consectetur sint sint labore. Mollit consequat consectetur magna nulla veniam commodo eu ut et. Ut adipisicing qui ex consectetur officia sint ut fugiat ex velit cupidatat fugiat nisi non. Dolor minim mollit aliquip veniam nostrud. Magna eu aliqua Lorem aliquip. + + 2014-08-09T02:04:24 -03:00 + strawberry +
+
\ No newline at end of file diff --git a/hw4_test_coverage/dataset_test.xml b/hw4_test_coverage/dataset_test.xml new file mode 100755 index 0000000..131461c --- /dev/null +++ b/hw4_test_coverage/dataset_test.xml @@ -0,0 +1,703 @@ + + + + 0 + 1a6fa827-62f1-45f6-b579-aaead2b47169 + false + $2,144.93 + http://placehold.it/32x32 + 22 + green + Boyd + Wolf + male + HOPELI + boydwolf@hopeli.com + +1 (956) 593-2402 +
586 Winthrop Street, Edneyville, Mississippi, 9555
+ Nulla cillum enim voluptate consequat laborum esse excepteur occaecat commodo nostrud excepteur ut cupidatat. Occaecat minim incididunt ut proident ad sint nostrud ad laborum sint pariatur. Ut nulla commodo dolore officia. Consequat anim eiusmod amet commodo eiusmod deserunt culpa. Ea sit dolore nostrud cillum proident nisi mollit est Lorem pariatur. Lorem aute officia deserunt dolor nisi aliqua consequat nulla nostrud ipsum irure id deserunt dolore. Minim reprehenderit nulla exercitation labore ipsum. + + 2017-02-05T06:23:27 -03:00 + apple +
+ + 1 + 46c06b5e-dd08-4e26-bf85-b15d280e5e07 + false + $2,705.71 + http://placehold.it/32x32 + 21 + green + Hilda + Mayer + female + QUINTITY + hildamayer@quintity.com + +1 (932) 421-2117 +
311 Friel Place, Loyalhanna, Kansas, 6845
+ Sit commodo consectetur minim amet ex. Elit aute mollit fugiat labore sint ipsum dolor cupidatat qui reprehenderit. Eu nisi in exercitation culpa sint aliqua nulla nulla proident eu. Nisi reprehenderit anim cupidatat dolor incididunt laboris mollit magna commodo ex. Cupidatat sit id aliqua amet nisi et voluptate voluptate commodo ex eiusmod et nulla velit. + + 2016-11-20T04:40:07 -03:00 + banana +
+ + 2 + 0601af31-061f-4249-988d-32027a545b85 + false + $1,047.64 + http://placehold.it/32x32 + 25 + blue + Brooks + Aguilar + male + ZILLACOM + brooksaguilar@zillacom.com + +1 (924) 416-3150 +
806 Williams Court, Vandiver, North Carolina, 9205
+ Velit ullamco est aliqua voluptate nisi do. Voluptate magna anim qui cillum aliqua sint veniam reprehenderit consectetur enim. Laborum dolore ut eiusmod ipsum ad anim est do tempor culpa ad do tempor. Nulla id aliqua dolore dolore adipisicing. + + 2016-09-05T06:52:19 -03:00 + strawberry +
+ + 3 + c472acb3-3fee-4177-960f-ea133195d594 + false + $2,960.95 + http://placehold.it/32x32 + 27 + blue + Everett + Dillard + male + LYRIA + everettdillard@lyria.com + +1 (991) 418-2856 +
480 Morgan Avenue, Kansas, Pennsylvania, 9303
+ Sint eu id sint irure officia amet cillum. Amet consectetur enim mollit culpa laborum ipsum adipisicing est laboris. Adipisicing fugiat esse dolore aliquip quis laborum aliquip dolore. Pariatur do elit eu nostrud occaecat. + + 2015-10-02T08:16:01 -03:00 + strawberry +
+ + 4 + bb040af8-5c6b-4e98-b6e1-ee6b73ea5c1f + true + $3,970.65 + http://placehold.it/32x32 + 30 + blue + Owen + Lynn + male + COMDOM + owenlynn@comdom.com + +1 (969) 439-3901 +
131 Moffat Street, Winfred, Delaware, 8183
+ Elit anim elit eu et deserunt veniam laborum commodo irure nisi ut labore reprehenderit fugiat. Ipsum adipisicing labore ullamco occaecat ut. Ea deserunt ad dolor eiusmod aute non enim adipisicing sit ullamco est ullamco. Elit in proident pariatur elit ullamco quis. Exercitation amet nisi fugiat voluptate esse sit et consequat sit pariatur labore et. + + 2014-04-08T11:53:21 -03:00 + banana +
+ + 5 + a1a4a984-460f-4c68-8f27-975d5a1d87bd + true + $3,559.87 + http://placehold.it/32x32 + 30 + green + Beulah + Stark + female + SIGNITY + beulahstark@signity.com + +1 (834) 410-3503 +
820 Prescott Place, Rowe, Missouri, 8760
+ Enim cillum eu cillum velit labore. In sint esse nulla occaecat voluptate pariatur aliqua aliqua non officia nulla aliqua. Fugiat nostrud irure officia minim cupidatat laborum ad incididunt dolore. Fugiat nostrud eiusmod ex ea nulla commodo. Reprehenderit sint qui anim non ad id adipisicing qui officia Lorem. + + 2015-11-07T10:32:03 -03:00 + apple +
+ + 6 + fb0ded4f-611a-4255-be19-b4be07d9fe59 + false + $3,678.75 + http://placehold.it/32x32 + 39 + blue + Jennings + Mays + male + QUANTALIA + jenningsmays@quantalia.com + +1 (999) 415-3794 +
825 Butler Street, Catherine, Virgin Islands, 8625
+ Veniam consectetur non non aliquip exercitation quis qui. Aliquip duis ut ad commodo consequat ipsum cupidatat id anim voluptate deserunt enim laboris. Sunt nostrud voluptate do est tempor esse anim pariatur. Ea do amet Lorem in mollit ipsum irure Lorem exercitation. Exercitation deserunt adipisicing nulla aute ex amet sint tempor incididunt magna. Quis et consectetur dolor nulla reprehenderit culpa laboris voluptate ut mollit. Qui ipsum nisi ullamco sit exercitation nisi magna fugiat anim consectetur officia. + + 2014-07-29T05:50:51 -03:00 + banana +
+ + 7 + f8f6bdc9-fc2a-4147-b0ad-29ae751da5bb + true + $3,466.80 + http://placehold.it/32x32 + 34 + green + Leann + Travis + female + ULTRASURE + leanntravis@ultrasure.com + +1 (990) 522-2940 +
638 Russell Street, Cotopaxi, New Hampshire, 4289
+ Lorem magna dolore et velit ut officia. Cupidatat deserunt elit mollit amet nulla voluptate sit. Quis aute aliquip officia deserunt sint sint nisi. Laboris sit et ea dolore consequat laboris non. Consequat do enim excepteur qui mollit consectetur eiusmod laborum ut duis mollit dolor est. Excepteur amet duis enim laborum aliqua nulla ea minim. + + 2015-07-27T12:45:53 -03:00 + banana +
+ + 8 + 18c9d0d6-bd2d-472e-a201-66ba9ccc5b93 + true + $3,447.73 + http://placehold.it/32x32 + 29 + green + Glenn + Jordan + male + NETAGY + glennjordan@netagy.com + +1 (863) 527-3069 +
437 Boardwalk , Hegins, New Jersey, 6108
+ Duis reprehenderit sit velit exercitation non aliqua magna quis ad excepteur anim. Eu cillum cupidatat sit magna cillum irure occaecat sunt officia officia deserunt irure. Cupidatat dolor cupidatat ipsum minim consequat Lorem adipisicing. Labore fugiat cupidatat nostrud voluptate ea eu pariatur non. Ipsum quis occaecat irure amet esse eu fugiat deserunt incididunt Lorem esse duis occaecat mollit. + + 2017-04-05T12:46:54 -03:00 + strawberry +
+ + 9 + 34014378-ff2c-4430-931c-87ccb71cd045 + false + $3,906.52 + http://placehold.it/32x32 + 36 + brown + Rose + Carney + female + CALLFLEX + rosecarney@callflex.com + +1 (942) 420-2284 +
456 Stratford Road, Westboro, Northern Mariana Islands, 8664
+ Voluptate ipsum ad consequat elit ipsum tempor irure consectetur amet. Et veniam sunt in sunt ipsum non elit ullamco est est eu. Exercitation ipsum do deserunt do eu adipisicing id deserunt duis nulla ullamco eu. Ad duis voluptate amet quis commodo nostrud occaecat minim occaecat commodo. Irure sint incididunt est cupidatat laborum in duis enim nulla duis ut in ut. Cupidatat ex incididunt do ullamco do laboris eiusmod quis nostrud excepteur quis ea. + + 2014-11-01T07:35:43 -03:00 + banana +
+ + 10 + 4e9758ef-e295-40eb-bf57-b994daa175dc + false + $1,133.48 + http://placehold.it/32x32 + 30 + blue + Henderson + Maxwell + male + PATHWAYS + hendersonmaxwell@pathways.com + +1 (980) 417-3167 +
956 Beacon Court, Guthrie, New York, 4953
+ Ex et excepteur anim in eiusmod. Cupidatat sunt aliquip exercitation velit minim aliqua ad ipsum cillum dolor do sit dolore cillum. Exercitation eu in ex qui voluptate fugiat amet. + + 2016-09-17T07:35:03 -03:00 + banana +
+ + 11 + 7d6d9ee3-13c0-446f-8c01-67143c85b092 + true + $3,925.47 + http://placehold.it/32x32 + 32 + blue + Gilmore + Guerra + male + COSMOSIS + gilmoreguerra@cosmosis.com + +1 (966) 568-3602 +
239 Grimes Road, Cochranville, Ohio, 5815
+ Labore consectetur do sit et mollit non incididunt. Amet aute voluptate enim et sit Lorem elit. Fugiat proident ullamco ullamco sint pariatur deserunt eu nulla consectetur culpa eiusmod. Veniam irure et deserunt consectetur incididunt ad ipsum sint. Consectetur voluptate adipisicing aute fugiat aliquip culpa qui nisi ut ex esse ex. Sint et anim aliqua pariatur. + + 2015-01-17T10:11:39 -03:00 + strawberry +
+ + 12 + 78906993-eb12-41a8-bbc9-cbd022d3826a + true + $1,846.85 + http://placehold.it/32x32 + 36 + brown + Cruz + Guerrero + male + EXTREMO + cruzguerrero@extremo.com + +1 (826) 446-3359 +
381 Stillwell Place, Matthews, Texas, 3007
+ Sunt enim ad fugiat minim id esse proident laborum magna magna. Velit anim aliqua nulla laborum consequat veniam reprehenderit enim fugiat ipsum mollit nisi. Nisi do reprehenderit aute sint sit culpa id Lorem proident id tempor. Irure ut ipsum sit non quis aliqua in voluptate magna. Ipsum non aliquip quis incididunt incididunt aute sint. Minim dolor in mollit aute duis consectetur. + + 2016-05-28T01:21:28 -03:00 + apple +
+ + 13 + 5b3cc38a-e78d-4e51-8deb-a943be9f02ab + true + $1,119.05 + http://placehold.it/32x32 + 40 + blue + Whitley + Davidson + male + COMTEXT + whitleydavidson@comtext.com + +1 (839) 565-2229 +
198 Chestnut Street, Cliffside, Palau, 4383
+ Consectetur dolore anim veniam aliqua deserunt officia eu. Et ullamco commodo ad officia duis ex incididunt proident consequat nostrud proident quis tempor. Sunt magna ad excepteur eu sint aliqua eiusmod deserunt proident. Do labore est dolore voluptate ullamco est dolore excepteur magna duis quis. Quis laborum deserunt ipsum velit occaecat est laborum enim aute. Officia dolore sit voluptate quis mollit veniam. Laborum nisi ullamco nisi sit nulla cillum et id nisi. + + 2014-06-22T06:04:41 -03:00 + banana +
+ + 14 + 3f75007f-0348-493c-9368-58bfd1f05351 + false + $3,129.89 + http://placehold.it/32x32 + 23 + blue + Nicholson + Newman + male + GENESYNK + nicholsonnewman@genesynk.com + +1 (936) 468-2854 +
405 Post Court, Wilmington, Vermont, 2707
+ Tempor minim reprehenderit dolore et ad. Irure id fugiat incididunt do amet veniam ex consequat. Quis ad ipsum excepteur eiusmod mollit nulla amet velit quis duis ut irure. + + 2016-01-08T11:42:03 -03:00 + apple +
+ + 15 + a281d387-df24-4c8a-9a08-19588749d95e + false + $1,389.16 + http://placehold.it/32x32 + 21 + green + Allison + Valdez + male + XUMONK + allisonvaldez@xumonk.com + +1 (822) 430-2401 +
436 Independence Avenue, Castleton, New Mexico, 7874
+ Labore excepteur voluptate velit occaecat est nisi minim. Laborum ea et irure nostrud enim sit incididunt reprehenderit id est nostrud eu. Ullamco sint nisi voluptate cillum nostrud aliquip et minim. Enim duis esse do aute qui officia ipsum ut occaecat deserunt. Pariatur pariatur nisi do ad dolore reprehenderit et et enim esse dolor qui. Excepteur ullamco adipisicing qui adipisicing tempor minim aliquip. + + 2014-10-13T02:21:35 -03:00 + banana +
+ + 16 + 143317ac-d310-469c-a423-717e8ce85cd8 + true + $3,677.71 + http://placehold.it/32x32 + 35 + brown + Annie + Osborn + female + PHARMEX + annieosborn@pharmex.com + +1 (904) 409-3942 +
288 Albany Avenue, Hiko, Maine, 954
+ Consequat fugiat veniam commodo nisi nostrud culpa pariatur. Aliquip velit adipisicing dolor et nostrud. Eu nostrud officia velit eiusmod ullamco duis eiusmod ad non do quis. + + 2015-10-27T03:54:56 -03:00 + apple +
+ + 17 + eea70a1a-ffd5-4ce2-8a35-34c54e2092e8 + false + $3,314.78 + http://placehold.it/32x32 + 36 + green + Dillard + Mccoy + male + ISOSURE + dillardmccoy@isosure.com + +1 (805) 516-2041 +
857 Brighton Avenue, Turpin, Alaska, 2798
+ Laborum voluptate sit ipsum tempor dolore. Adipisicing reprehenderit minim aliqua est. Consectetur enim deserunt incididunt elit non consectetur nisi esse ut dolore officia do ipsum. + + 2015-08-20T12:07:28 -03:00 + banana +
+ + 18 + 1ec1fd0e-1151-482a-a791-c48fb324f519 + true + $2,812.91 + http://placehold.it/32x32 + 27 + green + Terrell + Hall + male + EXOSTREAM + terrellhall@exostream.com + +1 (893) 553-3156 +
496 Ruby Street, Stewartville, California, 3637
+ Ut nostrud est est elit incididunt consequat sunt ut aliqua sunt sunt. Quis consectetur amet occaecat nostrud duis. Fugiat in irure consequat laborum ipsum tempor non deserunt laboris id ullamco cupidatat sit. Officia cupidatat aliqua veniam et ipsum labore eu do aliquip elit cillum. Labore culpa exercitation sint sint. + + 2014-03-17T05:03:56 -03:00 + banana +
+ + 19 + ed6e22e2-0564-4cbc-ae40-1ed99929489b + false + $2,577.25 + http://placehold.it/32x32 + 26 + blue + Bell + Bauer + male + SILODYNE + bellbauer@silodyne.com + +1 (960) 526-3693 +
838 Arkansas Drive, Springhill, District Of Columbia, 2352
+ Nulla voluptate nostrud nostrud do ut tempor et quis non aliqua cillum in duis. Sit ipsum sit ut non proident exercitation. Quis consequat laboris deserunt adipisicing eiusmod non cillum magna. + + 2015-12-04T03:00:57 -03:00 + apple +
+ + 20 + 036b4c27-ca15-4100-a5f0-f27e5e6ab984 + true + $3,003.27 + http://placehold.it/32x32 + 27 + blue + Lowery + York + male + COMCUR + loweryyork@comcur.com + +1 (853) 406-2484 +
523 Banker Street, Monument, Colorado, 6831
+ Dolor enim sit id dolore enim sint nostrud deserunt. Occaecat minim enim veniam proident mollit Lorem irure ex. Adipisicing pariatur adipisicing aliqua amet proident velit. Magna commodo culpa sit id. + + 2016-07-03T12:01:04 -03:00 + apple +
+ + 21 + 739c1f68-482f-4ae5-a208-43d914019248 + false + $2,410.06 + http://placehold.it/32x32 + 26 + green + Johns + Whitney + male + GEEKY + johnswhitney@geeky.com + +1 (803) 484-3859 +
314 Havemeyer Street, Needmore, South Dakota, 1679
+ Elit sunt exercitation incididunt est ea quis do ad magna. Commodo laboris nisi aliqua eu incididunt eu irure. Labore ullamco quis deserunt non cupidatat sint aute in incididunt deserunt elit velit. Duis est mollit veniam aliquip. Nulla sunt veniam anim et sint dolore. + + 2014-09-19T05:47:21 -03:00 + banana +
+ + 22 + aea9b86f-d15c-42ad-a757-daf4492c9b68 + false + $3,160.04 + http://placehold.it/32x32 + 31 + brown + Beth + Wynn + female + AMTAP + bethwynn@amtap.com + +1 (897) 424-3859 +
517 Grand Street, Talpa, Arizona, 3657
+ Proident non nisi dolore id non. Aliquip ex anim cupidatat dolore amet veniam tempor non adipisicing. Aliqua adipisicing eu esse quis reprehenderit est irure cillum duis dolor ex. Laborum do aute commodo amet. Fugiat aute in excepteur ut aliqua sint fugiat do nostrud voluptate duis do deserunt. Elit esse ipsum duis ipsum. + + 2015-08-16T01:26:26 -03:00 + banana +
+ + 23 + d99b24e4-dfcd-4a74-ab77-2d3d59d837e5 + false + $3,052.48 + http://placehold.it/32x32 + 21 + brown + Gates + Spencer + male + EXOSIS + gatesspencer@exosis.com + +1 (995) 576-2540 +
663 Manhattan Avenue, Hessville, Nevada, 3542
+ Dolore magna magna commodo irure. Proident culpa nisi veniam excepteur sunt qui et laborum tempor. Qui proident Lorem commodo dolore ipsum. + + 2017-04-05T05:56:15 -03:00 + apple +
+ + 24 + cb1a621a-8507-4883-a1f0-a8020c5b2ccd + false + $3,078.24 + http://placehold.it/32x32 + 33 + green + Gonzalez + Anderson + male + SKYBOLD + gonzalezanderson@skybold.com + +1 (905) 406-3807 +
111 Vanderveer Place, Warren, Wyoming, 3528
+ Quis consequat incididunt in ex deserunt minim aliqua ea duis. Culpa nisi excepteur sint est fugiat cupidatat nulla magna do id dolore laboris. Aute cillum eiusmod do amet dolore labore commodo do pariatur sit id. Do irure eiusmod reprehenderit non in duis sunt ex. Labore commodo labore pariatur ex minim qui sit elit. + + 2016-07-11T09:19:57 -03:00 + apple +
+ + 25 + 735a2dbb-26c1-4da2-a888-12f1f5651738 + true + $3,801.68 + http://placehold.it/32x32 + 32 + blue + Katheryn + Jacobs + female + DANJA + katherynjacobs@danja.com + +1 (962) 426-2451 +
947 Nassau Street, Norwood, Montana, 475
+ Magna excepteur anim amet id consequat tempor dolor sunt id enim ipsum ea est ex. In do ea sint qui in minim mollit anim est et minim dolore velit laborum. Officia commodo duis ut proident laboris fugiat commodo do ex duis consequat exercitation. Ad et excepteur ex ea exercitation id fugiat exercitation amet proident adipisicing laboris id deserunt. Commodo proident laborum elit ex aliqua labore culpa ullamco occaecat voluptate voluptate laboris deserunt magna. + + 2015-02-13T03:14:25 -03:00 + strawberry +
+ + 26 + 4c4ef19a-7b1d-4b6a-bd27-9fcf9bcd2499 + true + $3,845.77 + http://placehold.it/32x32 + 39 + blue + Sims + Cotton + male + COLLAIRE + simscotton@collaire.com + +1 (956) 428-2561 +
816 Quentin Street, Dotsero, Washington, 7529
+ Ex cupidatat est velit consequat ad. Tempor non cillum labore non voluptate. Et proident culpa labore deserunt ut aliquip commodo laborum nostrud. Anim minim occaecat est est minim. + + 2014-12-13T11:30:23 -03:00 + strawberry +
+ + 27 + 7a85d617-ccb4-4430-ab01-6c686763f028 + true + $2,929.09 + http://placehold.it/32x32 + 26 + blue + Rebekah + Sutton + female + ENTROPIX + rebekahsutton@entropix.com + +1 (985) 455-2862 +
938 Elmwood Avenue, Roulette, Kentucky, 5161
+ Aliqua exercitation ad nostrud et exercitation amet quis cupidatat esse nostrud proident. Ullamco voluptate ex minim consectetur ea cupidatat in mollit reprehenderit voluptate labore sint laboris. Minim cillum et incididunt pariatur amet do esse. Amet irure elit deserunt quis culpa ut deserunt minim proident cupidatat nisi consequat ipsum. + + 2015-07-20T05:07:54 -03:00 + apple +
+ + 28 + c152e649-b500-4b1f-8aeb-5bad7a4a8551 + false + $2,395.53 + http://placehold.it/32x32 + 32 + green + Cohen + Hines + male + TROPOLI + cohenhines@tropoli.com + +1 (880) 597-3560 +
213 Matthews Place, Frystown, Oklahoma, 5387
+ Deserunt deserunt dolor ex pariatur dolore sunt labore minim deserunt. Tempor non et officia sint culpa quis consectetur pariatur elit sunt. Anim consequat velit exercitation eiusmod aute elit minim velit. Excepteur nulla excepteur duis eiusmod anim reprehenderit officia est ea aliqua nisi deserunt officia eiusmod. Officia enim adipisicing mollit et enim quis magna ea. Officia velit deserunt minim qui. Commodo culpa pariatur eu aliquip voluptate culpa ullamco sit minim laboris fugiat sit. + + 2015-01-25T10:06:18 -03:00 + strawberry +
+ + 29 + fac77e74-c8b0-4c32-88c9-b0a43537ce0a + false + $3,095.95 + http://placehold.it/32x32 + 34 + blue + Clarissa + Henry + female + CENTREE + clarissahenry@centree.com + +1 (898) 540-2363 +
377 Bainbridge Street, Thornport, Virginia, 5454
+ Nostrud enim ea ad reprehenderit tempor ullamco exercitation. Elit in voluptate pariatur sit nisi occaecat laboris esse ipsum. Mollit elit et deserunt ea laboris sunt est amet culpa laboris occaecat ipsum sunt sunt. + + 2014-05-10T11:36:09 -03:00 + strawberry +
+ + 30 + 5adde77d-5aac-4b37-b3a5-aa3bf7b0ac54 + true + $2,549.66 + http://placehold.it/32x32 + 32 + green + Dickson + Silva + male + VORTEXACO + dicksonsilva@vortexaco.com + +1 (920) 473-2187 +
301 Dover Street, Marion, Maryland, 130
+ Ipsum aliqua proident ullamco laboris eu occaecat deserunt. Amet ut adipisicing sint veniam dolore aliquip est mollit ex officia esse eiusmod veniam. Dolore magna minim aliquip sit deserunt. Nostrud occaecat dolore aliqua aliquip voluptate aliquip ad adipisicing. + + 2014-04-10T07:40:13 -03:00 + strawberry +
+ + 31 + 66a32762-e090-4a22-b33d-1de4c5dec09a + true + $2,652.55 + http://placehold.it/32x32 + 37 + green + Palmer + Scott + male + JETSILK + palmerscott@jetsilk.com + +1 (856) 402-3448 +
168 Louise Terrace, Clay, Guam, 2096
+ Elit fugiat commodo laborum quis eu consequat. In velit magna sit fugiat non proident ipsum tempor eu. Consectetur exercitation labore eiusmod occaecat adipisicing irure consequat fugiat ullamco aliquip nostrud anim irure enim. Duis do amet cillum eiusmod eu sunt. Minim minim sunt sit sit enim velit sint tempor enim sint aliquip voluptate reprehenderit officia. Voluptate magna sit consequat adipisicing ut eu qui. + + 2015-10-30T12:21:05 -03:00 + banana +
+ + 32 + 49c236e7-89e5-4e9f-94cd-9f7aabf914dc + true + $3,659.51 + http://placehold.it/32x32 + 40 + blue + Christy + Knapp + female + XANIDE + christyknapp@xanide.com + +1 (825) 499-3933 +
914 Porter Avenue, Kirk, Massachusetts, 9088
+ Incididunt culpa dolore laborum cupidatat consequat. Aliquip cupidatat pariatur sit consectetur laboris labore anim labore. Est sint ut ipsum dolor ipsum nisi tempor in tempor aliqua. Aliquip labore cillum est consequat anim officia non reprehenderit ex duis elit. Amet aliqua eu ad velit incididunt ad ut magna. Culpa dolore qui anim consequat commodo aute. + + 2016-12-21T05:48:37 -03:00 + strawberry +
+ + 33 + 15affcba-ff5a-4b01-8795-1c6f636038de + false + $3,239.08 + http://placehold.it/32x32 + 36 + brown + Twila + Snow + female + LUNCHPAD + twilasnow@lunchpad.com + +1 (995) 538-2962 +
646 Hoyt Street, Tilleda, Michigan, 9656
+ Sint non sunt adipisicing sit laborum cillum magna nisi exercitation. Dolore officia esse dolore officia ea adipisicing amet ea nostrud elit cupidatat laboris. Proident culpa ullamco aute incididunt aute. Laboris et nulla incididunt consequat pariatur enim dolor incididunt adipisicing enim fugiat tempor ullamco. Amet est ullamco officia consectetur cupidatat non sunt laborum nisi in ex. Quis labore quis ipsum est nisi ex officia reprehenderit ad adipisicing fugiat. Labore fugiat ea dolore exercitation sint duis aliqua. + + 2014-08-16T08:31:28 -03:00 + apple +
+ + 34 + 077040a1-8c2a-4571-b3f9-89d10e6603f3 + true + $1,616.23 + http://placehold.it/32x32 + 34 + green + Kane + Sharp + male + BUZZOPIA + kanesharp@buzzopia.com + +1 (811) 473-3973 +
858 Alabama Avenue, Mulberry, Tennessee, 3103
+ Lorem proident sint minim anim commodo cillum. Eiusmod velit culpa commodo anim consectetur consectetur sint sint labore. Mollit consequat consectetur magna nulla veniam commodo eu ut et. Ut adipisicing qui ex consectetur officia sint ut fugiat ex velit cupidatat fugiat nisi non. Dolor minim mollit aliquip veniam nostrud. Magna eu aliqua Lorem aliquip. + + 2014-08-09T02:04:24 -03:00 + strawberry +
+
\ No newline at end of file diff --git a/hw4_test_coverage/hw4.md b/hw4_test_coverage/hw4.md new file mode 100755 index 0000000..b5bd6d6 --- /dev/null +++ b/hw4_test_coverage/hw4.md @@ -0,0 +1,30 @@ +Это комбинированное задание по тому, как отправлять запросы, получать ответы, работать с параметрами, хедерами, а так же писать тесты. + +Задание не сложное, основной объёма работы - написание разных условий и тестов, чтобы эти условия удовлетворить. + +У нас есть какой-то поисковый сервис: +* SearchClient - структура с методом FindUsers, который отправляет запрос во внешнюю систему и возвращает результат, немного преобразуя его +* SearchServer - своего рода внешняя система. Непосредственно занимается поиском данных в файле `dataset.xml`. В продакшене бы запускалась в виде отдельного веб-сервиса. + +Требуется: +* Написать функцию SearchServer в файле `client_test.go`, который вы будете запускать через тестовый сервер (`httptest.NewServer`, пример использования в `http/server_test.go`) +* Покрыть тестами метод FindUsers, чтобы покрытие было максимально возможным, а именно - 100%. Тесты писать в `client_test.go`. +* Так же требуется сгенерировать html-отчет с покрытием. См. пример построения тестового покрытия и отчета в соответствующей лекции (напоминаю, для этого ваш код должен находиться внутри GOPATH). + +Дополнительно: +* Данные для работы лежаит в файле `dataset.xml` +* * Параметр `query` ищет по полям `Name` и `About` +* Параметр `order_field` работает по полям `Id`, `Age`, `Name`, если пустой - то возвращаем по `Name`, если что-то другое - SearchServer ругается ошибкой. `Name` - это first_name + last_name из xml. +* Если `query` пустой, то делаем только сортировку, т.е. возвращаем все записи +* Код нужно писать в файле client_test.go. Там будут и ваши тесты, и функция SearchServer +* Как работать с XML смотрите в `xml/*` +* Запускать как `go test -cover` +* Построение покрытия: `go test -coverprofile=cover.out && go tool cover -html=cover.out -o cover.html`. Для построения покрытия ваш код должен находиться внутри GOPATH + +Советы: +* Документация https://golang.org/pkg/net/http/ может помочь +* Не запихивайте всё в 1 тест, напишите много маленьких +* Вы можете не ограничиваться функцией SearchServer при тестировании, если вам надо проверить какой-то совсем отдельный хитрый кейс, вроде ошибки. Но таких случаев будет немного. В основном всё будет в SearchServer +* Для покрытия тестом одной из ошибок придётся залезть в исходники функции, которая возвращает эту ошибку, и посмотреть при каких условиях работы или входных данных это происходит +* Производительность, горутины и прочий асинхрон в этом задании не нужны +* Не пытайтесь реализовать таймаут подключением к неизвестному IPшнику. В авто-грейдере вообще нет сети по соображением безопасности и такого рода подключения сразу возвращают ошибку.