github.com/sandwich-go/boost@v1.3.29/geom/int_test.go (about) 1 // Code generated by tools. DO NOT EDIT. 2 package geom 3 4 import ( 5 "fmt" 6 . "github.com/smartystreets/goconvey/convey" 7 "testing" 8 ) 9 10 func TestRectangleInt_SnakeRange(t *testing.T) { 11 HelixRectRangeFromCenterAndMarginInt(PtInt(2, 2), 2, func(p PointInt) bool { 12 t.Log(p.X, p.Y) 13 return true 14 }) 15 16 Convey("test intersection with line", t, func() { 17 x := PtInt8(1, 0) 18 y := PtInt8(1, 4) 19 z := x.Add(y) 20 So(z.X, ShouldEqual, 2) 21 So(z.Y, ShouldEqual, 4) 22 So(z.String(), ShouldEqual, "(2,4)") 23 So(z.Sub(x).Eq(y), ShouldBeTrue) 24 q := y.Mul(3) 25 So(q.X, ShouldEqual, y.X*3) 26 So(q.Y, ShouldEqual, y.Y*3) 27 So(q.Div(3).Eq(y), ShouldBeTrue) 28 var r1, r2, r3, r4 int8 = 1, 0, 5, 5 29 r := RectInt8(r1, r2, r3, r4) 30 So(x.In(r), ShouldBeTrue) 31 So(r.String(), ShouldEqual, fmt.Sprintf("(%d,%d)-(%d,%d)", r1, r2, r3, r4)) 32 var minX, maxX, minY, maxY int8 33 var reset = func() { minX, maxX, minY, maxY = 5, 0, 5, 0 } 34 var f = func(p PointInt8) bool { 35 if p.X < minX { 36 minX = p.X 37 } 38 if p.Y < minY { 39 minY = p.Y 40 } 41 if p.X > maxX { 42 maxX = p.X 43 } 44 if p.Y > maxY { 45 maxY = p.Y 46 } 47 return true 48 } 49 reset() 50 r.RangePoints(f) 51 So(minX, ShouldEqual, r1) 52 So(minY, ShouldEqual, r2) 53 So(maxX, ShouldEqual, r3) 54 So(maxY, ShouldEqual, r4) 55 reset() 56 r.RangePointsMinClosedMaxOpen(f) 57 So(minX, ShouldEqual, r1+1) 58 So(minY, ShouldEqual, r2+1) 59 So(maxX, ShouldEqual, r3) 60 So(maxY, ShouldEqual, r4) 61 reset() 62 r.RangePointsMinMaxClosed(f) 63 So(minX, ShouldEqual, r1+1) 64 So(minY, ShouldEqual, r2+1) 65 So(maxX, ShouldEqual, r3-1) 66 So(maxY, ShouldEqual, r4-1) 67 reset() 68 r.RangePointsMinOpenMaxClosed(f) 69 So(minX, ShouldEqual, r1) 70 So(minY, ShouldEqual, r2) 71 So(maxX, ShouldEqual, r3-1) 72 So(maxY, ShouldEqual, r4-1) 73 So(r.Dx(), ShouldEqual, r3-r1) 74 So(r.Dy(), ShouldEqual, r4-r2) 75 So(r.Size().Eq(PtInt8(r3-r1, r4-r2)), ShouldBeTrue) 76 rc := PtInt8(1, 1) 77 rr := r.Add(rc) 78 So(rr.Max.X, ShouldEqual, r.Max.X+rc.X) 79 So(rr.Max.Y, ShouldEqual, r.Max.Y+rc.Y) 80 So(rr.Min.X, ShouldEqual, r.Min.X+rc.X) 81 So(rr.Min.Y, ShouldEqual, r.Min.Y+rc.Y) 82 So(rr.Sub(rc).Eq(r), ShouldBeTrue) 83 ir := r.Inset(1) 84 So(ir.String(), ShouldEqual, fmt.Sprintf("(%d,%d)-(%d,%d)", r1+1, r2+1, r3-1, r4-1)) 85 So(r.Intersect(ir).Eq(ir), ShouldBeTrue) 86 So(r.Union(r.Inset(1)).Eq(r), ShouldBeTrue) 87 So(r.Empty(), ShouldBeFalse) 88 So(ZRInt8.Empty(), ShouldBeTrue) 89 So(r.Overlaps(ir), ShouldBeTrue) 90 So(r.Bounds().Eq(r), ShouldBeTrue) 91 So(ir.In(r), ShouldBeTrue) 92 So(ir.Expanded(rc).Eq(r), ShouldBeTrue) 93 So(ir.ExpandedByMargin(1).Eq(r), ShouldBeTrue) 94 95 rect := RectInt(0, 0, 3, 3) 96 So(rect.IntersectionWithLine(PtInt(1, 0), PtInt(1, 4)), ShouldBeTrue) // should be true 97 So(rect.IntersectionWithLine(PtInt(1, 0), PtInt(1, 3)), ShouldBeTrue) // should be true 98 So(rect.IntersectionWithLine(PtInt(1, 0), PtInt(1, 2)), ShouldBeTrue) // should be true 99 So(rect.IntersectionWithLine(PtInt(1, 0), PtInt(1, 1)), ShouldBeTrue) // should be true 100 So(rect.IntersectionWithLine(PtInt(2, 0), PtInt(2, 2)), ShouldBeTrue) // should be true 101 So(rect.IntersectionWithLine(PtInt(0, 2), PtInt(1, 2)), ShouldBeTrue) // should be true 102 So(rect.IntersectionWithLine(PtInt(0, 1), PtInt(3, 1)), ShouldBeTrue) // should be true 103 So(rect.IntersectionWithLine(PtInt(0, 0), PtInt(0, 1)), ShouldBeFalse) // should be false 104 So(rect.IntersectionWithLine(PtInt(0, 0), PtInt(0, 2)), ShouldBeFalse) // should be false 105 So(rect.IntersectionWithLine(PtInt(0, 0), PtInt(0, 3)), ShouldBeFalse) // should be false 106 So(rect.IntersectionWithLine(PtInt(0, 0), PtInt(0, 4)), ShouldBeFalse) // should be false 107 So(rect.IntersectionWithLine(PtInt(0, 0), PtInt(1, 0)), ShouldBeFalse) // should be false 108 So(rect.IntersectionWithLine(PtInt(0, 0), PtInt(2, 0)), ShouldBeFalse) // should be false 109 So(rect.IntersectionWithLine(PtInt(1, 4), PtInt(2, 4)), ShouldBeFalse) // should be false 110 So(rect.IntersectionWithLine(PtInt(0, 3), PtInt(3, 3)), ShouldBeFalse) // should be false 111 So(rect.IntersectionWithLine(PtInt(1, 3), PtInt(2, 4)), ShouldBeFalse) // should be false 112 }) 113 }