Skip to content
This repository has been archived by the owner on May 31, 2024. It is now read-only.

Commit

Permalink
Add test for clickOnBody.go
Browse files Browse the repository at this point in the history
  • Loading branch information
GaryBrownEEngr committed Nov 30, 2023
1 parent 45d2968 commit f36a4bd
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 6 deletions.
2 changes: 1 addition & 1 deletion examples/fallingturtles/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func simStartFunc(sim models.Scratch) {
s.Angle(-90)

s.Pos(0, 0)
b.AddCirleBody(0, 0, 32)
b.AddCircleBody(0, 0, 32)
s.Z(1)
// s.Visible(true)

Expand Down
2 changes: 1 addition & 1 deletion examples/play2/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func t2(sim models.Scratch) {
s.Z(0)
s.Visible(true)
cb := s.GetClickBody()
cb.AddCirleBody(0, 0, 32)
cb.AddCircleBody(0, 0, 32)

justPressedChan := sim.SubscribeToJustPressedUserInput()

Expand Down
4 changes: 2 additions & 2 deletions examples/play3/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ func simStartFunc(sim models.Scratch) {
s.Scale(1)

s.Pos(0, 0)
b.AddCirleBody(32, 0, 32)
b.AddCircleBody(32, 0, 32)
b.AddRectangleBody(-300, 0, -5, 5)
// body.AddCirleBody(-32, 0, 32)
// body.AddCircleBody(-32, 0, 32)
s.Z(0)
s.Visible(true)

Expand Down
4 changes: 4 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,22 @@ require (
github.com/fogleman/gg v1.3.0
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
github.com/hajimehoshi/ebiten/v2 v2.6.3
github.com/stretchr/testify v1.8.4
golang.org/x/image v0.14.0
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/ebitengine/oto/v3 v3.1.0 // indirect
github.com/ebitengine/purego v0.5.0 // indirect
github.com/hajimehoshi/go-mp3 v0.3.4 // indirect
github.com/jezek/xgb v1.1.0 // indirect
github.com/jfreymuth/oggvorbis v1.0.5 // indirect
github.com/jfreymuth/vorbis v1.0.2 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/exp/shiny v0.0.0-20230817173708-d852ddb80c63 // indirect
golang.org/x/mobile v0.0.0-20230922142353-e2f452493d57 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.12.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
10 changes: 10 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/ebitengine/oto/v3 v3.1.0 h1:9tChG6rizyeR2w3vsygTTTVVJ9QMMyu00m2yBOCch6U=
github.com/ebitengine/oto/v3 v3.1.0/go.mod h1:IK1QTnlfZK2GIB6ziyECm433hAdTaPpOsGMLhEyEGTg=
github.com/ebitengine/purego v0.5.0 h1:JrMGKfRIAM4/QVKaesIIT7m/UVjTj5GYhRSQYwfVdpo=
Expand All @@ -17,6 +19,10 @@ github.com/jfreymuth/oggvorbis v1.0.5 h1:u+Ck+R0eLSRhgq8WTmffYnrVtSztJcYrl588DM4
github.com/jfreymuth/oggvorbis v1.0.5/go.mod h1:1U4pqWmghcoVsCJJ4fRBKv9peUJMBHixthRlBeD6uII=
github.com/jfreymuth/vorbis v1.0.2 h1:m1xH6+ZI4thH927pgKD8JOH4eaGRm18rEE9/0WKjvNE=
github.com/jfreymuth/vorbis v1.0.2/go.mod h1:DoftRo4AznKnShRl1GxiTFCseHr4zR9BN3TWXyuzrqQ=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
golang.org/x/exp/shiny v0.0.0-20230817173708-d852ddb80c63 h1:3AGKexOYqL+ztdWdkB1bDwXgPBuTS/S8A4WzuTvJ8Cg=
golang.org/x/exp/shiny v0.0.0-20230817173708-d852ddb80c63/go.mod h1:UH99kUObWAZkDnWqppdQe5ZhPYESUw8I0zVV1uWBR+0=
golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
Expand All @@ -28,3 +34,7 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
2 changes: 1 addition & 1 deletion models/clickOnBody.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package models

type ClickOnBody interface {
AddCirleBody(x, y, radius float64)
AddCircleBody(x, y, radius float64)
AddRectangleBody(x1, x2, y1, y2 float64)

IsMouseClickInBody(x, y float64) bool
Expand Down
2 changes: 1 addition & 1 deletion tools/clickOnBody.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func NewTouchCollisionBody() *ClickOnBody {
return ret
}

func (s *ClickOnBody) AddCirleBody(x, y, radius float64) {
func (s *ClickOnBody) AddCircleBody(x, y, radius float64) {
newC := circle{
x: x,
y: y,
Expand Down
51 changes: 51 additions & 0 deletions tools/clickOnBody_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package tools

import (
"math"
"testing"

"github.com/stretchr/testify/require"
)

func TestClickOnBody(t *testing.T) {
b := NewTouchCollisionBody()
require.NotNil(t, b)

b.AddCircleBody(-10, 0, 5)
b.AddRectangleBody(10, 20, 0, 10)

// Add an invalid rec
b.AddRectangleBody(10, -10, 10, -10)

require.False(t, b.IsMouseClickInBody(100, 0))
require.False(t, b.IsMouseClickInBody(0, 0))
require.False(t, b.IsMouseClickInBody(-4, 0))
require.True(t, b.IsMouseClickInBody(-6, 0))

require.False(t, b.IsMouseClickInBody(9.9, 1))
require.True(t, b.IsMouseClickInBody(10.1, 1))

// Now move and rotate
b.Pos(10, 10)
b.Angle(-math.Pi / 2)

require.False(t, b.IsMouseClickInBody(100, 0))
require.False(t, b.IsMouseClickInBody(0, 0))
require.False(t, b.IsMouseClickInBody(10+0, 10+4.9))
require.True(t, b.IsMouseClickInBody(10+0, 10+5.1))

require.False(t, b.IsMouseClickInBody(10+1, 10-9.9))
require.True(t, b.IsMouseClickInBody(10+1, 10-10.1))

x, y := b.GetMousePosRelativeToOriginalSprite(20, 10)
require.InDelta(t, 0, x, 1e-6)
require.InDelta(t, 10, y, 1e-6)

// test clone
b2 := b.Clone()
require.False(t, b2.IsMouseClickInBody(10+0, 10+4.9))
require.True(t, b2.IsMouseClickInBody(10+0, 10+5.1))

require.False(t, b2.IsMouseClickInBody(10+1, 10-9.9))
require.True(t, b2.IsMouseClickInBody(10+1, 10-10.1))
}

0 comments on commit f36a4bd

Please sign in to comment.