~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/gopkg.in/juju/jujusvg.v1/hull_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package jujusvg
 
2
 
 
3
import (
 
4
        "image"
 
5
 
 
6
        gc "gopkg.in/check.v1"
 
7
)
 
8
 
 
9
type HullSuite struct{}
 
10
 
 
11
var _ = gc.Suite(&HullSuite{})
 
12
 
 
13
func (s *HullSuite) TestGetPointOutside(c *gc.C) {
 
14
        var tests = []struct {
 
15
                about    string
 
16
                vertices []image.Point
 
17
                expected image.Point
 
18
        }{
 
19
                {
 
20
                        about:    "zero vertices",
 
21
                        vertices: []image.Point{},
 
22
                        expected: image.Point{0, 0},
 
23
                },
 
24
                {
 
25
                        about:    "one vertex",
 
26
                        vertices: []image.Point{{0, 0}},
 
27
                        expected: image.Point{10, 10},
 
28
                },
 
29
                {
 
30
                        about:    "two vertices",
 
31
                        vertices: []image.Point{{0, 0}, {10, 10}},
 
32
                        expected: image.Point{20, 20},
 
33
                },
 
34
                {
 
35
                        about:    "three vertices (convexHull fall through)",
 
36
                        vertices: []image.Point{{0, 0}, {0, 10}, {10, 0}},
 
37
                        expected: image.Point{10, 20},
 
38
                },
 
39
                {
 
40
                        about:    "four vertices",
 
41
                        vertices: []image.Point{{0, 0}, {0, 10}, {10, 0}, {10, 10}},
 
42
                        expected: image.Point{20, 20},
 
43
                },
 
44
        }
 
45
        for _, test := range tests {
 
46
                c.Log(test.about)
 
47
                c.Assert(getPointOutside(test.vertices, image.Point{10, 10}), gc.Equals, test.expected)
 
48
        }
 
49
}
 
50
 
 
51
func (s *HullSuite) TestConvexHull(c *gc.C) {
 
52
        // Zero vertices
 
53
        vertices := []image.Point{}
 
54
        c.Assert(convexHull(vertices), gc.DeepEquals, []image.Point{{0, 0}})
 
55
 
 
56
        // Identities
 
57
        vertices = []image.Point{{1, 1}}
 
58
        c.Assert(convexHull(vertices), gc.DeepEquals, vertices)
 
59
 
 
60
        vertices = []image.Point{{1, 1}, {2, 2}}
 
61
        c.Assert(convexHull(vertices), gc.DeepEquals, vertices)
 
62
 
 
63
        vertices = []image.Point{{1, 1}, {2, 2}, {1, 2}}
 
64
        c.Assert(convexHull(vertices), gc.DeepEquals, vertices)
 
65
 
 
66
        // > 3 vertices
 
67
        vertices = []image.Point{}
 
68
        for i := 0; i < 100; i++ {
 
69
                vertices = append(vertices, image.Point{i / 10, i % 10})
 
70
        }
 
71
        c.Assert(convexHull(vertices), gc.DeepEquals, []image.Point{
 
72
                {0, 0},
 
73
                {9, 0},
 
74
                {9, 9},
 
75
                {0, 9},
 
76
        })
 
77
}