go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/quad/range_test.go (about) 1 /* 2 3 Copyright (c) 2023 - Present. Will Charczuk. All rights reserved. 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository. 5 6 */ 7 8 package quad 9 10 import ( 11 "fmt" 12 "testing" 13 14 "go.charczuk.com/sdk/assert" 15 ) 16 17 func Test_RangeFromPoints(t *testing.T) { 18 qr := RangeFromPoints(Point{0, 0}, Point{1, 2}) 19 assert.ItsEqual(t, 0.5, qr.Center.X) 20 assert.ItsEqual(t, 1, qr.Center.Y) 21 assert.ItsEqual(t, 0.5, qr.HalfDimensions.Width) 22 assert.ItsEqual(t, 1, qr.HalfDimensions.Height) 23 } 24 25 func Test_RangeFromPoints_offset(t *testing.T) { 26 qr := RangeFromPoints(Point{1, 1}, Point{2, 3}) 27 assert.ItsEqual(t, 1.5, qr.Center.X) 28 assert.ItsEqual(t, 2, qr.Center.Y) 29 assert.ItsEqual(t, 0.5, qr.HalfDimensions.Width) 30 assert.ItsEqual(t, 1, qr.HalfDimensions.Height) 31 } 32 33 func Test_Range_Contains(t *testing.T) { 34 qr := RangeFromPoints(Point{1, 1}, Point{2, 3}) 35 36 assert.ItsEqual(t, true, qr.ContainsPoint(Point{1, 2})) 37 assert.ItsEqual(t, true, qr.ContainsPoint(Point{1.5, 1})) 38 } 39 40 func Test_Range_Intersects(t *testing.T) { 41 testCases := [...]struct { 42 R0 Range 43 R1 Range 44 Expected bool 45 }{ 46 { 47 RangeFromPoints(Point{0, 0}, Point{1, 1}), 48 RangeFromPoints(Point{0.5, 0.5}, Point{1.5, 1.5}), 49 true, 50 }, 51 { 52 RangeFromPoints(Point{0.5, 0.5}, Point{1.5, 1.5}), 53 RangeFromPoints(Point{0, 0}, Point{1, 1}), 54 true, 55 }, 56 { 57 RangeFromPoints(Point{0, 10}, Point{10, 10}), 58 RangeFromPoints(Point{5, 5}, Point{5, 15}), 59 true, 60 }, 61 } 62 63 for index, tc := range testCases { 64 actual := tc.R0.Intersects(tc.R1) 65 assert.ItsEqual(t, actual, tc.Expected, fmt.Sprintf("test case=%d", index)) 66 } 67 }