]> xenbits.xensource.com Git - people/gdunlap/xsatool.git/commitdiff
Add missing file
authorGeorge Dunlap <george.dunlap@citrix.com>
Tue, 31 Jul 2018 13:56:51 +0000 (14:56 +0100)
committerGeorge Dunlap <george.dunlap@citrix.com>
Tue, 31 Jul 2018 13:56:51 +0000 (14:56 +0100)
Signed-off-by: George Dunlap <george.dunlap@citrix.com>
xenversion_test.go [new file with mode: 0644]

diff --git a/xenversion_test.go b/xenversion_test.go
new file mode 100644 (file)
index 0000000..c16a349
--- /dev/null
@@ -0,0 +1,235 @@
+package main
+
+import "testing"
+
+
+
+func TestAverage(t *testing.T) {
+       FilterNot410 := func(v XenVersion) bool { return v != "4.10" }
+       
+       tests := []struct {
+               s string;
+               valid XenVersionSlice;
+               filter func(v XenVersion) bool;
+               result XenVersionSlice;
+               isError bool;
+       }{
+               {
+                       "all",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9"},
+                       nil,
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9"},
+                       false,
+               },
+               {
+                       "4.11",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9"},
+                       nil,
+                       XenVersionSlice{"4.11"},
+                       false,
+               },
+               {
+                       "master..4.8",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       false,
+               },
+               {
+                       "4.11..4.8",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       XenVersionSlice{"4.11", "4.10", "4.9", "4.8"},
+                       false,
+               },
+               {
+                       "4.11..4.9",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       XenVersionSlice{"4.11", "4.10", "4.9"},
+                       false,
+               },
+               {
+                       "..4.9",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9"},
+                       false,
+               },
+               {
+                       "4.11..",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       XenVersionSlice{"4.11", "4.10", "4.9", "4.8"},
+                       false,
+               },
+               {
+                       "4.9..4.11",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       nil,
+                       true,
+               },
+               {
+                       "4.6",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       nil,
+                       true,
+               },
+               {
+                       "4.9..4.7",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       nil,
+                       nil,
+                       true,
+               },
+               {
+                       "4.11..4.9",
+                       XenVersionSlice{"master", "4.10", "4.9", "4.8"},
+                       nil,
+                       nil,
+                       true,
+               },
+
+               // Same tests, with no 'valid' versions
+               {
+                       "all", nil, nil, nil, true,
+               },
+               {
+                       "4.11", nil, nil,
+                       XenVersionSlice{"4.11"},
+                       false,
+               },
+               {
+                       // NB this can never work because we don't
+                       // know the highest version to start with
+                       "master..4.8", nil, nil, nil, true,
+               },
+               {
+                       // FIXME: Unimplemented
+                       "4.11..4.8", nil, nil,
+                       nil, true,
+                       // XenVersionSlice{"4.11", "4.10", "4.9", "4.8"}, false,
+
+               },
+               {
+                       // FIXME: Unimplemented
+                       "4.11..4.9", nil, nil,
+                       nil, true,
+                       // XenVersionSlice{"4.11", "4.10", "4.9"}, false,
+               },
+               {
+                       "..4.9", nil, nil, nil, true,
+               },
+               {
+                       "4.11..", nil, nil, nil, true,
+               },
+               {
+                       "4.9..4.11", nil, nil, nil, true,
+               },
+
+               // Same tests, with filter
+               {
+                       "all",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9"},
+                       FilterNot410,
+                       XenVersionSlice{"master", "4.11", "4.9"},
+                       false,
+               },
+               {
+                       "4.11",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9"},
+                       FilterNot410,
+                       XenVersionSlice{"4.11"},
+                       false,
+               },
+               {
+                       "4.10",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9"},
+                       FilterNot410,
+                       nil,
+                       true,
+               },
+               {
+                       "master..4.8",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       XenVersionSlice{"master", "4.11", "4.9", "4.8"},
+                       false,
+               },
+               {
+                       "4.11..4.8",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       XenVersionSlice{"4.11", "4.9", "4.8"},
+                       false,
+               },
+               {
+                       "4.11..4.9",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       XenVersionSlice{"4.11", "4.9"},
+                       false,
+               },
+               {
+                       "..4.9",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       XenVersionSlice{"master", "4.11", "4.9"},
+                       false,
+               },
+               {
+                       "4.11..",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       XenVersionSlice{"4.11", "4.9", "4.8"},
+                       false,
+               },
+               {
+                       "4.9..4.11",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       nil,
+                       true,
+               },
+               {
+                       "4.6",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       nil,
+                       true,
+               },
+               {
+                       "4.9..4.7",
+                       XenVersionSlice{"master", "4.11", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       nil,
+                       true,
+               },
+               {
+                       "4.11..4.9",
+                       XenVersionSlice{"master", "4.10", "4.9", "4.8"},
+                       FilterNot410,
+                       nil,
+                       true,
+               },
+       }
+
+       for _, tc := range tests {
+               t.Logf("Testing: %v %v %v", tc.s, tc.valid, tc.filter != nil)
+               result, err := VersionsFromString(tc.s, tc.valid, tc.filter)
+               isError := (err != nil)
+               if isError != tc.isError || !result.IsEqual(tc.result) {
+                       if err != nil {
+                               t.Errorf("Test failed: wanted [%v %v], got [%v, %v]",
+                                       tc.result, tc.isError,
+                                       result, err)
+                       } else {
+                               t.Errorf("Test failed: wanted [%v %v], got [%v, %v]",
+                                       tc.result, tc.isError,
+                                       result, isError)
+                       }
+               }
+       }
+}