mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
Update assumptions about PLC interface.
This commit is contained in:
@@ -20,10 +20,10 @@ type Vault struct {
|
||||
}
|
||||
|
||||
// Updates the state of the vault given the state of the individual power cube sensors.
|
||||
func (vault *Vault) UpdateCubes(forceCubes, levitateCubes, boostCubes [3]bool) {
|
||||
vault.numForceCubes = countCubes(forceCubes)
|
||||
vault.numLevitateCubes = countCubes(levitateCubes)
|
||||
vault.numBoostCubes = countCubes(boostCubes)
|
||||
func (vault *Vault) UpdateCubes(forceDistance, levitateDistance, boostDistance uint16) {
|
||||
vault.numForceCubes = countCubes(forceDistance)
|
||||
vault.numLevitateCubes = countCubes(levitateDistance)
|
||||
vault.numBoostCubes = countCubes(boostDistance)
|
||||
}
|
||||
|
||||
// Updates the state of the vault given the state of the power up buttons.
|
||||
@@ -48,14 +48,15 @@ func (vault *Vault) GetNumCubes() int {
|
||||
return vault.numForceCubes + vault.numLevitateCubes + vault.numBoostCubes
|
||||
}
|
||||
|
||||
func countCubes(cubes [3]bool) int {
|
||||
if cubes[0] {
|
||||
if cubes[1] {
|
||||
if cubes[2] {
|
||||
return 3
|
||||
}
|
||||
return 2
|
||||
}
|
||||
func countCubes(distance uint16) int {
|
||||
// TODO(patrick): Update with real values once there is a physical setup to test with.
|
||||
if distance >= 3000 {
|
||||
return 3
|
||||
}
|
||||
if distance >= 2000 {
|
||||
return 2
|
||||
}
|
||||
if distance >= 1000 {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
|
||||
@@ -10,49 +10,50 @@ import (
|
||||
)
|
||||
|
||||
func TestVaultNumCubes(t *testing.T) {
|
||||
// TODO(patrick): Update with real values once there is a physical setup to test with.
|
||||
vault := Vault{}
|
||||
assert.Equal(t, 0, vault.GetNumCubes())
|
||||
|
||||
vault.UpdateCubes([3]bool{true, false, false}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(1000, 0, 0)
|
||||
assert.Equal(t, 1, vault.GetNumCubes())
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{true, false, true}, [3]bool{true, false, false})
|
||||
vault.UpdateCubes(0, 1000, 1000)
|
||||
assert.Equal(t, 2, vault.GetNumCubes())
|
||||
|
||||
vault.UpdateCubes([3]bool{false, true, true}, [3]bool{false, false, true}, [3]bool{true, true, false})
|
||||
vault.UpdateCubes(0, 0, 2000)
|
||||
assert.Equal(t, 2, vault.GetNumCubes())
|
||||
|
||||
vault.UpdateCubes([3]bool{true, true, false}, [3]bool{true, true, false}, [3]bool{true, true, true})
|
||||
vault.UpdateCubes(2000, 2000, 3000)
|
||||
assert.Equal(t, 7, vault.GetNumCubes())
|
||||
|
||||
vault.UpdateCubes([3]bool{true, true, true}, [3]bool{true, true, true}, [3]bool{true, true, true})
|
||||
vault.UpdateCubes(3000, 3000, 3000)
|
||||
assert.Equal(t, 9, vault.GetNumCubes())
|
||||
}
|
||||
|
||||
func TestVaultLevitate(t *testing.T) {
|
||||
vault := Vault{}
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 0, 0)
|
||||
vault.UpdateButtons(false, true, false, time.Now())
|
||||
assert.False(t, vault.LevitatePlayed)
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{true, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 1000, 0)
|
||||
vault.UpdateButtons(false, true, false, time.Now())
|
||||
assert.False(t, vault.LevitatePlayed)
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{true, true, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 2000, 0)
|
||||
vault.UpdateButtons(false, true, false, time.Now())
|
||||
assert.False(t, vault.LevitatePlayed)
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{true, true, true}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 3000, 0)
|
||||
vault.UpdateButtons(true, false, true, time.Now())
|
||||
assert.False(t, vault.LevitatePlayed)
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{true, true, true}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 3000, 0)
|
||||
vault.UpdateButtons(false, true, false, time.Now())
|
||||
assert.True(t, vault.LevitatePlayed)
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{true, true, true}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 3000, 0)
|
||||
vault.UpdateButtons(false, false, false, time.Now())
|
||||
assert.True(t, vault.LevitatePlayed)
|
||||
}
|
||||
@@ -61,16 +62,16 @@ func TestVaultForce(t *testing.T) {
|
||||
vault := Vault{alliance: blueAlliance}
|
||||
ResetPowerUps()
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 0, 0)
|
||||
vault.UpdateButtons(true, false, false, time.Now())
|
||||
assert.Nil(t, vault.ForcePowerUp)
|
||||
|
||||
vault.UpdateCubes([3]bool{true, true, true}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(3000, 0, 0)
|
||||
vault.UpdateButtons(false, true, true, time.Now())
|
||||
assert.Nil(t, vault.ForcePowerUp)
|
||||
|
||||
// Activation with one cube.
|
||||
vault.UpdateCubes([3]bool{true, false, false}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(1000, 0, 0)
|
||||
vault.UpdateButtons(true, false, false, time.Now())
|
||||
if assert.NotNil(t, vault.ForcePowerUp) {
|
||||
assert.Equal(t, blueAlliance, vault.ForcePowerUp.alliance)
|
||||
@@ -81,7 +82,7 @@ func TestVaultForce(t *testing.T) {
|
||||
// Activation with two cubes.
|
||||
vault = Vault{alliance: redAlliance}
|
||||
ResetPowerUps()
|
||||
vault.UpdateCubes([3]bool{true, true, false}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(2000, 0, 0)
|
||||
vault.UpdateButtons(true, false, false, time.Now())
|
||||
if assert.NotNil(t, vault.ForcePowerUp) {
|
||||
assert.Equal(t, redAlliance, vault.ForcePowerUp.alliance)
|
||||
@@ -92,7 +93,7 @@ func TestVaultForce(t *testing.T) {
|
||||
// Activation with three cubes.
|
||||
vault = Vault{alliance: blueAlliance}
|
||||
ResetPowerUps()
|
||||
vault.UpdateCubes([3]bool{true, true, true}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(3000, 0, 0)
|
||||
vault.UpdateButtons(true, false, false, time.Now())
|
||||
assert.NotNil(t, vault.ForcePowerUp)
|
||||
if assert.NotNil(t, vault.ForcePowerUp) {
|
||||
@@ -101,7 +102,7 @@ func TestVaultForce(t *testing.T) {
|
||||
assert.Equal(t, 3, vault.ForcePowerUp.level)
|
||||
}
|
||||
|
||||
vault.UpdateCubes([3]bool{true, true, true}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(3000, 0, 0)
|
||||
vault.UpdateButtons(false, false, false, time.Now())
|
||||
assert.NotNil(t, vault.ForcePowerUp)
|
||||
}
|
||||
@@ -110,16 +111,16 @@ func TestVaultBoost(t *testing.T) {
|
||||
vault := Vault{alliance: blueAlliance}
|
||||
ResetPowerUps()
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{false, false, false})
|
||||
vault.UpdateCubes(0, 0, 0)
|
||||
vault.UpdateButtons(false, false, true, time.Now())
|
||||
assert.Nil(t, vault.BoostPowerUp)
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{true, true, true})
|
||||
vault.UpdateCubes(0, 0, 3000)
|
||||
vault.UpdateButtons(true, true, false, time.Now())
|
||||
assert.Nil(t, vault.BoostPowerUp)
|
||||
|
||||
// Activation with one cube.
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{true, false, false})
|
||||
vault.UpdateCubes(0, 0, 1000)
|
||||
vault.UpdateButtons(false, false, true, time.Now())
|
||||
if assert.NotNil(t, vault.BoostPowerUp) {
|
||||
assert.Equal(t, blueAlliance, vault.BoostPowerUp.alliance)
|
||||
@@ -130,7 +131,7 @@ func TestVaultBoost(t *testing.T) {
|
||||
// Activation with two cubes.
|
||||
vault = Vault{alliance: redAlliance}
|
||||
ResetPowerUps()
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{true, true, false})
|
||||
vault.UpdateCubes(0, 0, 2000)
|
||||
vault.UpdateButtons(false, false, true, time.Now())
|
||||
if assert.NotNil(t, vault.BoostPowerUp) {
|
||||
assert.Equal(t, redAlliance, vault.BoostPowerUp.alliance)
|
||||
@@ -141,7 +142,7 @@ func TestVaultBoost(t *testing.T) {
|
||||
// Activation with three cubes.
|
||||
vault = Vault{alliance: blueAlliance}
|
||||
ResetPowerUps()
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{true, true, true})
|
||||
vault.UpdateCubes(0, 0, 3000)
|
||||
vault.UpdateButtons(false, false, true, time.Now())
|
||||
assert.NotNil(t, vault.BoostPowerUp)
|
||||
if assert.NotNil(t, vault.BoostPowerUp) {
|
||||
@@ -150,7 +151,7 @@ func TestVaultBoost(t *testing.T) {
|
||||
assert.Equal(t, 3, vault.BoostPowerUp.level)
|
||||
}
|
||||
|
||||
vault.UpdateCubes([3]bool{false, false, false}, [3]bool{false, false, false}, [3]bool{true, true, true})
|
||||
vault.UpdateCubes(0, 0, 3000)
|
||||
vault.UpdateButtons(false, false, false, time.Now())
|
||||
assert.NotNil(t, vault.BoostPowerUp)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user