99 lines
3.1 KiB
Go
99 lines
3.1 KiB
Go
package object_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/inkyblackness/hacked/ss1/content/object"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestLightTypes(t *testing.T) {
|
|
assert.Equal(t, 4, len(object.LightTypes()))
|
|
}
|
|
|
|
func TestLightTypeString(t *testing.T) {
|
|
tt := []struct {
|
|
lightType object.LightType
|
|
expected string
|
|
}{
|
|
{lightType: object.LightTypeSimple, expected: "Simple"},
|
|
{lightType: object.LightTypeComplex, expected: "Complex"},
|
|
{lightType: object.LightTypeIgnore, expected: "Ignore"},
|
|
{lightType: object.LightTypeDeferred, expected: "Deferred"},
|
|
|
|
{lightType: object.LightType(255), expected: "Unknown 0xFF"},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
result := tc.lightType.String()
|
|
assert.Equal(t, tc.expected, result, fmt.Sprintf("Failed for 0x%02X", int(tc.lightType)))
|
|
}
|
|
}
|
|
|
|
func TestUseModes(t *testing.T) {
|
|
assert.Equal(t, 3, len(object.UseModes()))
|
|
}
|
|
|
|
func TestUseModeString(t *testing.T) {
|
|
tt := []struct {
|
|
useMode object.UseMode
|
|
expected string
|
|
}{
|
|
{useMode: object.UseModePickup, expected: "Pickup"},
|
|
{useMode: object.UseModeUse, expected: "Use"},
|
|
{useMode: object.UseModeNull, expected: "Null"},
|
|
|
|
{useMode: object.UseMode(255), expected: "Unknown 0xFF"},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
result := tc.useMode.String()
|
|
assert.Equal(t, tc.expected, result, fmt.Sprintf("Failed for 0x%02X", int(tc.useMode)))
|
|
}
|
|
}
|
|
|
|
func TestCommonFlagField(t *testing.T) {
|
|
for _, useMode := range object.UseModes() {
|
|
for _, lightType := range object.LightTypes() {
|
|
for _, flag := range object.CommonFlags() {
|
|
key := fmt.Sprintf("%v:%v:%v", useMode, lightType, flag)
|
|
field := object.CommonFlagField(0).WithUseMode(useMode).WithLightType(lightType).With(flag)
|
|
|
|
assert.Equal(t, useMode, field.UseMode(), fmt.Sprintf("UseMode wrong for %v", key))
|
|
assert.Equal(t, lightType, field.LightType(), fmt.Sprintf("LightType wrong for %v", key))
|
|
assert.True(t, field.Has(flag), fmt.Sprintf("flag not set for %v", key))
|
|
assert.False(t, field.Without(flag).Has(flag), fmt.Sprintf("flag still set for %v", key))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCommonFlagString(t *testing.T) {
|
|
tt := []struct {
|
|
flag object.CommonFlag
|
|
expected string
|
|
}{
|
|
{flag: object.CommonFlagUseful, expected: "Useful"},
|
|
{flag: object.CommonFlagSolid, expected: "Solid"},
|
|
{flag: object.CommonFlagUsableInventoryObject, expected: "UsableInventoryObject"},
|
|
{flag: object.CommonFlagBlockRendering, expected: "BlockRendering"},
|
|
{flag: object.CommonFlagSolidIfClosed, expected: "SolidIfClosed"},
|
|
{flag: object.CommonFlagFlatSolid, expected: "FlatSolid"},
|
|
{flag: object.CommonFlagDoubledBitmapSize, expected: "DoubleBitmapSize"},
|
|
{flag: object.CommonFlagDestroyOnContact, expected: "DestroyOnContact"},
|
|
{flag: object.CommonFlagClassSpecific1, expected: "ClassSpecific1"},
|
|
{flag: object.CommonFlagClassSpecific2, expected: "ClassSpecific2"},
|
|
{flag: object.CommonFlagClassSpecific3, expected: "ClassSpecific3"},
|
|
{flag: object.CommonFlagUseless, expected: "Useless"},
|
|
|
|
{flag: object.CommonFlag(255), expected: "Unknown 0x00FF"},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
result := tc.flag.String()
|
|
assert.Equal(t, tc.expected, result, fmt.Sprintf("Failed for 0x%02X", int(tc.flag)))
|
|
}
|
|
}
|