From d83cfa5ea1e5fb409262896b3c70d2e2c3b44a37 Mon Sep 17 00:00:00 2001 From: Nate Jones Date: Fri, 25 Apr 2014 06:47:06 -0700 Subject: [PATCH] refactored test to be more flexible --- images_test.go | 61 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/images_test.go b/images_test.go index 13a86ea..7aaa4b7 100644 --- a/images_test.go +++ b/images_test.go @@ -1,24 +1,59 @@ package main import ( + "regexp" "testing" ) -func Test_Dot(t *testing.T) { - json := `[{ "VirtualSize": 662553464, "Size": 662553464, "RepoTags": [ ":" ], "ParentId": "", "Id": "4c1208b690c68af3476b437e7bc2bcc460f062bda2094d2d8f21a7e70368d358", "Created": 1386114144 }]` - - expectedResult := `digraph docker { - base -> "4c1208b690c6" [style=invis] - base [style=invisible] +type RunTest struct { + json string + regexps []string } -` - im, _ := parseJSON([]byte(json)) - result := jsonToDot(im) +func Test_Dot(t *testing.T) { + allMatch := []string{ + "(?s)digraph docker {.*}", + `(?m) base \[style=invisible\]`, + } + allRegex := compileRegexps(t, allMatch) - if result == expectedResult { - t.Log("Pass") - } else { - t.Errorf("|%s| and |%s| are different.", result, expectedResult) + dotTests := []RunTest{ + RunTest{ + json: `[{ "VirtualSize": 662553464, "Size": 662553464, "RepoTags": [ ":" ], "ParentId": "", "Id": "4c1208b690c68af3476b437e7bc2bcc460f062bda2094d2d8f21a7e70368d358", "Created": 1386114144 }]`, + regexps: []string{ + `base -> "4c1208b690c6"`, + }, + }, + } + + for _, dotTest := range dotTests { + im, _ := parseJSON([]byte(dotTest.json)) + result := jsonToDot(im) + + for _, regexp := range allRegex { + if !regexp.MatchString(result) { + t.Fatalf("images dot content '%s' did not match regexp '%s'", result, regexp) + } + } + + for _, regexp := range compileRegexps(t, dotTest.regexps) { + if !regexp.MatchString(result) { + t.Fatalf("images dot content '%s' did not match regexp '%s'", result, regexp) + } + } } } + +func compileRegexps(t *testing.T, regexpStrings []string) []*regexp.Regexp { + + compiledRegexps := []*regexp.Regexp{} + for _, regexpString := range regexpStrings { + regexp, err := regexp.Compile(regexpString) + if err != nil { + t.Errorf("Error in regex string '%s': %s", regexpString, err) + } + compiledRegexps = append(compiledRegexps, regexp) + } + + return compiledRegexps +}