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  }